Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Storing mates in the hash table

Author: Michael Henderson

Date: 00:24:56 09/05/04

Go up one level in this thread


On September 03, 2004 at 18:37:26, Alessandro Scotti wrote:

>A while ago, my engine played this little gem with Black:
>
>1. f3 e5 2. Nc3 Nc6 3. b3 Bc5 4. Ne4 Be7 5. Nc5 Bxc5 6. g4 Bxg1
>
>With its last move, it missed a mate in one... now that's a bug! :-) However, it
>turned out things were a little more complicated. Actually the engine found the
>mate, however it wasn't stored in the hash table because the move Bxg1 was
>explored more deeply... of course, it only takes one ply to detect an immediate
>checkmate! So the search returned a mate score, but when the PV was fetched from
>the hash table the move Bxg1 was found instead.
>Of the many solutions I could find to this problem, eventually I picked one that
>seemed quite promising, that is: a mate score, regardless of the depth it is
>found, is more valuable than a non-mate and should always be stored in the hash
>table. The way I do this is simple: mate scores are assigned a "virtual depth"
>of say 10000 minus the distance to the mate in plies. This allows mates to
>replace any other moves (for a common deeper is better hash policy) and faster
>mates to replace even other mates.
>When I implemented this one-line feature, it worked miracles and my engine would
>quickly find many mates that were out of reach before. Now that I have fixed a
>few bugs, the effect is not so easy to quantify, and I don't have a gain in each
>and every position.
>Especially, this seems to interact a lot with null move searches. In WAC141,
>with my standard null-move policy I got a tremendous reduction in nodes, maybe
>30-40% IIRC. If I use a slightly more aggressive policy, results are entirely
>different and I got a noticeable slowdown, although not in the same order as the
>above.
>For the effort it takes to implement (maybe one minute), it could be worth
>trying. BTW I'm using an MTD(f) search so a lot of stuff behaves very different
>from PVS... your mileage may vary.
>Any thoughs?

How was 6...Bxg1 possibly stored as the best move at that node? Once you search
all the moves, to whatever depth, the best move Qh4# is stored along with score
returned.  Is this something characteristic of MTD(f)?



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.