Commit Graph

12 Commits

Author SHA1 Message Date
7e35040dab Fix bug in Iterator impl for ParentListIter. 2016-02-19 19:31:15 -05:00
28b458ea61 Edge expansion should track parents of new vertex. 2016-02-19 19:20:47 -05:00
cbc07161c5 Try to fix nonsense with backward edges. 2016-02-19 18:53:50 -05:00
d34cd0ecb4 Export edge list iter types. 2016-02-18 17:09:35 -05:00
dff7e186c0 Rename method for consistency. 2016-02-15 18:23:27 -05:00
f3f55f946e Let edge expansion terminate with the edge or the new child. 2016-02-15 18:19:22 -05:00
17105eafec Update README to reflect lack of cycle-tracking. 2016-02-14 20:38:38 -05:00
fbe8c57872 Pulled out cycle detection code. Graph now has no intrinsic notion of cycles.
This code identified cycles by marking edges on a root-node path R, ...,
A, ..., X with the Target::Cycle variant when there was already some
other path R, ..., B, ..., X. This successfully induced an acyclic graph
structure while maintaining the topology of which vertices are reachable
along a given path, but it did not serve the general interest of
constructing a graph for MCTS for a couple of reasons:

1) Parent-child edges with a Target::Cycle target did not have a
   corresponding child-parent edge, so it became harder to do the right
   thing in backpropagation.
2) Without more concrete control over which paths are considered the
   canonical owner of a vertex, it is possible that a suboptimal
   path (which goes through some nodes that admit very strong opponent
   play) would be the canonical path. This could prevent discovery of a
   very good move.
2016-02-14 19:16:50 -05:00
5c17af835b Change package name to match Rust conventions. 2016-01-24 18:19:44 -05:00
d61b946d35 Documentation, add missing methods, and merge EdgeAdder with MutChildList. 2016-01-24 18:04:29 -05:00
2ac3550a02 Documentation. 2016-01-22 21:49:04 -05:00
58f88dc3c3 Factored out into its own thing, with code more neatly organized. 2016-01-22 20:56:07 -05:00