Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Null move question

Author: Robert Hyatt

Date: 14:07:53 07/30/03

Go up one level in this thread


On July 30, 2003 at 17:00:48, Rick Bischoff wrote:

>Hi,
>
>What is happening exactly:
>
>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.


>(at which point the program threw an exeption because I didn't want out of
>bounds scores
>stored as exact..)

This is correct...


>
>a. e = -(-INF + 1) = INF - 1
>a. e is not greater than beta, so do normal search.
>

That is how it _should_ work.  Null-move can't fail high on an open window
like -inf, +inf, which should be intuitive.  How can _anything_ fail high on
a +inf bound?




>>Are you backing up values correctly?  At the next search you will fail
>>high, which will back up a fail-low value to the current ply, meaning
>>the null-move search fails low and you just wasted some nodes.



This page took 0.01 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.