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.