Commit Graph

83 Commits

Author SHA1 Message Date
5693f1dad4 Slightly safer permute_compact. 2016-04-11 23:01:53 -04:00
54f9e01c69 Some notes about our recent use of unsafe. 2016-04-11 18:11:26 -04:00
4bc7b6bfe2 Clean up mark-and-compact to pass basic tests. 2016-04-11 17:54:36 -04:00
fe1e3cffe6 Graph pruning via mark-and-sweep.
This code is yet to be tested.
2016-04-09 03:16:39 -04:00
d6f58722c6 When expanding edge to extant vertex, add it to extant vertex's list of parents. 2016-03-26 06:49:39 -04:00
bec2c27d62 Expose MutExpandedEdge publicly. 2016-03-22 14:00:42 -04:00
c433be3d01 Add a type for when we know statically that an edge is expanded. 2016-03-22 13:58:55 -04:00
3b8e29ea25 Improve edge expansion API to indicate if a new vertex is made. 2016-03-22 10:43:12 -04:00
1b125ccd99 Let closures passed to SearchPath.push() be FnMut. 2016-03-21 22:05:00 -04:00
d07bfb6b9f Let closures passed to SearchPath.push() be FnMut. 2016-03-21 22:03:56 -04:00
d45ac9a27b Add missing public exports of auxiliary SearchPath types. 2016-03-21 21:37:41 -04:00
87f727a4d3 Add missing comments for nav parent/child iters. 2016-03-21 16:02:00 -04:00
83409cee85 Merge branch 'search-stack' 2016-03-21 15:55:47 -04:00
df101a5549 Write remaining basic tests for SearchPath. 2016-03-21 15:54:29 -04:00
5d31991980 Reduce redundancy of SearchPath internals and test SearchPathIter. 2016-03-21 14:05:51 -04:00
efb522b304 Another batch of tests for SearchPath. 2016-03-21 13:01:07 -04:00
1e49e19fa1 Fix glaring grammatical mistake in first sentence of README. 2016-03-21 00:31:28 -04:00
9da8b7f059 Add some tests for SearchPath. 2016-03-20 23:21:35 -04:00
49e57a8560 Naming, documentation, and API improvements for SearchStack (now SearchPath). 2016-03-20 21:12:21 -04:00
ed9b4001ce First revision of search stack. 2016-03-20 14:54:51 -04:00
2a90dce9e2 Add functions to convert mutable pointers to navigators. 2016-03-09 01:02:55 -05:00
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