A while ago I implemented what I thought was a fairly straightforward
way to deal with transpositions. But to my surprise it made the
program weaker instead of stronger. Since I couldn't figure out
immediately what was wrong with it, I decided to leave it alone for
the time being.
Just now I decided to do a search on transpostions and UCT in this
mailing list and it seems to have been discussed several times in the
past. But from what I found it's not entirely clear to me what was
the conclusion of those discussions.
Let me first describe what I did (ar attempted to do): all nodes are
stored in a hash-table using a checksum. Whenever I create a new node
in the tree I add it in the hash-table as well. If two nodes have the
same checksum, they are stored at the same slot in the hashtable in a
small list.
When I add a node to a slot that already contains something, then I
use the playout statistics of the node(s) already there and propagate
that up the tree. When I have done a playout I propagate the result
of the single playout up the tree, but at each step I check in the
hashtable to see if there are multiple paths to update.
I've seen some posts that expressed concerns about using the existing
statistics of another path. This may be the reason I'm not seeing any
improvement. So I was wondering if there's any consensus about how to
deal with transpositions in a UCT tree. Or if someone could point me
to other sources of information on the subject.
Mark
_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/