Author: Robert Hyatt
Date: 06:45:23 10/19/00
Go up one level in this thread
On October 19, 2000 at 05:57:14, Tony Werten wrote: >On October 18, 2000 at 09:54:25, Robert Hyatt wrote: > >>On October 18, 2000 at 08:06:23, David Rasmussen wrote: >> >>>I was wondering about a potential "bug" or at least "unwanted feature" of the >>>way hashing and extensions affect eachother in, say, Crafty. >>> >>>The problem is basically this: >>> >>>In Crafty, whenever depth is used for other purposes than searching (that is >>>hashing and nullmove), the extension factor isn't included. That means that a >>>search that essentially asked for a depth=5 + extensions=3 == 8 ply search, will >>>return with success from the hashprobe if the draft is just 6 or 7. Shouldn't >>>the depth parameter ALWAYS be used with relevant extensions for the search to be >>>(at least more) theoretically correct ? >>> >>>Am I making sense? >> >> >>You are missing an important point. >> >>Extensions happen _after_ a move is made. Hashing happens at the start of a >>ply. If extensions were added in at any previous ply, they are certainly >>factored into the hash probe. But there is no way to factor in extensions >>triggered by a move, when the hash probe is done _before_ any move is made. >> >>IE if an in-check extension is done, it is added in at the _previous_ >>ply, rather than at the current ply. Which means it is _always_ done. >>The only exception is that the one-reply extension isn't done until crafty >>discovers that there is only one legal move. But this is perfectly >>consistent... > >How about threat extensions. >In the previous search you did a nullmove and found out you're about to be >checkmated and so you get an extension. Next search hashtable lookup >= current >depth so you abort. > >I solve this by setting a "got a threat extensions last search" flag. > >Tony Why would this be a problem? IE the last time I did this search, I already had the threat extension folded in. The idea is that When I store the result of a search, I use a consistent depth, namely the depth I had when I came in to the position, which will be the same depth I use when I probe later. If you look at my code, inside a ply I _never_ adjust "depth". I have a separate modifier that is added to it when I recursively call search. So that 'depth' when I do a probe is exactly the same for this position as when I did a store. > >> >>Don't forget that the hash entry will be the result of searching _all_ >>moves at this ply, which _does_ factor in the extensions for each move as >>appropriate...
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.