Author: Robert Hyatt
Date: 05:45:23 03/24/99
Go up one level in this thread
On March 24, 1999 at 06:03:26, JW de Kort wrote: >Hi Chess friends, > >I have a simple question concerning the quiescence search. Standar alpha-beta >usualy starts with something like > > if (depthh == 0) > return evaluate (position) > >most qsearches i have seen do not have thsi kind of ply depth termination. Now > i wonder how can a q search ever terminate? I have seen a question like this >before, but could some one please explain? What i'am afraid off is that my >qsearch will go on and on evaluating a line of play in wich white takes all the >pieces at the kingside, while black does the same on the queen side. > >Thanks in advance. > >Jan Willem Most of us replace the above with this: if (depth == 0) value=-Quiesce(-beta,-alpha,wtm^1, etc); else value=-Search(-beta,-alpha,wtm^1,depth-1,etc); Quiesce is a simple search that looks like this (details omitted but basic idea is present): int Quiesce(alpha,beta,wtm) { alpha=Evaluate(etc); if (alpha > beta) return(beta); while(more_captures) { MakeNextCapture(); value=-Quiesce(-beta,-alpha,wtm^1); if (value > alpha) { if (value >= beta) return(beta); alpha=value; } } return(alpha); } the difference between Quiesce and Search is that Quiesce sets the lower bound to the current positional evaluation + material. Because we allow the current side to 'stand pat' and not play any move (capture only) if he doesn't want to. Search() doesn't allow one side to 'not move' as that is illegal. But here we use it to 'stop' the sequence of captures and exit, or else we can make a capture that helps our score, but then the opponent gets to decide whether he wants to 'stand pat' or make a capture in response. Hope that helps.. If something isn't clear, feel free to ask, as there could easily be a typo in the above...
This page took 0.01 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.