> In case of MCTS, a simple and cheap way is to detect superko as "output
> filter" and use next best move in the tree if superko violation is
> detected; however, some situations may be significantly misread because
> of that. The other extreme is detecting and avoiding superko even in
> simulations; that is fairly expensive (due to a guaranteed cache miss
> during hash table lookup, at the very least) and usually *not* done.
> The most common compromise is to detect and prune superko moves only
> in the game tree and check only the simple ko rule in simulations.
>
It is not really expensive to detect and avoid superko in simulations. Some
repetitions occur every 4 moves, so you only need to incrementally keep
four keys and compare two keys. For instance,
Key1 position before the third last move
Key2 position before the second last move
Key3 position before the last move
Key4 current position
To check super ko for move a in the current position, just do
if (Key1 == ComputeZobristKey(Key4, a))
{
// Forbid move a
}
Aja
_______________________________________________
Computer-go mailing list
[email protected]
http://dvandva.org/cgi-bin/mailman/listinfo/computer-go