Skip to main content

grafeo_adapters/plugins/algorithms/
mod.rs

1//! Classic graph algorithms - traversals, paths, centrality, communities.
2//!
3//! Everything you'd expect from a graph analytics library, designed to work
4//! seamlessly with Grafeo's LPG store. All algorithms are available from Python too.
5//!
6//! | Category | Algorithms |
7//! | -------- | ---------- |
8//! | Traversal | BFS, DFS with visitor pattern |
9//! | Components | Connected, strongly connected, topological sort |
10//! | Shortest paths | Dijkstra, A*, Bellman-Ford, Floyd-Warshall |
11//! | Centrality | PageRank, betweenness, closeness, degree |
12//! | Community | Louvain, label propagation |
13//! | Structure | K-core, bridges, articulation points |
14//!
15//! ## Usage
16//!
17//! ```ignore
18//! use grafeo_adapters::plugins::algorithms::{bfs, dfs, connected_components, dijkstra};
19//! use grafeo_core::graph::lpg::LpgStore;
20//! use grafeo_common::types::NodeId;
21//!
22//! let store = LpgStore::new();
23//! // ... populate graph ...
24//!
25//! // Run BFS from node 0
26//! let visited = bfs(&store, NodeId::new(0));
27//!
28//! // Find connected components
29//! let components = connected_components(&store);
30//!
31//! // Run Dijkstra's shortest path
32//! let result = dijkstra(&store, NodeId::new(0), Some("weight"));
33//! ```
34
35mod centrality;
36mod community;
37mod components;
38mod flow;
39mod mst;
40mod shortest_path;
41mod structure;
42mod traits;
43mod traversal;
44
45// Core traits
46pub use traits::{
47    Control, DistanceMap, GraphAlgorithm, MinScored, ParallelGraphAlgorithm, TraversalEvent,
48};
49
50// Traversal algorithms
51pub use traversal::{bfs, bfs_layers, bfs_with_visitor, dfs, dfs_all, dfs_with_visitor};
52
53// Component algorithms
54pub use components::{
55    UnionFind, connected_component_count, connected_components, is_dag,
56    strongly_connected_component_count, strongly_connected_components, topological_sort,
57};
58
59// Shortest path algorithms
60pub use shortest_path::{
61    BellmanFordResult, DijkstraResult, FloydWarshallResult, astar, bellman_ford, dijkstra,
62    dijkstra_path, floyd_warshall,
63};
64
65// Centrality algorithms
66pub use centrality::{
67    DegreeCentralityResult, betweenness_centrality, closeness_centrality, degree_centrality,
68    degree_centrality_normalized, pagerank,
69};
70
71// Community detection algorithms
72pub use community::{LouvainResult, community_count, label_propagation, louvain};
73
74// Minimum Spanning Tree algorithms
75pub use mst::{MstResult, kruskal, prim};
76
77// Network Flow algorithms
78pub use flow::{MaxFlowResult, MinCostFlowResult, max_flow, min_cost_max_flow};
79
80// Structure analysis algorithms
81pub use structure::{KCoreResult, articulation_points, bridges, k_core, kcore_decomposition};
82
83// Algorithm wrappers (for future registry integration)
84pub use centrality::{
85    BetweennessCentralityAlgorithm, ClosenessCentralityAlgorithm, DegreeCentralityAlgorithm,
86    PageRankAlgorithm,
87};
88pub use community::{LabelPropagationAlgorithm, LouvainAlgorithm};
89pub use components::{
90    ConnectedComponentsAlgorithm, StronglyConnectedComponentsAlgorithm, TopologicalSortAlgorithm,
91};
92pub use flow::{MaxFlowAlgorithm, MinCostFlowAlgorithm};
93pub use mst::{KruskalAlgorithm, PrimAlgorithm};
94pub use shortest_path::{BellmanFordAlgorithm, DijkstraAlgorithm, FloydWarshallAlgorithm};
95pub use structure::{ArticulationPointsAlgorithm, BridgesAlgorithm, KCoreAlgorithm};
96pub use traversal::{BfsAlgorithm, DfsAlgorithm};