uni_algo/algo/algorithms/
mod.rs1use crate::algo::GraphProjection;
7
8pub trait Algorithm: Send + Sync {
10 type Config: Default + Clone + Send + 'static;
12 type Result: Send + 'static;
14
15 fn name() -> &'static str;
17
18 fn run(graph: &GraphProjection, config: Self::Config) -> Self::Result;
20
21 fn needs_reverse() -> bool {
23 false
24 }
25
26 fn needs_weights() -> bool {
28 false
29 }
30}
31
32mod pagerank;
33pub use pagerank::{PageRank, PageRankConfig, PageRankResult};
34
35mod wcc;
36pub use wcc::{Wcc, WccConfig, WccResult};
37
38mod dijkstra;
39pub use dijkstra::{Dijkstra, DijkstraConfig, DijkstraResult};
40
41mod louvain;
42pub use louvain::{Louvain, LouvainConfig, LouvainResult};
43
44mod label_propagation;
45pub use label_propagation::{LabelPropagation, LabelPropagationConfig, LabelPropagationResult};
46
47mod betweenness;
48pub use betweenness::{Betweenness, BetweennessConfig, BetweennessResult};
49
50mod node_similarity;
51pub use node_similarity::{
52 NodeSimilarity, NodeSimilarityConfig, NodeSimilarityResult, SimilarityMetric,
53};
54
55mod closeness;
56pub use closeness::{Closeness, ClosenessConfig, ClosenessResult};
57
58mod triangle_count;
59pub use triangle_count::{TriangleCount, TriangleCountConfig, TriangleCountResult};
60
61mod kcore;
62pub use kcore::{KCore, KCoreConfig, KCoreResult};
63
64mod random_walk;
65pub use random_walk::{RandomWalk, RandomWalkConfig, RandomWalkResult};
66
67mod apsp;
68pub use apsp::{AllPairsShortestPath, AllPairsShortestPathConfig, AllPairsShortestPathResult};
69
70mod scc;
71pub use scc::{Scc, SccConfig, SccResult};
72
73mod topological_sort;
74pub use topological_sort::{TopologicalSort, TopologicalSortConfig, TopologicalSortResult};
75
76mod cycle_detection;
77pub use cycle_detection::{CycleDetection, CycleDetectionConfig, CycleDetectionResult};
78
79mod bipartite_check;
80pub use bipartite_check::{BipartiteCheck, BipartiteCheckConfig, BipartiteCheckResult};
81
82mod bridges;
83pub use bridges::{Bridges, BridgesConfig, BridgesResult};
84
85mod articulation_points;
86pub use articulation_points::{
87 ArticulationPoints, ArticulationPointsConfig, ArticulationPointsResult,
88};
89
90mod astar;
91pub use astar::{AStar, AStarConfig, AStarResult};
92
93mod bidirectional_dijkstra;
94pub use bidirectional_dijkstra::{
95 BidirectionalDijkstra, BidirectionalDijkstraConfig, BidirectionalDijkstraResult,
96};
97
98mod bellman_ford;
99pub use bellman_ford::{BellmanFord, BellmanFordConfig, BellmanFordResult};
100
101mod k_shortest_paths;
102pub use k_shortest_paths::{KShortestPaths, KShortestPathsConfig, KShortestPathsResult};
103
104mod mst;
105pub use mst::{MinimumSpanningTree, MstConfig, MstResult};
106
107mod max_matching;
108pub use max_matching::{MaximumMatching, MaximumMatchingConfig, MaximumMatchingResult};
109
110mod dinic;
111pub use dinic::{Dinic, DinicConfig, DinicResult};
112
113mod ford_fulkerson;
114pub use ford_fulkerson::{FordFulkerson, FordFulkersonConfig, FordFulkersonResult};
115
116mod graph_metrics;
117pub use graph_metrics::{GraphMetrics, GraphMetricsConfig, GraphMetricsResult};
118
119mod degree_centrality;
120pub use degree_centrality::{
121 DegreeCentrality, DegreeCentralityConfig, DegreeCentralityResult, DegreeDirection,
122};
123
124mod harmonic_centrality;
125pub use harmonic_centrality::{
126 HarmonicCentrality, HarmonicCentralityConfig, HarmonicCentralityResult,
127};
128
129mod eigenvector_centrality;
130pub use eigenvector_centrality::{
131 EigenvectorCentrality, EigenvectorCentralityConfig, EigenvectorCentralityResult,
132};
133
134mod katz_centrality;
135pub use katz_centrality::{KatzCentrality, KatzCentralityConfig, KatzCentralityResult};
136
137mod maximal_cliques;
138pub use maximal_cliques::{MaximalCliques, MaximalCliquesConfig, MaximalCliquesResult};
139
140mod all_simple_paths;
141pub use all_simple_paths::{AllSimplePaths, AllSimplePathsConfig, AllSimplePathsResult};
142
143mod elementary_circuits;
144pub use elementary_circuits::{
145 ElementaryCircuits, ElementaryCircuitsConfig, ElementaryCircuitsResult,
146};
147
148mod graph_coloring;
149pub use graph_coloring::{GraphColoring, GraphColoringConfig, GraphColoringResult};