EGTB usage idea
Posted: Sat Feb 01, 2020 2:36 am
I'm sure someone has already tried this, or has already implemented it, but I was wondering what the tactical improvement would be from the following scenario.
Design:
EGTBs that at the lowest level, only return WLD (or unknown to indicate in illegal position).
This would require a nibble per entry (win = 1, loss = 2, draw = 0, illegal = 3). we'll assume no need for an illegal check except for debugging)
After a EGTB probe, if the position is a draw, 0 is returned. If the result is a win or loss, one possible option is to return a big mate value, such as M500 or -M500, adjusted to the ply of the search. Instead, we can use the maximum mate value associated with the state of the position at the time it was probed. Example, we get to a KRK position and the lookup is a win for the side moving, instead of using M500 as a return value, M16 is used since that is the maximum moves needed to force mate. For KQK it is M10. KBBK is M33, etc. This information is available up to 7-man tables now.
The logic that probes the EGTB would need to know these values, but they could be stored easily in a small hash or lookup table.
The potential gain is that the search would favor the results with the smallest value, which would be either the EG type with the smallest mate value at the same depth, or smaller values found further up the tree.
It seems logical that using the maximum position state mate values would solve mates faster than just using a big mating score, but how much better is it?
Also, using only WLD EGTBs saves a lot of space.
Has anyone tried this idea?
Design:
EGTBs that at the lowest level, only return WLD (or unknown to indicate in illegal position).
This would require a nibble per entry (win = 1, loss = 2, draw = 0, illegal = 3). we'll assume no need for an illegal check except for debugging)
After a EGTB probe, if the position is a draw, 0 is returned. If the result is a win or loss, one possible option is to return a big mate value, such as M500 or -M500, adjusted to the ply of the search. Instead, we can use the maximum mate value associated with the state of the position at the time it was probed. Example, we get to a KRK position and the lookup is a win for the side moving, instead of using M500 as a return value, M16 is used since that is the maximum moves needed to force mate. For KQK it is M10. KBBK is M33, etc. This information is available up to 7-man tables now.
The logic that probes the EGTB would need to know these values, but they could be stored easily in a small hash or lookup table.
The potential gain is that the search would favor the results with the smallest value, which would be either the EG type with the smallest mate value at the same depth, or smaller values found further up the tree.
It seems logical that using the maximum position state mate values would solve mates faster than just using a big mating score, but how much better is it?
Also, using only WLD EGTBs saves a lot of space.
Has anyone tried this idea?