Author: José Carlos
Date: 01:18:58 10/27/02
Go up one level in this thread
On October 26, 2002 at 20:10:38, Dieter Buerssner wrote:
>On October 25, 2002 at 21:27:18, Nagendra Singh Tomar wrote:
>
>>score = -alphabeta(board, -alpha-1, -alpha, depth-1);
>>
>>if(score > alpha && score < beta)
>>{
>> score = -alphabeta(board, -beta, -score, depth-1);
>> OR
>> score = -alphabeta(board, -beta, -score+1, depth-1);
>>}
>>
>>since the zero window search failed high and it returns
>> score, this means that the true score is >= score.
>> Now when we do a wide window search, if we want to store the PV
>>properly we have to pass alpha value less than the possible
>> score, else PV will not get updated (Note: PV gets updated only
>> for nodes where score > alpha.). So we pass -score+1
>>
>>Am I right ?
>
>Yes.
>
>Using -score instead of -score+1 would also be correct in another sense. For a
>"pure" alpha-beta algorithm (including PVS) it would calculate the correct
>score, allways. But, as you noted, you will miss the PV now and then. IIRC the
>original paper of Reinfeld about the Negascout algorithm used -score as bound.
>
>With typically used enhancements of alpha-beta (extensions, pruning, HTs),
>unfortunately things get a bit more complicated - as others have mentioned. To
>me, it is not clear what is best to do, when you get a score > alpha and < beta
>in the first call (the zero window search), and receive a score <= result of the
>first call in the research (something that will never happen with a "pure"
>alpha-beta search).
>
>Jose Carlos thinks, it is better to trust the research (actually I am currently
>doing this). But why should the research be more trustful than the original
>search?
* Here's my reason (please correct me if I'm mistaken):
* We're at the root. We've searched the pv with an aspiration window or
whatever, and we have a true score, which I'll call pvscore.
* We search second move with a null window [pvscore,pvscore + 1] or, as beta
has been the subject of some confusing discussion, we can do:
alpha = pvscore;
beta = pvscore + 1;
newscore = -search(-beta,-alpha)
* So there's no way to get a newscore between alpha an beta ;)
* We get a fail high, shall we trust it? Well, we could, but we want to be
safer here
* We research. Now we try:
alpha = pvscore;
beta = pvscore + 30;
newscore = -search(-beta,-alpha);
* Three things can happen:
a. We fail low. Shall we accept this move as a good improvement over the pv?
Certainly not yet. We should decide, search is with [-INFINITY,+INFINITY] or
other wide open window, or just forget it.
b. We get a score between alpha and beta. I trust it because it is a true
score that I got in an open window search after a previous search. I guess
there's enough information, and both searches seem to agree that the move is
good.
c. We fail high again. I definetly trust the move. I only need to decide
whther to open the window now and get a true score or search the other moves
hoping they're allo bad.
>Regards,
>Dieter
Regards,
José C.
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.