Possible approach to the 50 moves and TT problem?

Discussion of chess software programming and technical issues.

Moderators: hgm, Dann Corbit, Harvey Williamson

thomasahle
Posts: 94
Joined: Thu Feb 27, 2014 8:19 pm

Possible approach to the 50 moves and TT problem?

Post by thomasahle »

I'm entertaining the following idea for getting 50 move draws right when using a transposition table:

In each entry I store a fifty_low and fifty_high score. An entry is only considered valid if the current fifty move counter is in this interval.
Further, the result of this search be stored in an entry that is only valid if fifty \in [fifty_low-1, fifty_high-1].

In case the TT returns an entry with an invalid range for the current search, it is ignored and the node is researched.

To keep information correct, when a recursive search returns, it also returns a range [f_low_i, f_high_i]. The valid range of the parent node becomes [max(f_low_i), min(f_high_i)] of all the searched nodes. Note that our current fifty value is always guaranteed to be in this interval.

Of course if a 50-move-draw is found for a specific node, the valid range will be fifty \in [49, infty]. For other leaf nodes, the valid range will be [0, infty].


Has this method been tried before? If so, how much did it trash the transposition table? It feels like it only researches nodes that really need to researched, because the score is flawed.