Skip to main content

graphos_adapters/plugins/algorithms/
mod.rs

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