Author: Harald Lüßen
Date: 03:19:12 04/14/04
Go up one level in this thread
On April 14, 2004 at 06:07:57, José Carlos wrote: >On April 14, 2004 at 05:35:40, Tord Romstad wrote: > >>On April 14, 2004 at 04:57:01, Dann Corbit wrote: >> >>>So my next question is, how do you normally populate a hash table with PV nodes, >>>since we only get edge values during the search? Do I need to follow the pv >>>from hash to hash with a makemove for each succeeding pv node? >> >>I am not sure exactly what you mean here. Are you asking how you build the PV >>beyond the first move? In pseudo code, I do the following: >> >>void build_PV() { >> hashentry_t *h; >> int i; >> >> for(h=get_hash(CurrentHashKey), i=0; h!=NULL && i<MAX_DEPTH && he->move; >> h=get_hash(CurrentHashKey), i++) { >> PV[i] = h->move; >> hash_make_move(h->move); >> } >> PV[i] = 0; >>} >> >>hash_make_move() is a function which is similar to make_move(), except >>that it only updates the hash key. > > I get the last part of my pv from the hash table (I'm PVS, not MTD(f), but >there's sometimes more moves in the hash table than in the pv array), but I need >to make() the move (not only update the hash table) in order to walk through >hash moves. I don't understand how you can make several moves in a row by only >updating the hash key. Can you please explain it? I have a function make_move() with 500 lines and a function make_move_for_hash() with 300 lines of code. Both functions update the board and the hash table infos but make move() also updates the rotated bitboards and some incremental stuff. Perhaps Tord does the same. If he knows some magic virtual hash update I'm very interested. Harald
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.