pub fn leading_eigenvector(
graph: &Graph,
weights: Option<&[f64]>,
steps: Option<u32>,
) -> IgraphResult<LeadingEigenvectorResult>Expand description
Detect communities using Newman’s leading eigenvector method.
Repeatedly bisects communities by the sign of the leading
eigenvector of the restricted modularity matrix. Stops when no
further split increases modularity, or after steps splits.
Edge directions are ignored (the graph is treated as undirected).
steps: maximum number of split steps. Pass None for
vcount - 1 (exhaustive).
§Examples
use rust_igraph::{Graph, leading_eigenvector};
// Barbell graph: two triangles connected by a bridge
let mut g = Graph::with_vertices(6);
// Triangle 1
g.add_edge(0, 1).unwrap();
g.add_edge(1, 2).unwrap();
g.add_edge(0, 2).unwrap();
// Triangle 2
g.add_edge(3, 4).unwrap();
g.add_edge(4, 5).unwrap();
g.add_edge(3, 5).unwrap();
// Bridge
g.add_edge(2, 3).unwrap();
let result = leading_eigenvector(&g, None, None).unwrap();
// Should find 2 communities (one per triangle)
assert_eq!(result.membership[0], result.membership[1]);
assert_eq!(result.membership[3], result.membership[4]);
assert_ne!(result.membership[0], result.membership[3]);