Git Product home page Git Product logo

Comments (8)

amj avatar amj commented on July 19, 2024

It also comes up on CGOS during take-2-retake-1 -- less often, and usually in games where it's lost anyway. We should still Do The Right Thing.

However, i don't think dragging around a bunch of hashes in our tree search is right. If we have a situation where our best sequence depends on superko, we're probably losing anyway -- so i'm happy to just have it check at the time we select the move to play, and playing our 2nd-best after that. (i.e., at the Player level)

from minigo.

brilee avatar brilee commented on July 19, 2024

some thoughts on how to correctly implement this: by using a linked-list data structure, the entire game tree can share position history as appropriate. That way, for 2000 nodes of a tree that's currently at move 300, we don't have 600,000 copies of zobrist hashes lying around, but rather just 2300.

from minigo.

amj avatar amj commented on July 19, 2024

How relevant do you think it is to find superko in the tree, vs. just pruning it at move selection time (and also pruning it from the resultant probabilities_pi?)

from minigo.

killerducky avatar killerducky commented on July 19, 2024

Some notes on how LZ does this. It's quite different, sounds like brilee's idea would be an easier change for minigo.

LZ makes a search tree of UCTNode objects, but those objects only contain UCT related statistics like N, W, Q, P. Each UCTSearch thread has a single FullBoard object. As it traverses the tree of UCTNodes, it updates FullBoard to match. FullBoard contains a vector of m_ko_hash for detecting super-ko. When a playout is done, the selected leaf is checked for superko, and if it is, mark UCTNode.m_valid = false and repick.

I guess this trades CPU time (constantly update FullBoard state) for memory (keep copies of the full board state in each node).

Edit: I think you want to prune it at least before you collect any search statistics on it. If by move selection time you mean only if the root actually picks the superko, I think that is too late. If you mean picking a leaf node to expand, that's the same as what LZ does.

from minigo.

amj avatar amj commented on July 19, 2024

@killerducky my theory is if the root picks superko, and it's explored superko as the only way to win, it's probably already lost ;)

from minigo.

brilee avatar brilee commented on July 19, 2024

A LL implementation would work at the go implementation layer, rather than at the MCTS layer. But the idea isn't fully baked yet, because solving the memory requirement is just one problem; the other problem is efficiently computing illegal moves given a history of zobrist hashes.

from minigo.

amj avatar amj commented on July 19, 2024

this looks like a fun thing to do now.

from minigo.

amj avatar amj commented on July 19, 2024

tom did this, yay.

from minigo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.