> 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

Reply via email to