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