Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Hash move question

Author: Robert Hyatt

Date: 18:29:35 08/18/01

Go up one level in this thread


On August 18, 2001 at 11:49:53, Bob Green wrote:

>On August 18, 2001 at 01:21:30, Robert Hyatt wrote:
>
>>
>>None of the above.  :)
>>
>>first, check hash entry to see if you can avoid searching, by looking at
>>the draft, the bount stored, etc.  If you can stop searching, then you are
>>done.
>
>I'm not sure what "draft" and "bount" (or is bount=bound=alpha cutoff?) are.
>I've not seen these terms before.  Could you explain them please?


Draft is the depth of search below this node.  IE the remaining number of
plies.  This has to be stored in the hash table so that you can ensure that
a hash hit contains good information when you find it.

Bound is simply the bound you store on most entries, saying the score is
<= this bound, or >= this bound.



>
>I read this to create the hash of the current position (pre-move generation) and
>index into the hash table.  If the hash checksum matches then get the
>{alpha|beta|exact} score for the position, which may cause a cutoff.  Did I get
>it right?  Oh - is draft == plydepth?

draft = remaining depth, yes.




>
>>
>>If the draft is insufficient, or the bound is useless, then you look to see if
>>a move (best move) was stored in the table.
>
>When would a best move not be stored?  This portion is unclear to me.  I thought
>that the hash was created/saved after the alpha/beta call and during the fail
>high/low/exact determination.  Shouldn't in every case the move that was just
>made/unmade be the move to be stored with this position?

At any node, you can have one of three things happen:

(1) you search all moves, and find a score > alpha, and < beta.  You back up
this score, and you store the move that went with that score as best.

(2) you search all moves, and find that the alpha bound was not modified,
which means all moves at this ply were <= alpha.  You have no "best move"
because they _all_ looked bad. You should store a 0 for the best move in the
hash table.

(3) you search one or more moves, and you find a score >= beta.  We call this
a fail high.  You should store the move that caused the fail high (the current
move at this ply) as the best move in the hash table.

So only case (2) has no best move, ever.





>
><If so, make it and search, without
>>doing a move generation.  If that move causes a cutoff, then you just got a
>>cutoff without using your move generator at all, which is a significant savings
>>of computation operations.  If you don't get a cutoff, then you generate
>>captures and try the good ones,  etc...
>>
>>The trick is all about avoiding the move generation...



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.