Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: What means lazy/plain alpha bounding?

Author: Robert Hyatt

Date: 07:07:00 02/07/01

Go up one level in this thread


On February 07, 2001 at 02:21:43, Severi Salminen wrote:

>>This dates back to the late 1970's.  The idea is that when you use a PVS-like
>>search, and fail high at the root, you do not re-search the move immediately
>>but just accept it as best.  If a second move fails high, you have to resolve
>>one of them to a true score then search the second with a null-window search
>>centered on the new best score.
>>
>>On a single fail high, you don't do the research at all, you just proceed to
>>the next iteration.  Which is a bit of a problem in that you have no PV to
>>help order the next iteration.
>
>Thanks. And what is the difference between "lazy" and "plain" approaches? Have
>you BTW tested this in Crafty (is Crafty a PVS searcher?)? Was it worth it in
>your engine?
>
>Severi


"lazy" means to do as little as possible.  If you search at the root, and
(say) the third move fails high, the normal (non-lazy) approach is to relax
beta and search the move again immediately to get a true score.  In lazy
you don't do this.  You already know the move failed high and is better than
the best move so far.  You defer finding out how much better until either you
get _another_ fail high (now you have to re-search them both to see which is
better) or you start the next iteration.

I tried this back in the 70's and it worked O.K.  I even tried it in
Crafty a long while back.  The problems are:

1.  You might start the next iteration without a PV to guide the search.
Internal iterative deepening helps.

2.  you might have to make the move without searching it to get a true score,
which means you have no suggested move for the opponent and nothing to "ponder".
This is the reason I stopped using it in Cray Blitz.  In crafty, I have
alternate ways to get a move to ponder so this would be less of a problem.

3.  When the move fails high, the hash table is loaded with information to
help you on the re-search.  If you defer the research until another move fails
high, those additional searches can overwrite some of the information you would
need to re-search the move efficiently.

4.  The plus side is that if a move fails high (after the first one) if you take
the time to re-search it immediately, you might run out of time without knowing
there is yet _another_ move that is also going to fail high.  If you defer the
re-search until you get the second fail high, you can afford to use more time to
compare the two and make the best choice.  Without lazy bounding, you would not
even know about the second move if time runs out before you reach it.

I don't do this in Crafty for lots of reasons.  Null-move + hashing can cause
false fail-highs on a null-window search, and if you automatically assume that
move is better, you will make horrible mistakes every now and then.  In crafty,
if the null-window search fails high and the re-search immediately fails low,
I pretend the fail-high never happened.



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.