kevinfat wrote:That thesis is an amazing find though I'm saddened to see that the thesis was written in 2002 which is before the paper by Kishimoto and Muller (2004)
http://webdocs.cs.ualberta.ca/~mmueller/ghi.html. I would have really liked it if the thesis had some commentary on that paper by Kishimoto and Muller because I am finding it impossible to understand their paper.
As far as I understand these papers, they do NOT have a general solution to the GHI problem. Instead, they have a way of dealing with the problem for positions that are being proved or disproved as a win. This basically reduces the applicability of this solution to chess to mate solvers.
It might be possible to apply the same technique to solve it for heuristic evaluations, but it seems that would basically come down to removing transpositions altogether.
What they do is keep track of two hash keys. One (normal) path independent hash key and one path dependent hash key. If a position has been proved or disproved and this position is later encountered through a transposition (i.e. same path independent hash key, but different path dependent hash key), then the proof tree that proved this position is replayed ("simulated") to determine whether it also proves this position given the new history. I'm not sure how this proof tree is remembered, but I suppose the idea is to retrieve it from the hash table. If the proof works, then the position is proved (or disproved, i.e. proved not to be winning). If the proof does not work (because of a draw by repetition due to the new path history or in case of a disproof due to a draw by repetition in the proof tree for the earlier position that does not work for the transposed path), the position will have to be searched further. As far as I understand, in all cases proved/disproved positions that are identical but for their history must be stored separately (and their proof trees should be remembered).
In case alpha/beta is used with a heuristic evaluation function, the papers seem to accept (and acknowledge) that the GHI problem still affects these values. This is not considered to be a problem, since the goal underlying these papers is to solve checkers, for which GHI-unaffected heuristic values would be nice to have but are not essential, and for which GHI-unaffected proved / disproved value are essential. The solution is "general" only in the sense that it is not tied to the search algorithm.
Applying the solution to obtain GHI-unaffected heuristic values, one would need to store all transposed positions separately in the hash table, i.e. remove all transpositions. Without transpositions the GHI problem does indeed not occur, but this we already knew. What the papers add is the idea of replaying proof trees. For heuristic values this basically means to use hash moves of transpositions, which I guess gives some benefit but will never come close to the efficiency achieved by simply ignoring the GHI problem.