Computer Chess Club Archives




Subject: Re: NULL MOVE

Author: John Stanback

Date: 16:45:50 02/25/99

Go up one level in this thread

On February 24, 1999 at 19:16:27, Bruce Moreland wrote:

>On February 24, 1999 at 15:37:58, Don Dailey wrote:
>>My program is a mixture of static rules and null move.  I do null
>>move when I have significant depth remaining, but when I am near
>>end nodes I do a simple static attack analysis.  This has proven
>>to be a significant improvement to my chess program.  It is faster
>>than null move and slightly riskier, but the net affect is
>>a stronger chess program (for me.)   Even though it's probably
>>riskier, it does pick up things null move will miss although the
>>converse is also true.
>Can you describe this or give examples please?  I know that some people do this
>but I haven't the vaguest idea how it works.

In Zarkov, I also use a combination of null move search and static
evaluation to selectively prune the tree.  At depths 4 and higher I
use standard null-move search with R=2.  Like Don, at depths 1-3 if
the static eval is greater than beta+margin then I use static
threat detection (and sometimes depth reduced searches) to try to
prune the tree.  On some problems this works better than null-move and
sometimes worse.  Overall I've gotten a little better results.
Some of the threat detection stuff is a little "ugly", but whatever
works...  :)

I first discovered the simple heuristic approach to selective search
in 1988 and like Don I couldn't believe that I had worked on my program
for years without thinking of this.  It's that mythalogical one line
change that gives a huge increase in strength that every chess
programmer dreams of -- except that it doesn't actually give a huge
increase in strength (at least not without adding the threat detection
stuff).  Anyway, when I first tried adding this line to the search
routine (at all depths) I was elated:

if (static_eval > beta) return(beta);

Even on my old 8 Mhz 286 Zarkov now cruised through the iterations,
giving some pretty nice looking PV's.  WOW!  Let's try some problems.
OOPS, it can't solve anything.  Well, so maybe the static eval isn't
quite good enough, the next step is to add some threat detection stuff
to try to fix the problem :).  This selectivity is actually the same
idea as null-move, except much riskier and trickier to implement.
Anyway, it's great fun to add the line above and see how fast the
search goes.

What do most null-movers do at depth=1?


This page took 0.02 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.