Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Changing alpha / beta based upon hash?

Author: Robert Hyatt

Date: 16:43:42 01/01/01

Go up one level in this thread


On January 01, 2001 at 11:53:08, Steve Maughan wrote:

>Bob,
>
>Thanks again for the help.
>
>>This statement is still simply incorrect.  You don't _touch_ the PV.  The issue
>>is that you are searching, and someone whispers in your ear "Hey, your alpha
>>value is -1.2...  I actually have searched this position before and I proved
>>that the score is actually no worse than -1.0...  so change your alpha and
>>keep searching."  You don't affect the PV, or anything else, other than make
>>the search more efficient.  If the new alpha value is >= your old beta value,
>>you should have _already_ bailed out with a fail high.  If your new beta value
>>is lower than your current alpha value, you should have already bailed out with
>>a fail low.  I don't understand the concept of "cutting off the PV"...  The PV
>>is backed up from below, not built as you search downward...
>
>OK lets take this as an example.
>
>Alpha =  -1.2 but the hash value (at a greater depth) is a lower bound of -1.0,
>say also that beta = +2.0 .  Suppose that if the position is searched without
>changing the value of alpha it would come back as -1.1.  This is possible as it
>is a shallower search that the one that gave the lower bound of -1.0.  This
>means that if we raise alpha the search will fail low at -1.0.  This will then
>be returned to the parent node as +1.0 and may form part of the PV as it is
>between the parents alpha (-2.0) and beta (+1.2).
>
>By "cutting off the PV" I mean ending it at that node with a signature, usually
><ht>.  I have seen PV from Crafty end in <ht> - how do these come about if it's
>not by "cutting off the PV".
>


Those occur when I get and EXACT hit.  I search no deeper, store the table
value as the best score here, and then stuff the PV with the moves from the
root to the previous ply.  I then set the <HT> flag since the PV should
have more moves, but I don't store PVs in the hash entry (this is doable
but expensive in terms of memory).

If you don't get EXACT, then you don't have a prayer of getting a PV out
of the search at this node...  unless the search itself produces a PV.



>Clearly I am missing something here otherwise Crafty and DarkThought wouldn't
>work and that's not the case.  The strange thing is that when I adjust my code
>to do as you say I get an illegal PV - maybe it's another bug.
>
>Thanks again,
>
>Steve

It has to be a bug.  The most common problem is backing up a garbage PV when a
node fails _low_ as there can be no best move, much less a PV.  If you fail
high, you also have no PV, only a best move at _this_ ply. But the ply below
this one is a fail low with no best move of any kind...

Hashing is the special case... if you get a hit, you have to fake up a PV
since there is going to be no further searching to back one up.  It is up
to your hash lookup/hit code to recognize this and build a PV from each move
played up to the previous ply...




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.