Skip to main content

degree_sequence

Function degree_sequence 

Source
pub fn degree_sequence(
    graph: &Graph,
    mode: DegreeMode,
) -> IgraphResult<Vec<u32>>
Expand description

Returns the degree sequence of the graph.

For undirected graphs, mode is ignored. For directed graphs:

  • Out: count outgoing edges per vertex.
  • In: count incoming edges per vertex.
  • All: count all incident edges per vertex.

Self-loops contribute 2 to a vertex’s degree in All mode for undirected graphs (matching igraph C IGRAPH_LOOPS_TWICE convention), and 1 each to in-degree and out-degree for directed graphs.

§Examples

use rust_igraph::{Graph, degree_sequence, DegreeMode};

let mut g = Graph::with_vertices(4);
g.add_edge(0, 1).unwrap();
g.add_edge(0, 2).unwrap();
g.add_edge(0, 3).unwrap();
let deg = degree_sequence(&g, DegreeMode::All).unwrap();
assert_eq!(deg, vec![3, 1, 1, 1]);

// Directed graph
let mut g = Graph::new(3, true).unwrap();
g.add_edge(0, 1).unwrap();
g.add_edge(0, 2).unwrap();
g.add_edge(1, 2).unwrap();
let out_deg = degree_sequence(&g, DegreeMode::Out).unwrap();
assert_eq!(out_deg, vec![2, 1, 0]);
let in_deg = degree_sequence(&g, DegreeMode::In).unwrap();
assert_eq!(in_deg, vec![0, 1, 2]);