Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Null move question

Author: Robert Hyatt

Date: 08:14:05 07/31/03

Go up one level in this thread


On July 30, 2003 at 17:18:12, Rick Bischoff wrote:

>>>
>>>a. at depth 3- hash table is empty for this position.  alpha = -INF, beta = +INF
>>>a. all requirements for null move are met
>>>a. makes null move:  int e = -alphabeta(depth - 3, -beta, -beta +1);
>>>
>>>b. now we are at depth 0, alpha = -INF, beta = -INF + 1
>>>b. we call quies(alpha, beta)
>>>
>>>c.  e = static eval is, oh say, 1.
>>>c.  e >= beta, return beta
>>>
>>>b. store this position in the hash table as -INF + 1, exact, depth = 0, return
>>>-INF + 1
>>
>>This is _way_ wrong.  How can it be "exact"???  It is impossible for the
>>search to return valid scores outside alpha/beta window as defined at the
>>root.  If you are returning an "edge" then it must be an upper or lower
>>edge, not an exact score.
>
>Yes, I know it is wrong-- which is why I was asking the question to begin with
>:-) What I do know is store anything quies returns as exact-- but you are
>telling me I can't do that, right?  (Forgive my ignorance!)


Here's the "test":

when you enter search or quiesce, you get two values.  I will call them
alpha and beta as that is the usual terms.  When you get ready to store a
hash entry and return to the previous ply, there are three possibilities:

1.  current value <= alpha;
2.  current value > alpha and < beta;
3.  current value >= beta;

In case 2, you store EXACT.  In case 1 you store UPPER (the value you store
is an upper bound on the score, the true score may be even less.)  In case 3
you store LOWER (the value you store is a lower bound on the score which may
be even higher if you search everything).

That's all you have to handle.  In case 2/3 you also have a best move to store,
but not in case 1.



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.