Author: Gerd Isenberg
Date: 13:14:39 04/28/04
Go up one level in this thread
On April 28, 2004 at 13:45:05, Ed Schröder wrote:
<snip>
>What is double nullmove? I only know recursive nullmove allowing multiple
>nullmoves. I also read about "allowing 2 nullmoves in a row". What are the
>differences?
>
>I use recursive nullmove, not allowing the next ply after the nullmove to
>nullmove. So:
>
> e2-e4
> e7-e5
> **-** // nullmove
> d7-d5 // do no allow nullmove
>
>When I remove that check I get a few percent speedup, results look okay.
>
>Ed
Hi Ed,
yes Double Nullmove, suggested and invented by Vincent, allows to play two
nullmoves in a row, to efficiently get rid of zugzwang problems. It is recursive
too, and if i understand correctly, it works fine without any nullmove
precondition:
if (!inCheck)
{
if ( move2thisNode != null || move2ParentNode != null ) (
val = -doNullMoveSearch(depth-1-R,...);
if ( val >= beta ) return val; // return beta;
}
}
May be Vincent may correct me.
It seems that there is an implicit kind of IID with 2R-2 too.
What i do (did?), is a conditional confirmation search with same depth reduction
if a single nullmove fails high. To look whether there is at least one move
equal or better than doing nothing. Pseudo code like this:
if (!inCheck)
{
eva = evaluate(&thread,..); // thead is negative if eg. own pieces hang
if ( move2thisNode != null && eva + thread - margin >= beta )
(
val = -doNullMoveSearch(depth-1-R,...);
if ( val >= beta )
{ // nullmove cutoff?
if ( !likely2haveZugzwang() )
return val;
if ( search(depth-1-R,...) >= beta ) // one may even try depth-2-R
return val;
// else zugzwang detected
}
}
}
Cheers,
Gerd
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.