Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Hashing "draft"

Author: Robert Hyatt

Date: 13:06:16 12/06/00

Go up one level in this thread


On December 06, 2000 at 14:25:19, Scott Gasch wrote:

>Hi all,
>
>My hashing code is working very well since I've been looking at it carefully and
>finding bugs.  Thanks for your help and comments.
>
>I am still unclear on one issue, though.  Many people have said "store the
>remaining depth in the draft of a hash entry."  What happens if I make a move,
>say "aha, this was a threatoning pawn push, extend by 1 ply!" then call search
>recursively.  This returns a fail high (beta cutoff).
>
>Now I am about to store a lower bound in my hash... this position is worth at
>least X, maybe more.  Do I store this with a draft of depth or depth + extend?
>I think depth + extend -- after all I got the score from a depth + extend call
>to search... the remaining depth for this position was depth + extend?  Some
>people have said "make sure you don't store extend values in your hash table or
>you will have bugs" and I don't understand this.
>

You have to store the draft to reflect how you probe.  If you probe at the
front of Search() (as most of us do) then you should store a draft that is
independent of any extensions you would do at _this_ ply.  Why?  Because if
you don't you will have inconsistencies when you probe/hit and find something
with a _deeper_ draft than it should have.  I probe at the top of search,
and use the depth passed into search for the draft test.  I store at the bottom
of search, just before I exit, and I store the _same_ depth value there that
was passed in to search.

>If I was about to store an exact or upper bound in the hash table after
>searching all N moves in this position I would store with a draft of depth
>_unless_ every move was searched with an extend of 1 ply.  This is the case in
>my code when the side on move is in check... so in this case I would store depth
>+ extend again.
>
>Maybe I'm loony or don't fully understand this stuff.  But the way I see it is
>that I have a score X from an expensive recursive call(s) to search... and I
>want to save this score for later.  If I every one of my 1..N calls to search
>used to generate X was made with a depth of depth + extend I store this as the
>draft.
>
>Later if someone comes in and says I need a score of the same position to depth
>+ 1 it should be OK to give them the same score computed above... because of the
>extend above I did end up computing score X to depth + 1 already...
>
>Do I misunderstand some negative aspect of this plan?
>
>As always, much appreciate the help.
>Scott



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.