Hi Lukasz, I think I understand the way it is done for storing the stones; I do it exactly the same way.
For the liberties: Does the index of the direction (NWSE) state where the chain is in respect to the liberty? So if you place a single stone on the board at "position", you add 4 liberties and link them: - left of position, E - right of position, W - below of position, N - above of position, S Is that correct? I have another question. How do you efficiently track visited positions to avoid superko? I use zobrist hashing, but the memory it uses is quite big, and I think copying it from board to board takes a lot of time. Of course I don't do superko checks in the playouts, but in the UCT tree I have to check for it. Isaac > Now the liberties. One liberty can be in many groups. But in only as many > as 4. > Let's call links between neighboring vertices "pseudoliberties". > Now we can create a structure similar to chain_next_v that track all > pseudo-liberties of a group. > It would be again map implemented as an array indexed by vertex and > direction (N,W,S,E). > > Now when you merge you just go over this list and throw away > duplicates. This can be done in linear time > using another map-array vertex -> bool. That will have info whether > particular liberty (vertex without direction) was already in visited. > > Hope this helps :) > Lukasz -- Neu: GMX FreeDSL Komplettanschluss mit DSL 6.000 Flatrate + Telefonanschluss für nur 17,95 Euro/mtl.!* http://dslspecial.gmx.de/freedsl-surfflat/?ac=OM.AD.PD003K11308T4569a _______________________________________________ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/