Author: Omid David Tabibi
Date: 06:04:12 08/02/03
Go up one level in this thread
On August 02, 2003 at 08:25:43, Tim Foden wrote:
>On August 02, 2003 at 03:44:06, Tony Werten wrote:
>
>>On August 01, 2003 at 22:45:11, Robert Hyatt wrote:
>>
>>>On August 01, 2003 at 05:09:59, Tony Werten wrote:
>>>
>>>>On July 31, 2003 at 18:15:47, Robert Hyatt wrote:
>>>>
>>>>>On July 31, 2003 at 14:23:34, Tony Werten wrote:
>>>>>
>>>>>>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!)
>>>>>>
>>>>>>You are correct (despite what the others say), but only if you use the failsoft
>>>>>>version of alphabeta.
>>>>>>
>>>>>>Tony
>>>>>
>>>>>I don't see how he can be correct even with failsoft. If you get a score
>>>>>outside alpha/beta it is _never_ an exact score, it will only be a bound.
>>>>
>>>>No it isn't. If you evaluate and take a beta cutoff, the evaluationscore is
>>>>still exact, has nothing to do with bounds.
>>>
>>>Never heard of "lazy evaluation?"
>>
>>AFAIK lazy eval isn't part of alphabeta.
>
>Well, I guess it depends how you do it. In GLC, the "score-so-far" is compared
>against alpha and beta, and if it thinks the score it too far out, it returns it
>stright away.
>
>e.g. something like this simplified code:
>
>int Evaluate( int alpha, int beta )
>{
> int eval = (get your mat val here);
>
> // see if we can do a lazy evaluation
> const int VAL = (some lazy eval limit -- e.g. say 2 pawns);
> if( eval + VAL <= alpha || eval - VAL >= beta )
> return eval;
>
> // do full evaluation here;
> // ...
>
> return eval;
>}
>
>AFAIK Crafty is the same (let's face it... I got the idea by looking at Crafty's
>source :). In this case the evaluation cannot be regarded as an exact score.
>
To summarize, a score can be considered "exact" only if it has been achieved
independent of alpha and beta bounds. This is the case only if we are at a leaf
node with full evaluation, or other node with alpha < value < beta.
>Cheers, Tim.
>
>>
>>Tony
>>
>>>
>>>
>>>>
>>>>If you evaluate below beta then there are 2 possibilities. In the end, best
>>>>score didn't improve, score is still eval, and eval is exact.
>>>>Second, bestscore did improve, must have been by search, so read from start, but
>>>>now 1 ply deeper.
>>>>
>>>>Tony
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.