d6de8fb161
Update to Rust 2018 and use pub(crate)
for hidden APIs.
2019-07-13 22:38:17 -04:00
c1a24ff1a6
Use recently published version of symbol_table (now called symbol_map).
2016-09-08 22:02:58 -04:00
b937e22f50
Remove unused import.
2016-09-05 23:47:18 -04:00
e0d34f1f68
Use crossbeam's scoped threads instead of unsafe cast in test.
2016-05-04 14:42:00 -04:00
962768dfb4
Dead simple tests to ensure that Graph can be Send and Sync.
2016-05-01 20:41:14 -04:00
4935b8b646
Remove dead code.
2016-05-01 17:51:55 -04:00
7f8a4b3c0b
Switch to using symbol-table package instead of built-in StateNamespace.
2016-05-01 17:51:10 -04:00
8550af7562
Remove unused, obsoleted enum.
2016-05-01 16:11:45 -04:00
0e9c6a64ec
Recover vertex labels from node handles.
2016-04-17 17:19:18 -04:00
fc77c8824b
Method for temporarily borrowing a Node from a MutNode.
2016-04-17 15:59:34 -04:00
4b348c9bc6
New methods for adding parent edges to graph.
2016-04-17 14:17:12 -04:00
6ce69e5d12
New methods for adding child edges to graph.
2016-04-17 14:12:37 -04:00
f57667f410
Get rid of notion of unexpanded edge.
...
Make one to throw away.
Upon reflection, it is not necessary for the graph data structure itself
to support unexpanded edges. It is sufficient to mark on vertex or edge
data when expansion is needed.
2016-04-17 13:59:41 -04:00
1a5c88e687
Rename Arc->RawEdge. Add Ord & co. to RawEdge.
2016-04-13 23:05:46 -04:00
649203baad
Rename Vertex->RawVertex. Add Ord and PartialOrd to RawVertex.
2016-04-13 23:01:54 -04:00
9d3c123bdb
Rename StateId->VertexId, ArcId->EdgeId.
2016-04-13 22:58:26 -04:00
ba77a28cd4
Use references to game state in retain_reachable_from.
2016-04-12 10:45:19 -04:00
137168a35a
Clean up module structure and documentation.
2016-04-12 10:36:25 -04:00
173ffea759
Wrap up basic test suite for mark & compact.
2016-04-12 08:52:07 -04:00
df11119ec6
Strengthen mark-and-compact to suit tests.
...
Tests still incomplete.
2016-04-12 00:54:47 -04:00
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