Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Null move question

Author: Tony Werten

Date: 08:12:29 08/02/03

Go up one level in this thread


On August 02, 2003 at 09:04:12, Omid David Tabibi wrote:

>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.

Or when a checkmate score is returned or a drawscore or ....

Sorry if I tell you something new, this is old stuff.

When not doing any extensions ( not realistic but anyway) the values returned
from the last 2 plies from normal search are exact. (As was published 15 years
ago)


Tony

>
>
>
>>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.