Computer Chess Club Archives




Subject: Re: Zero-width Window Null Move Search

Author: Robert Hyatt

Date: 06:35:00 06/20/98

Go up one level in this thread

On June 19, 1998 at 23:11:36, Roberto Waldteufel wrote:

>Thanks for your comments. I am the first to accept that terminal node evaluation
>is more accurate that preprocessing, but it is also much slower. If I moved all
>my preprocessing to the leaves, I think I would indeed lose at least one ply in
>depth, maybe even more. Although my method might sometimes not recognise that a
>passed pawn at a leaf was in fact passed, it will never mistakenly think a pawn
>is passed when in fact it is not. What I do is to look at the pawn structure at
>the root, and, for White and Black separately, I calculate all the squares on
>which a friendly pawn would be passed (regardless of whether a pawn actually
>occupies the square or ever could occupy it). As the search expands deeper,
>these sets of squares can grow larger, but can never get smaller, so it is safe
>to credit pawns that are on the precalculated squares by the time a leaf node is
>The danger, of couse is that I might fail to see a passed pawn on a square that
>is not in my initial list of squares, but I have found this to be rare enough
>not to cause a great problem. As always, the trade-off between speed and
>accuracy must be carefully weighed up, but I think there is still a good case
>for doing some of the evaluation at the root to increase speed and thereby
>search deeper. If I later decide, as you suggest, that I want to be more precise
>about the passed pawns I currently don't see, I would still use my preprocessor,
>so that then at the leaf I would only have to test a few of the pawns for being
>passed (ie those not on the precalculated squares) instead of all of them.
>Best wishes

two things.

1.  This shoule *not* be a compute-intensive task.  If you aren't yet hashing
your pawn structure scoring, you should, because whether a pawn is passed or not
is a static piece of information that is independent of other pieces.  If you
hash this, you will find that you find over 99% of your pawn structure
evaluations are not needed because after you compute them one time, you will not
re-compute this again, just use the hashed value.

2.  finding that a pawn is passed is trivial.  You could easily add a 64 bit
word that contains a 1 for each white pawn, and then do the same for black.  If
you update this after each move, asking "is a pawn on "SQ" passed" takes one
64 bit operation, anding the opponent's pawns with a mask that shows where he
must have pawns in order for your pawn on SQ to *not* be passed.

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