Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: PV length ???

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.