Author: Dieter Buerssner
Date: 11:40:16 11/26/00
Go up one level in this thread
On November 26, 2000 at 13:03:49, Bruce Moreland wrote: >The quiescent search included at the end of this does null-moves implicitly. If >the score returned after a null-move is better than the score returned after any >capture, it will return the null-move score. ... >int qsearch(int alpha, int beta) >{ > int cur; > > cur = eval(); > if (cur >= beta) > return beta; > if (cur > alpha) > alpha = cur; > while (captures()) { > make_next_capture(); > cur = -qsearch(-beta, -alpha); > unmake_move(); > if (cur >= beta) > return beta; > if (cur > alpha) > alpha = cur; > } > return alpha; >} I cannot see any null move here. What am I missing? The usual definition of null move is, that you pass the right to move to the opponent. For qsearch, this would mean, instead of me, let the opponent capture. If I am still better than beta, this is a fail high node. Otherwise, I try my captures in the ususual way. While I have not tried this idea, I would think, that it won't save anything in qsearch, to the contrary, probably more nodes will be searched on average. The qsearch routine above looks to me like a "standard" qsearch, that returns the stand-pat when >= beta without generating any moves. Let me add one thing to the good advice you gave in you other post. Skipping moves, that obviously cannot bring the score to alpha can have a few traps. I.e. say alpha is -0.5 and the stand-pat is -4.5 in KNPK. Capturing the last opponent pawn would not bring back the stand-pat to alpha, even not with a considerably large safety margin. Nevertheless, the score is 0.0 which is > alpha. -- Dieter
This page took 0.03 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.