Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Adaptive Null Move Pruning

Author: Vincent Diepeveen

Date: 18:06:52 09/25/00

Go up one level in this thread


On September 25, 2000 at 11:41:18, David Rasmussen wrote:

>Am I the only one who
>
>a) thinks that the kind of null move pruning that is done in Hyatt's Crafty is
>the reverse of what Ernst Heinz concludes in his paper about ANMP
>
>b) experiences better performance (less nodes, less time etc.) with Hyatt's
>scheme than with Ernst's scheme.
>
>I.E. When I do
>	if (depth>6)
>		R=2;
>	else
>		R=3;
>I get the best results.
>Why?

first of all it's obvious that there might be confusion about 'remaining
depth' versus 'depth done'.

Ernst and Bob do exactly the same.

For DIEP i always use R=3, no exceptions. It eats up till 2 times less
nodes in positions where a lot of stuff gets extended.

If you don't do much in qsearch then R=3 is obviously a lot more dangerous
as R=2, which is again more dangerous as R=1, assuming you use qsearch
replacement last R+1 ply.

This means that last 4 ply i use the qsearch to prune on beta.

The only advantage of R=2 is that you pick up threats which don't get
picked up by qsearch sooner, yet if you nullmove with R=2 and then
because of the silly position there are a few extensions possible, then
your r=2 reduction gets heavily reduced and reduced till you search to
the same depth nearly!

There is however another disadvantage for R=3, let's compare the depthlefts:

Using R=3 till depthleft=6 means that at R1=3,R2=2
    Hyatt & Heinz  R1=3,R2=2              Diep currently always R1=R2=3
  depthleft = 7 - R1 - 1 = 3 ply left   7 - R1 - 1 = 3 ply search left
  depthleft = 6 - R1 - 1 = 2 ply left   6 - R1 - 1 = 2 ply search left
  depthleft = 5 - R2 - 1 = 2 ply left   5 - R1 - 1 = 1 ply search left
  depthleft = 4 - R2 - 1 = 1 ply left   4 - R1 - 1 = qsearch left
  depthleft = 3 - R2 - 1 = qsearch      3 - R1 - 1 = qsearch left

Let's assume white nullmoves in the example, he nullmoves in position P.
Let's assume black is the
side not to nullmove. Now we see that the adaptive nullmove tries to
disproof search in a very clever way, as both depths 5 and 6 have an
EVEN depth left to search, which means that though black is disproving, in
2 cases white has an even depth left.

In the R=3 case one sees a 3 and 1 ply search. Both odd depths, so bigger
chance it cutoffs as white is not allowed to react on the disproving from
white (except of course qsearch behind it).

Also R=2 is a real clever reduction factor for the last few plies to
replace by qsearch, because normally you would search 1,2,3 plies.
that means that in 2 cases (1 and 3 ply left) white would do a move more
as black, which is a far stronger assumption as pruning with 4 ply left,
because black because both sides can try 2 moves then, if blacks moves are
superior to whites, without that in the original position P there was a
threat directly winning as seen by the qsearch, then the qsearch nullmove
misses it, where R=2 would most likely miss it less soon as it allows in
depthleft=4 for the black side in case of a nullmove to search a full ply.

So a combination of 3 and 2 ply on a depthleft basis , as opposed to my
current rude way of always using R=3, and also when compared to the
original idea from me some years or 5 ago to
do the first nullmove with R=3 and the second with R=2,
is a quite clever way to apply nullmove in the search, as using depthleft
to decide on which Reduction factor you use means that it's not hurting
your hashtables with wrong scores also. If you mix R=2 and R=3 using the
number of nullmoves done as a basis, then this means that you might get
cutoffs in positions where score is based upon R=3, which get returned
in a position where you apply R=3 for the first time, practically doing R=3
as worst case.

I think i directly start experimenting with adaptive nullmove again :)

Greetings,
Vincent






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.