Null move: minimum depth

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Null move: minimum depth

Post by hgm »

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.
jdart
Posts: 4366
Joined: Fri Mar 10, 2006 5:23 am
Location: http://www.arasanchess.org

Re: Null move: minimum depth

Post by jdart »

I use min depth = 2 currently. So do a number of other programs, such as Protector & Stockfish.

--Jon
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Null move: minimum depth

Post by bob »

hgm wrote:
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.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Null move: minimum depth

Post by bob »

jdart wrote:I use min depth = 2 currently. So do a number of other programs, such as Protector & Stockfish.

--Jon
Don't see how that helps unless you really limit R. IE with R=3, mindepth = 1 or 2 or 3 is the same thing. All collapse tree to q-search nodes.
User avatar
Rebel
Posts: 6991
Joined: Thu Aug 18, 2011 12:04 pm

Re: Null move: minimum depth

Post by Rebel »

bob wrote:
jdart wrote:I use min depth = 2 currently. So do a number of other programs, such as Protector & Stockfish.

--Jon
Don't see how that helps unless you really limit R. IE with R=3, mindepth = 1 or 2 or 3 is the same thing. All collapse tree to q-search nodes.
I think Jon means when the remaining depth is 3 you still can do null-move with R=2.
jdart
Posts: 4366
Joined: Fri Mar 10, 2006 5:23 am
Location: http://www.arasanchess.org

Re: Null move: minimum depth

Post by jdart »

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.

--Jon
User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Null move: minimum depth

Post by hgm »

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.
jwes
Posts: 778
Joined: Sat Jul 01, 2006 7:11 am

Re: Null move: minimum depth

Post by jwes »

hgm wrote:
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
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Null move: minimum depth

Post by bob »

hgm wrote:
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.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Null move: minimum depth

Post by bob »

Rebel wrote:
bob wrote:
jdart wrote:I use min depth = 2 currently. So do a number of other programs, such as Protector & Stockfish.

--Jon
Don't see how that helps unless you really limit R. IE with R=3, mindepth = 1 or 2 or 3 is the same thing. All collapse tree to q-search nodes.
I think Jon means when the remaining depth is 3 you still can do null-move with R=2.
Shoot, you can do it with R=3 also, so long as you have the qsearch checks...