Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: quiescent search and bad values

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.