Computer Chess Club Archives




Subject: Re: Can we use hash table at root?

Author: Tijs van Dam

Date: 02:24:39 02/02/00

Go up one level in this thread

On February 02, 2000 at 00:01:04, Robert Hyatt wrote:

>On February 01, 2000 at 11:38:48, Tijs van Dam wrote:
>>On February 01, 2000 at 09:30:05, Robert Hyatt wrote:
>>>>I use hash at root for my program GKJunior. But I won't let the root search
>>>>fail high or low on the hash, just use an exact value with its "best move" or
>>>>use a move with not enough draft to search first. This way, a best move will
>>>>always be found at ply=1. I have no problems and the code is not messy.
>>>you just mentioned one messy detail.  "no fail high or low".  This means that
>>>for _every_ hash probe, you must be checking to see if you are at ply=1 before
>>>you do the fail high or fail low?  All for no benefit at all.
>>No, like Crafty I use a different funtion for the root search.
>>>>An advantage is that the search will continue very fast when the opponent makes
>>>>the same move as i was pondering, or to start pondering after making a move.
>>>>There is almost no delay, while crafty seems to take a few seconds to get to the
>>>>same PV as it had before the move was made.
>>>I do this differently.  If I complete a 12 ply search, and start to ponder,
>>>I ponder the 2nd move in the PV, I shift the PV two moves left to get rid of
>>>the move I made and the move i am pondering.  I then start the search at old
>>>depth-1 since I already have the PV from old depth-2 done...
>>I see, I hadn't thought of that. But then this has the same result as storing
>>and probing at root, because depth 1...depth-2 are found immediately. This makes
>>it easier to implement pondering / using the ponder result, because every search
>>can start at depth 1 without cost.
>Suppose you search very deeply, so that at the end of the search you store the
>best move.  You search (say) for 30 minutes waiting on your opponent, so you get
>_way_ deep.  He plays the right move (you are expecting it) so you dump your
>best move and PV.  And then start searching (pondering).  You get nothing
>but hash hits at the root.  Until you finally overrun the needed depth and
>the hash entries are no good.  What PV do you search from iteration N-1, since
>you don't have one?
>Internal Iterative Deepening will help, but it isn't optimal...

When I get a hash entry that has not enough depth, but the hashtable indicates
that it is an exact value, a best move comes with it and I search this one
first, as it was best at a lower depth.
Is that a smart thing to do? My branch factor is still too big...

So when I get to the depth where the hash is no good, I still use it and search
the same PV first.

Of course, a problem may arise when, using a small hashtable, the PV has been
found a while ago. A lot of the hash entries may be overwritten. A solution is
to re-store the PV positions at the end of the search.


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.