D Sceviour wrote:
It seems another oracle is needed here because depth alone cannot tell how important the hash entry might be in the future. Some of the entries might only be useful for a null move search with a shallow draft. This discussion is helpful as I am getting many ideas to try. Instead of draft, perhaps overwrite the entry that has the largest variance from the current alpha/beta bounds?
I don't see how that would help you. What determines whether an entry might cause a cut-off or not is first and fore-most the depth. Perhaps if you have a choice in different entries at the same depth, you can pick the one that would not have caused a cut-off over the one that would not. Or you choose to preserve the one that would give you a move over the one that wouldn't.
Ultimately though, you don't know (can't know) whether an entry might be useful in the future or not. So you try to preserve the entries that are most likely to safe you work - which are statistically those with a large depth.
Someone should give a second-opinion on this, but I think it's true that the main benefit of the transposition table is that they give you a move that is a good candidate, rather than that they allow you to take a cut-off without doing a search. What I mean by that is that you see a large increase in strength (or reduction in time-to-depth) when you add the move from the TT for move ordering, and a smaller improvement when you also allow for cut-offs. I'm basing that on time-to-depth measurements on my variant engine Postduif, which ran without a transposition table for a good while and still managed decent search depths, but I haven't done a proper test. Would be easy to do, of course.
EDIT:
Ok, you know what? I'm completely wrong with what I said above. I did the test using Jazz' benchmark command:
Code: Select all
Vanilla:
21556529 nodes searched
Elapsed time 11333 ms
1.90205e+06 nodes / s
No TT move:
23294774 nodes searched
Elapsed time 12493 ms
1.86462e+06 nodes / s
No TT cut-off:
27595902 nodes searched
Elapsed time 13837 ms
1.99433e+06 nodes / s
No TT:
36182929 nodes searched
Elapsed time 18021 ms
2.0078e+06 nodes / s
As expected, no TT is worst, followed by no cut-offs, followed by not using the hash move for move ordering.