Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: how to back up the PV with minimal work.

Author: Robert Hyatt

Date: 12:14:06 01/21/04

Go up one level in this thread


On January 21, 2004 at 14:31:55, Sune Fischer wrote:

>>nonono...
>>
>>We only do it on PV nodes....
>>
>>I can't possibly do it if I can fail low, except for the rare cases where
>>the root aspiration window alpha bound is too high and the best move is
>>actually worse than the expected bound.
>
>But you can fail-low, so that's what I don't understand.
>You have the condition:
>
>    if (ply & 1) {
>      if (alpha!=root_alpha || beta!=root_beta) break;
>    }
>    else {
>      if (alpha!=-root_beta || beta!=-root_alpha) break;
>    }
>
>Nothing in principle prevents the search from returning score<=root_alpha.

How often do you fail low at the root on the first move?  And if you fail
low on that move, how often do you not have best moves in the hash table
from the previous iteration?  If you have a best move, IID is _never_ done
at a ply.

But if you fail low, you are _already_ going to search a bigger tree.  And
IID is only done on fail high cases normally.

IE The first move at the root produces a normal score, then you fail high on
some later move.  _now_ you have a search problem. You have no suggested hash
move at ply=2, because at ply=1 you failed high, so at ply=2 you failed low
with no best move.  Now you apply IID to get a good move for ply=2.  Note how
close to the root of the tree this position is.  A bad move will blow the tree
way up in size.  IID lowers that cost.  In general, that is the _only_ place
it is done.  IE on a fail high at the root, I might start off doing an IID
search at ply=2, as that was a fail-low position.  But I won't need it at
ply=4, because the previous IID search at ply=2 has already visited ply=4 and
stored me a best move.  They just are not done enough to hurt, but when they
help, they _really_ help.  I have taken a test set like the kopec positions,
and run them with and without IID, and IID generally saves 10-15% overall,
which is worth-while.  It might actually hurt here and there, yes.  But if
done correctly, it should _always_ help more than it hurts..

>
>>But fail-low or fail-high at the
>>root is not that common, and there I only do it when (a) I expect a hash
>>move and don't have one,
>
>But what is your condition for expecting a hash move, other than being on the
>PV?

That's it...  I am searching a node that is non-null-window, ie alpha < beta-1,
usually alpha=P-40, beta=P+40 or some such initial aspiration window.  I get
to any ply with that, I am on a PV search.  If there is no hash move, then I
save tree search space by doing an IID search to find the best move here.

Think about our basic search.

At the root, you need to pick a best move to play, but you don't know which
to use.  Do you start a 12 ply search, or work your way up
1-2-3-4-5-6-7-8-9-10-11-12?  Why?  Only because it improves move ordering.
IID is just applying this idea inside the tree at selected points where it is
critical to have good ordering..





>
>-S.



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.