Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Best Move in Hash Table Question

Author: Robert Hyatt

Date: 07:13:12 01/20/99

Go up one level in this thread


On January 19, 1999 at 21:57:11, William Bryant wrote:

>On January 19, 1999 at 08:08:13, Robert Hyatt wrote:
>
>>On January 18, 1999 at 20:00:39, William Bryant wrote:
>>
>>>When a position is evaluated with a score that is > than alpha, that position
>>>then replaces alpha, and gets stored in the hash table as an EXACT score.
>>>If this move is the move backed up to PV[ply][ply], is the 'Best Move' that is
>>>stored in the hash record the move at PV[ply][ply + 1]; ie the next move to
>>>take from this position?
>>
>>easy answer.  if search_value == beta, then the move to store is the current
>>move you just searched (in my case, current_move[ply]).  If search_value is
>>> alpha and < beta, then you store the move in the pv[ply] array.  If the
>>search_value is <= alpha, you have no best move to store.
>>
>>
>>>
>>>If it is, then when getting a hash table hit, with an appropriate draft, is the
>>>best move then used as the move to search next by returning it to the pv
>>>at the position PV[ply][ply + 1]?
>>
>>
>>when you do a hash probe and 'hit' you try the hash move first no matter what
>>is going on...
>>
>
>Thank you, but I'm still unclear on using the best move.
>
>You arrive at a new position, its hash signature matches an entry in the
>hash table whose draft is sufficient to make the score useful.  You return
>this score rather than search this position further.  BestMove is the next move
>to make from this position, but at present your are through searching this
>position as you already have a score which you may or may not use depending
>on the rest of the search.
>
>I suspect, the value of the best move is to guide the search when you are
>searching to a greater depth (the next iteration or so).
>The the best move is the move to search first from this position when
>searching to a greater depth (when the draft is insufficient) ie, when you
>go deeper, start with this move to try and produce early cutoff's.
>
>Am I close?
>
>Thanks.
>
>William
>wbryant@ix.netcom.com


Yes.  If you can avoid searching, do so.  But if the 'draft' of the table
entry isn't large enough, you can't use the scores/bounds at all.  But you
_can_ use the suggested best move...

IE I have a variable (array) hash_move[ply].  When I call HashProbe() if it
gets a signature match it copies the best move to hash_move[ply] while it is
checking the draft and so forth.  If the lookup is useless, search calls
NextMove() to choose the first move, and the one I try is hash_move[ply]
(making sure it is still a valid move here). And I get to do this _before_
I generate any moves at all...



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.