Computer Chess Club Archives




Subject: Re: When to do a null move search - an experiment

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:


>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
>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.

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

  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


This page took 0.01 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.