Author: J. Wesley Cleveland
Date: 17:56:46 06/12/02
Go up one level in this thread
On June 11, 2002 at 18:01:40, Robert Hyatt wrote:
>On June 11, 2002 at 15:56:19, J. Wesley Cleveland wrote:
>
>>On June 11, 2002 at 11:52:47, Robert Hyatt wrote:
>>
>>>On June 10, 2002 at 18:45:03, Dieter Buerssner wrote:
>>>
>>>>I'd like to add, that not for all engines, it is some sort of luck, when they
>>>>remember past analysis, and when not. I am convinced, that for my engine, it is
>>>>better in general, to analyze from back to front. I am also convinced, that it
>>>>will not forget previous analysis.
>>>>
>>>>Regards,
>>>>Dieter
>>>
>>>
>>>It _must_ unless you have a hash table of infinite size...
>>
>>If crafty stored the result returned from the prior search in the hash table,
>>made the age current when the hash table returns a valid score, and started ply
>>1 with the move in the game, it would always get the most useful value and
>>nearly always get the very useful values.
>
>Crafty does this.
I'm sorry. Which of the above does crafty do ? In annotate.c,
InitializeHashTables() is called before every search, in iterate.c,
transposition_id is incremented at the start and is never changed in HashProbe,
and I see no code in searchr.c or iterate.c to save the value of the root
position in the hash table.
Unfortunately _this_ search can overwrite the results from
>the previous search quite easily.
Because age is not reset in the hash table entry when retrieving a valid score.
And then you have a problem. Or, in lots of
>cases, just because the position after the move played at move 29 is found to
>be bad, when you back up to move 28, you find that the opponent can play a
>_different_ move at 29 and not wreck the score so you still don't see the
>"problem" since you didn't search down _both_ paths, just the path actually
>played in the game.
If there is another move that hides the "problem" at the current search depth.
Let me restate the whole question. When analyzing a game, there are three
critical points for each mistake. Call them a, the point where the mistake is
made, b, the point where the computer "sees" the mistake at the current search
depth going forward, and b', the point where the computer "sees" the mistake at
the current search depth going backward. b' is always <= b. If a=b then the
computer "sees" the mistake when it is made, and forward and backward searching
is the same. If a=b' then the backward search is better. If b=b' then the two
searches are the same. If a < b' < b, then neither search shows the real
mistake. In which case is the forward search better ?
The other advantage of the backward search is that it should be nearly twice as
fast (or almost 1 ply deeper at the same search time), as one move, and
generally the best move, has already been searched to full depth.
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.