Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Gerbil implementation request to Bruce Moreland

Author: Dieter Buerssner

Date: 08:17:56 08/09/01

Go up one level in this thread


On August 09, 2001 at 11:02:38, Andrew Williams wrote:

>On August 09, 2001 at 10:48:18, Dieter Buerssner wrote:
>
>>On August 09, 2001 at 10:05:42, Andrew Williams wrote:
>>
>>>Here's my implementation of this in PostModernist:
>>>
>>>if(ply < (DEPTH-3)) {
>>>    int m;
>>>
>>>    for(m=plystart[ply]; m < plystart[ply+1]; m++) {
>>>        make_move(tree[m].mv);
>>>        if(in_check(OTHERSIDE(whoseTurn))) {
>>>            unmake_move();
>>>            continue;
>>>        }
>>>        // Probe the TT. If found, react appropriately!
>>>        ttr = tt_probe();
>>>        if(ttr != NULL) {
>>>            if(beta <= -ttr->beta && ttr->betaDraft >= (draft-1)) {
>>>                unmake_move();
>>>                return -ttr->beta;
>>>            }
>>>        }
>>>        unmake_move();
>>>    }
>>>}
>>
>>Perhaps, I don't understand this correctly. Don't you ignore all possible search
>>extensions, that might be triggered by the move here.
>>
>>Or is the "if(in_check(OTHERSIDE(whoseTurn)))" taking care of the check
>>extension. (I am not totally sure, whose turn it is ...) It could also mean,
>>that this is just the legality check. Or do you generate only legal moves?

>I'm not completely sure I understand what you're asking.
>The if(in_check(OTHERSIDE(whoseTurn))) test is checking
>for an illegal position (ie if the move leaves the side
>moving in check).

Actually, this is how I understood it first, but then I got unsure ...

I assume you extend checking moves normally in search. So what can happen?
Assume you have depth 5. Now you try all the legal moves. You check the hash for
a cutoff (draft 4 is enough). But what if one move is a checking move? In a
normal search, you will probably extend one ply, and then search again for the
other side with depth 5 again. So, in the "normal" search, you also need draft 5
or better for a cutoff from the hash.

So, it looks to me, that all search extensions are ignored by this approach.
Especially, I would think, that very often the ETC is successful in typical game
situations where the normal search wouldn't be. Earlier you quite likely will
have searched the same line in the above example with depth 4. And stored it
with draft 4 in the HT. You made the checking move. And searched again with
depth 4, and stored with depth 4. No, the next time you visit the position, the
first HT probe will fail to yield a cutoff (5 needed, 4 available), in the probe
code above, you will have enough draft (4 is enough).  But I think, this works
against the idea of search extension. This is also the reason, why I did not
experiment with ETC yet. To take search extensions into account will almost
yield in a full fledged search loop.

I must admit, that I had some problems to express myself clearly here :-(
If it is still too confusing, please complain, and I will try again.

Regards,
Dieter




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.