Author: Tony Werten
Date: 02:41:24 12/04/02
Go up one level in this thread
On December 03, 2002 at 15:40:09, Frank Phillips wrote:
>I have failed miserably to implement ETC.
>
>My broad understanding is that you try for a transposition table cutoff for each
>move (successor position) at a node before recursing the search from that node.
>In my implementation the search tree is reduced, but Searcher plays noticeably
>weaker in real games, despite its performance on test suites not deteriorating -
>in fact improving slightly. Below is my pseudo code. Any help appreciated.
>
>Frank
>
>for (each move)
>{
> // MakeMove
> // Check for Draws.
> // Extensions for this move.
> tdepth=depth-1+extension;
> hit=HashRetrieve(pboard,tdepth-1,&tscore,&flag);
> // UnMakeMove
> if (hit)
> {
> tscore=-tscore;
> if (tscore>=beta && (flag==upper_bound || flag==exact_value))
> return (tscore);
I think this should be : if (tscore>=-alfa) ...
You're using current beta, but you want beta for the next move ( wich is -alfa )
> if (tscore<=alpha && (flag==lower_bound || flag==exact_value)
> return (alpha);
As Murray poited out, this cutoff is wrong. It just means there's _a_ bad move.
But since alpha should have been -beta, you actually makeup for the previous
mistake, only you do it at the wrong flag (lower_bound) sometimes. When there is
an exact flag, the 2 wrongs make 1 right :)
Tony
> }
> }
>
>The basic idea is that upper_bound for the successor is the same as lower_bound
>for parent etc.
>And I would call the successor with depth=depth-1+extensions, therefore should
>probe the hash table with that depth.
>exact_value == score is equal to stored value.
>lower_bound == score is at least stored value.
>upper_bound == score is at most stored value.
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.