Commit Graph

53 Commits

Author SHA1 Message Date
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