Author: Robert Hyatt
Date: 07:21:57 11/01/97
Go up one level in this thread
On November 01, 1997 at 08:35:04, Stormbringer wrote:
>I tried to implement ETC unsuccesfully few time
> - either it decreases node count but generates a wrong PV
> either it seems to do nothing
>I wonder if anyone could give me some useful hints.
>Here is a pseudo-code of my ETC implementation :
>ETC(alpha,beta,depth,side)
> for each possible move m
> make_move(m)
> hashtable_lookup(hashcode,alpha,beta,depth-1,-side)
> unmake_move(m)
> if (hash_node == EXACT_SCORE OR LOWER_BOUND) &&
> (node is max) && (hash_value >= beta) return hash_value
> if (hash_node == EXACT_SCORE OR UPPER_BOUND) &&
> (node is min) && (hash_value <= alpha) return hash_value
Make a small change:
if (hash_node == EXACT_SCORE) return hash_value
if (hash_node == LOWER_BOUND ...)
if (hash_node == UPPER_BOUND ...)
main point is if you get exact score, it doesn't *have* to lie outside
alpha/beta to be used.
Other than that you are doing exactly what I tried about a year ago. I
am going to try this again, but without using MakeMove() which is a
little
slow in my code. I'm going to write a new one that only produces a new
hash signature, which is really all that is needed.
I saw little improvement in node count, but a noticable slowdown. One
problem
is this makes me generate all moves up front, where I currently try the
hash
move before generating anything, and I try captures and then killers
before generating any non-captures.
I am going to try it again, however...
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.