[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
computer-go: Hashing during minimax
I'm working on the minimax part of my program.
I found that sorting the moves by static evaluation at each ply is a
big win, because it allows alpha-beta pruning to cut a lot of nodes out
of the tree.
On the other hand, storing the boards I've already evaluated (in a hash
table) seems to be a loss. I get a lot of hits, roughly halving the
number of evaluations I have to do, but this seems to be overwhelmed by
the cost of maintaining a hash table containing tens of thousands of
boards. Of course, the trade-off may go the other way when I'm using a
less trivial evaluation function (currently just counting stones) and
considering fewer moves (currently considering everything).
What are people doing about this problem? Limiting the size of the
table, and either ignoring additional boards or overwriting earlier
ones? Skipping stored boards altogether?
I have one other concern: suppose I evaluate a board at a leaf node,
and later encounter it again higher in the tree. Should I re-evaluate
it?
Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/