bob wrote:The problem that I found painful was a position with black king at g8, white pawn at f6 and white queen moves to h6. Null-move reduces depth to zero and enters q-search. No capture shows a problem, but if you do checking moves at least at the first ply, you find Qg7# and you don't fail high here thinking you are doing fine when you are dead lost.
So you don't play null move at d=1 but some other move. Now how would that have helped? You are still at d=0 after that move...
Null-move is just generally trouble some in the face of mate threats. Null-move reduction can only be justified by the assumption that the other moves almost always contain some delaying tactics, so they would need more depth to se the same threats. But the higher the stakes, the more difficult it is to create a threat that is worth delaying the ultimate gain for. If I initiate a Rook trade, which would normally do it, the opponnet would prefer to mate me rather than to recapture that Rook. The fact that he gets a mate score makes that Rook disappear from the balance. Only spite checks would help, and it is not at all that sure that I would have one of those available. While trades of or atacks on high pieces usually come 13 in a dozen.
bob wrote:The problem that I found painful was a position with black king at g8, white pawn at f6 and white queen moves to h6. Null-move reduces depth to zero and enters q-search. No capture shows a problem, but if you do checking moves at least at the first ply, you find Qg7# and you don't fail high here thinking you are doing fine when you are dead lost.
So you don't play null move at d=1 but some other move. Now how would that have helped? You are still at d=0 after that move...
Null-move is just generally trouble some in the face of mate threats. Null-move reduction can only be justified by the assumption that the other moves almost always contain some delaying tactics, so they would need more depth to se the same threats. But the higher the stakes, the more difficult it is to create a threat that is worth delaying the ultimate gain for. If I initiate a Rook trade, which would normally do it, the opponnet would prefer to mate me rather than to recapture that Rook. The fact that he gets a mate score makes that Rook disappear from the balance. Only spite checks would help, and it is not at all that sure that I would have one of those available. While trades of or atacks on high pieces usually come 13 in a dozen.
Not quite. Remember null-move lopped off THREE plies. A normal move still has those three plies to find the fault... This is about the search horizon being artificially collapsed.
Actually I use R=3 + some increment. So at depth 2 you can go directly into the q-search. But at depth 1 you won't do the null search at all. That may not make sense, but the null move is speculative. And it costs some time, added to the search time if the null move fails to cutoff. At depth 1 it may be just as well to let the regular search + qsearch do its work.
bob wrote:Not quite. Remember null-move lopped off THREE plies. A normal move still has those three plies to find the fault... This is about the search horizon being artificially collapsed.
So the problem is only with d=2 and d=3. At d=1 any move would jump into QS, so picking a random real move where the null move might do just offers the risk that you picked a stupid one, which actually gave away extra material.
But whether you jump into a non-checking QS or leave a d=1, null-move reduction tends to blind you to mate threats that use a lot of quiet moves. You might not miss a mate-in-1 if you leave d=1 after null, but you would still miss a mate-in-2. It is one of the worst weaknesses of null-move pruning that it blinds you to slow but sure mates. Making sure a check after the last one would still be seen only repairs a small part of that. In fact it only helps if that check was an actual mate. Otherwise the opponent would just evade in the extension, and you would still not see the predicament you are in, as the non-capture check + evasion would not have significantly altered the score.
It seems rather expensive to make d=3 searches in all those cut-nodes that could have been put down by a d=1 null-move search, just on the off chance that there sometimes is a mate-in-1 threat there. Using null move in those nodes might have saved you so many nodes that you could have done an extra iteration in the root, so that these nodes are now d=4 nodes. Then the null-move searches that cut them would have jumped to d=1 anyway. So most of the nodes would be handled by a d=2 (null-move) search, and ony the occasional ones where there is a threat would need a full d=4.
bob wrote:Not quite. Remember null-move lopped off THREE plies. A normal move still has those three plies to find the fault... This is about the search horizon being artificially collapsed.
So the problem is only with d=2 and d=3. At d=1 any move would jump into QS, so picking a random real move where the null move might do just offers the risk that you picked a stupid one, which actually gave away extra material.
That is the problem with doing null-move at d=1. It doesn't save nodes.
bob wrote:Not quite. Remember null-move lopped off THREE plies. A normal move still has those three plies to find the fault... This is about the search horizon being artificially collapsed.
So the problem is only with d=2 and d=3. At d=1 any move would jump into QS, so picking a random real move where the null move might do just offers the risk that you picked a stupid one, which actually gave away extra material.
But whether you jump into a non-checking QS or leave a d=1, null-move reduction tends to blind you to mate threats that use a lot of quiet moves. You might not miss a mate-in-1 if you leave d=1 after null, but you would still miss a mate-in-2. It is one of the worst weaknesses of null-move pruning that it blinds you to slow but sure mates. Making sure a check after the last one would still be seen only repairs a small part of that. In fact it only helps if that check was an actual mate. Otherwise the opponent would just evade in the extension, and you would still not see the predicament you are in, as the non-capture check + evasion would not have significantly altered the score.
It seems rather expensive to make d=3 searches in all those cut-nodes that could have been put down by a d=1 null-move search, just on the off chance that there sometimes is a mate-in-1 threat there. Using null move in those nodes might have saved you so many nodes that you could have done an extra iteration in the root, so that these nodes are now d=4 nodes. Then the null-move searches that cut them would have jumped to d=1 anyway. So most of the nodes would be handled by a d=2 (null-move) search, and ony the occasional ones where there is a threat would need a full d=4.
Not sure I follow. I do null-move at LEAST R=3 at any depth remaining in the search. 2 or 3 and beyond. But then I generate checks in the first q-search ply (only first ply) and also check evasions at q-search ply=2 if the previous move was a check. I did look and verified I do not do 'em at remaining depth = 1 however...
I am happy to allow the search to go from depth=3 left to q-search, since I still pick up the Qg7# move. This is yet another form of zugzwang, where by not moving you do well, since you hide the good move from your opponent by dropping into q-search where he can't find it..
Last edited by bob on Tue Sep 15, 2015 4:06 am, edited 1 time in total.