warrence
db79da7301
Update cargo package metadata
2026-06-30 10:23:27 +02:00
warrence
6b742a53f5
Update cargo package metadata
2026-06-30 10:21:05 +02:00
warrence
fb64e370dc
Update readme and license information
2026-06-29 21:04:48 +02:00
warrence
21c95b4796
Add find_path algorithm and tests
2026-06-29 21:03:10 +02:00
warrence
f009a86f1e
Add GraphTopology.incidence_cursor() for certain use-cases where the iterator is problematic
...
Also add raw_incidences() and step_incidence() to AppendGraph analogously to
Graph, which allows to remove RawIncidenceIterator and simplify its call sites.
2026-06-26 23:36:41 +02:00
warrence
c197766229
Fix formatting
2026-06-26 15:38:49 +02:00
warrence
c147ed4974
Update breadth-first search tests
2026-06-26 15:35:23 +02:00
warrence
135f256141
Add depth-first search algorithms and tests
2026-06-26 15:34:42 +02:00
warrence
91ac925417
Add breadth-first search algorithms and tests
2026-06-25 21:56:22 +02:00
warrence
e299012948
Move the disconnected test graph to the more general graph_topology_test_fixtures macro
2026-06-25 20:17:55 +02:00
warrence
3adfb4b9eb
Add todo for custom weight type for Dijkstra's algorithm
2026-05-18 16:15:46 +02:00
warrence
ce692cb0b2
Add trait imports to test functions, making macros self-contained
2026-05-18 15:55:56 +02:00
warrence
465a383683
Add tests for Dijkstra's algorithm with edge weights
2026-05-18 12:48:12 +02:00
warrence
25b5d7864a
Refactor Dijkstra test assertions into new functions
2026-05-18 12:45:28 +02:00
warrence
13daf20e1c
Update test names for Dijkstra's algorithm to match the tested functions
...
This should have happened when the functions were renamed with the introduction of custom edge weights
2026-05-13 14:04:07 +02:00
warrence
600664acb6
Update tests for Dijkstra's algorithm to test both graph models
...
Use the already established macro pattern, move actual tests to a new file in src/testing.
Use the make_test_graph() function from the graph topology tests instead of duplicating it for the Dijkstra tests.
2026-05-13 14:02:07 +02:00
warrence
e479074151
Remove todo, proposed change would not affect callers
2026-05-13 12:18:27 +02:00
warrence
aaa1b34db3
Add todo that was accidentally removed
2026-05-13 12:16:10 +02:00
warrence
f862ac55ec
Add GraphTopology::incident_edges() and tests
2026-05-13 10:59:38 +02:00
warrence
384dca2d20
Fix inconsistent local var name in test function
2026-05-13 10:58:47 +02:00
warrence
340fde2133
Add Graph::raw_incidences() iterator as a wrapper for step_incidence()
2026-05-13 10:32:37 +02:00
warrence
6191def324
Fix format
2026-05-13 10:30:36 +02:00
warrence
ff148532ab
Move maps tests to integration tests
2026-05-12 18:32:45 +02:00
warrence
f1d5ccafd2
Add len() for VertexMap and EdgeMap
2026-05-12 18:26:52 +02:00
warrence
be63527478
Add incident vertices to edges return value in make_test_graph() fixture
2026-05-12 13:55:04 +02:00
warrence
ac688b4fc0
Extracted some assert code for GraphTopology::incidences into new fn
2026-05-12 13:39:13 +02:00
warrence
f45fc98afc
Add GraphTopology::incident_vertices and tests
2026-05-12 13:37:27 +02:00
warrence
85e25ef0ca
Refactor Graph iterator structs into private method used with std::iter::from_fn()
2026-05-08 20:48:43 +02:00
warrence
2eb054eb0c
Refactor AppendGraph iterators into one RawIncidenceIterator
2026-05-08 20:40:20 +02:00
warrence
0f5f0d67d2
Update Dijkstra's to use incidences instead of neighbors, and with it custom edge weights
2026-05-08 13:16:23 +02:00
warrence
0bcd270d12
Add GraphTopology::incidences(), update and add related tests
2026-05-08 13:12:23 +02:00
warrence
d3fcd690a5
Remove deprecated From<Vertex> for usize implementation
2026-05-08 12:57:16 +02:00
warrence
4e47573290
Renamed the private graph iterators to attune for upcoming changes
2026-05-07 18:01:16 +02:00
warrence
a7be995e34
Change "neighbor" terminology to "adjacent vertex" throughout the code
2026-05-07 17:34:20 +02:00
warrence
726e7691ea
Add weight parameter for Dijkstra's algorithm, add unweighted variants (unused)
2026-05-07 17:15:34 +02:00
warrence
6fe3acb306
Add EdgeMap and private generic EntityMap, update tests
2026-05-07 16:03:17 +02:00
warrence
e074fdf944
Move edge_count() in method order
2026-05-07 11:38:15 +02:00
warrence
016cece626
Update VertexMap tests to validate both graph models
2026-05-07 00:12:06 +02:00
warrence
7f91743b02
Add VertexMap tests for Graph (vertex deletion)
2026-05-06 23:37:48 +02:00
warrence
166b91cdd2
Update Dijkstra's algorithm to use VertexMap
2026-05-06 20:28:53 +02:00
warrence
f40c03b113
Add VertexMap to attach data to vertices
2026-05-06 20:28:00 +02:00
warrence
6e9867a65e
Add GraphTopology::edges() and tests
2026-05-05 22:54:33 +02:00
warrence
c589095737
Add test for GraphTopology::vertices() after delete
2026-05-05 22:52:07 +02:00
warrence
18245b9955
Add Copy and Eq traits to GraphTopology::Edge
2026-05-05 22:37:32 +02:00
warrence
feaca335b1
Add loops and multi-edges to the test graph, fix neighbors() test
2026-05-05 19:21:48 +02:00
warrence
8324f93ebd
Add graph topology test helper macros to deduplicate test code
2026-04-30 17:41:53 +02:00
warrence
09c5850ff3
Add Graph::delete_vertex() implementation
2026-04-29 20:50:19 +02:00
warrence
b3dc0ea666
Add test for Graph vertex deletion with loop
2026-04-29 20:49:34 +02:00
warrence
5b0d6ca1ad
Fix Graph::delete_edge() for paired index with loops
...
- Add new tests for this case
- Fix double list traversal for loop deletions
- Rename Graph::delete_incidence() to update_incidence_list(), and its arguments and local vars
2026-04-29 18:24:10 +02:00
warrence
2793f8af8a
Add Graph::delete_edge() implementation
2026-04-28 17:39:32 +02:00
warrence
ceedea6a0f
Fix formatting
2026-04-28 17:38:41 +02:00
warrence
8e0b3325f5
Update and adds tests for Graph edge deletion
2026-04-28 17:36:38 +02:00
warrence
f075501828
Add comments for AppendGraph and Graph add_incidence()
2026-04-28 17:35:00 +02:00
warrence
0ae4d486cb
Add and update todos
2026-04-28 17:29:54 +02:00
warrence
a8168b35e4
Add unit tests for GraphTopologyDeletion for Graph
2026-04-23 22:50:11 +02:00
warrence
0a30307a0d
Update todos
2026-04-23 22:49:12 +02:00
warrence
37a911dce0
Change GraphTopology implementation for Graph with generational arena
2026-04-23 18:25:23 +02:00
warrence
67e16f50cd
Fix same issues in Graph draft as well
2026-04-23 18:23:54 +02:00
warrence
02cd1a0dea
Fix several minor issues in AppendGraph::are_adjacent(), unit tests, and formatting
2026-04-23 18:18:36 +02:00
warrence
6180786e33
Fix AppendGraph unit tests
2026-04-23 18:13:10 +02:00
warrence
eabde7d635
Add Default implementation for AppendGraph
2026-04-23 18:10:43 +02:00
warrence
b54800c1be
Add new GraphTopologyDeletion trait for Graph to implement
2026-04-22 16:33:33 +02:00
warrence
8126352c9b
Add Graph as a straight copy of AppendGraph
2026-04-22 16:33:05 +02:00
warrence
d0cbebcae0
Fix formatting
2026-04-22 16:32:17 +02:00
warrence
ee26b7a3e0
Move AppendGraph to its own module
2026-04-22 16:31:17 +02:00
warrence
a939f9b889
Add Dijkstra variant without returning predecessors
2026-04-22 15:50:45 +02:00
warrence
a250bde626
Add DijkstraResult return type instead of unnamed tuple
2026-04-22 14:49:07 +02:00
warrence
41f2332735
Add test for add_edge() return value
2026-04-22 14:36:41 +02:00
warrence
ab830ed221
Rename Graph to AppendGraph for future other graph models
2026-04-22 14:31:11 +02:00
warrence
9088dd4683
Add edge return type to GraphTopology::add_edge()
...
There is currently no use for the return type, but it will come.
2026-04-22 14:28:21 +02:00
warrence
da9ba7b0ad
Add GraphTopology trait and use it to interface graph model with algorithm
2026-04-22 14:26:35 +02:00
warrence
489ed6d506
Combine next_incidences and incidence_vertices of Graph into one, and rename incidence_headers to vertices
2026-03-19 21:21:52 +01:00
warrence
c5a0f2a3f6
Add tests for loops and multiple edges
2025-11-03 14:03:21 +01:00
warrence
3565b6b548
Remove pub from structs and fields that should have been private
...
Graph fields can now be private because of the new iterators Graph::vertices()
and Graph::neighbors(). Without them there was no way to access vertices and
incidences without the public Graph fields.
2025-10-25 01:23:05 +02:00
warrence
5ad480b379
Add tests for Dijkstra's algorithm on trivial graphs
2025-10-25 01:15:16 +02:00
warrence
64d0302d64
Update Dijkstra's algorithm to use Graph::neighbors() iterator
2025-10-25 01:03:02 +02:00
warrence
149db22fe8
Add todo
2025-10-25 00:57:29 +02:00
warrence
761920b2c0
Update Graph::are_adjacent() to use neighbors() iterator
2025-10-25 00:56:24 +02:00
warrence
50f3a150bb
Add tests for some trivial graphs
2025-10-25 00:51:48 +02:00
warrence
6ff02f8c67
Update vertex iterator tests
2025-10-25 00:41:08 +02:00
warrence
a26b0eba8c
Add tests for Graph::neighbors()
2025-10-24 23:29:25 +02:00
warrence
74ca390ac2
Add tests for Graph::vertices()
2025-10-24 23:20:48 +02:00
warrence
72d3c06f1e
Rename Graph::iter() to Graph::vertices()
2025-10-21 16:38:02 +02:00
warrence
dd76355a70
Add iterator over neighbors of a vertex Graph::neighbors()
2025-10-21 16:36:53 +02:00
warrence
0826e140b8
Add iterator over vertices Graph::iter()
2025-10-21 15:57:48 +02:00
warrence
bff8ca6857
Move main() code into tests and remove binary crate
2025-10-15 17:09:11 +02:00
warrence
a4ed7ea44e
Update todos
2025-10-11 21:44:20 +02:00
warrence
66e1498c76
Add Graph::new()
2025-10-08 17:04:25 +02:00
warrence
679b597f92
Add todo
2025-10-08 14:38:28 +02:00
warrence
720f497b64
Add "algorithms" and "models" modules for existing code and related todos
2025-10-08 14:32:52 +02:00
warrence
46675a1246
Add success message at the end of main()
2025-10-08 14:30:14 +02:00
warrence
43974d6754
Add todos
2025-10-08 13:42:50 +02:00
warrence
e879316a4c
Update todo
2025-10-06 19:25:20 +02:00
warrence
5bf723928b
Update test assertions in main()
2025-10-06 18:43:37 +02:00
warrence
2a35c47ad4
Add basic Dijkstra algorithm with test in main()
2025-10-06 18:34:17 +02:00
warrence
04c9150172
Reformat code with rustfmt
2025-10-06 10:59:49 +02:00
warrence
e518d72a9e
Rename Graph.vertex_incidence_headers to "incidence_headers"
2025-10-06 10:53:54 +02:00
warrence
5a1080783c
Add Graph example test
2025-10-06 10:23:21 +02:00
warrence
58f330ef46
Fix are_adjacent() method
...
Next incidence was not updated correctly, which could lead to bad results and infinite loops.
2025-10-06 10:23:19 +02:00
warrence
b85edb1287
Add RustRover files
2025-10-06 10:23:15 +02:00
warrence
2e72de2281
Add experimental Graph implementation
2025-10-06 10:23:11 +02:00
warrence
e07389aed8
Add cargo init files
2025-10-06 10:22:34 +02:00