mcostalba wrote:bob wrote:The idea of the null-move is to quickly dismiss positions where you are way ahead.
No, this is the idea of, for instance razoring, where if evaluation says we are well ahead then we do a quick qsearch to confirm evaluation score against possible pending threats and then, if still well above beta we dismiss the node.
Sorry. Reread Beal's paper on null-move and the definition of "null-move observation."
Aim of null search is, IMHO, to detect stable positions. As example I can be even a knight ahead but if my queen is under threat then null search _never_ will fail high. Instead, I can be only half a pawn ahead but if position is stable, let's say we are in a close position, then null search will fail high.
Try adding a counter to see how many times null-move fails high when material is equal, vs how many times it fails high when material is anything but equal...
fail high mat good = 924928
fail high mat bad = 5315
fail high mat equal = 67696
good means that material, from the side-to-move's perspective, is > 0, bad is < 0, equal is obvious...
Another normal position, searched a little longer (above is a 10 second search):
fail high mat good = 2389828
fail high mat bad = 203534
fail high mat equal = 65463
and another for 60 seconds:
fail high mat good = 5443847
fail high mat bad = 1357425
fail high mat equal = 498747
over 90% of null-move fail highs occur when the side playing the null-move is winning.
I think the real plus of null search against a tons of other pruning techniques that are all based on the rule "if I am well ahead then there is no need to continue the search", the real plus is that null search is the only one that is able to discriminate stable positions from dynamic ones, i.e. positions where there is still tension and activity on the board and so need to be searched further.
It does show you which positions can be tossed out with much less effort, as shown above...