Author: Dan Honeycutt
Date: 09:47:31 08/29/04
Go up one level in this thread
On August 29, 2004 at 12:13:33, Rick Bischoff wrote: >Hello, > >I think I am missing some core piece of knoweldge here-- Let me explain the >situation. > >Let HASH_BAD = INFINITY = 16384 >Let MATE = 8000 > >Stack Trace: > >0: call alphabeta(depth = 8, -HASH_BAD, HASH_BAD) >1: alphabeta makes some move "m" >2: alphabeta(depth = 7, -HASH_BAD, HASH_BAD) makes the null move >2: alphabeta(depth = 4, -HASH_BAD, -HASH_BAD + 1) >3: alphabeta continues drilling down the left most path of the tree.. so we >eventually reach... > > >x: alphabeta(depth = 0, -HASH_BAD, -HASH_BAD + 1) calls quiescent(-HASH_BAD, >-HASH_BAD+1) > >Now quiescent does a static evaluation, finds that it is better than >beta=-HASH_BAD+1 (how could it not be!) and returns beta... So we return to >frame "x" of the stack trace and it stores -HASH_BAD+1 into the hash table. > >I assume this is a bad thing-- I have some debugging flags set so that the >program halts if i try to store a value outside of (-MATE, MATE). > >What I am doing wrong? No need make a null move if beta = INFINITY but that doesn't really matter. The null move simply fails to give a cutoff (and nothing goes in the hash table). The first position you score on the leftmost branch with -INFINITY, +INFINITY must return a value between alpha and beta. So the first entry in the hash table is an exact score. From then on it's scores or limits depending on how things go. Dan H.
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.