What I said was this:Sven Schüle wrote:But the current subthread is also about Bob's claim that both were essentially the same, which both Ed and myself doubt, and presumably also Marco and you.Michel wrote:If you read the prior posts you'll see that your question has already been answered multiple times. The thread is about razoring as implemented by Stockfish (as introduced by Tord). Not about razoring as introduced by Heinz.Rebel wrote:
So then, what is razoring?
Sven
If you search to (say) ply 10, and generate all the moves there. You can, after making each move, make a decision to go directly to q-search for any that meet whatever criteria you use.
OR
You can search to ply 10, generate all the moves there, and make them one at a time. When you get to ply 11, you can do the "node razoring" at the top of search and make the decision to go directly to q-search, or continue the normal search.
They are exactly the same thing.
Does it matter whether you extend when you give check, or when you get out of check? There is one subtle difference, but if you ignore that tiny difference (which doesn't apply to the razoring idea above) on one of these,you extend the MOVE. On the other you extend the resulting POSITION. Exactly the same thing.
I like the former as it is slightly more efficient than the latter, because with the former your call graph goes like this:
Search(10) -> Quiesce(11)
With the latter you get this:
Search(10) -> Search(11) -> Quiesce(11)
where the numbers in parentheses is the ply for that instance of the procedure call.
