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.