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.