Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: And a few additional questions.

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.