Skip to main content

is_eulerian

Function is_eulerian 

Source
pub fn is_eulerian(graph: &Graph) -> IgraphResult<EulerianClassification>
Expand description

Decide whether graph has an Eulerian path and/or cycle.

Counterpart of igraph_is_eulerian() from references/igraph/src/paths/eulerian.c:333.

§Examples

use rust_igraph::{Graph, is_eulerian};

// Triangle (3-cycle): every vertex has even degree → both path & cycle.
let mut g = Graph::with_vertices(3);
g.add_edge(0, 1).unwrap();
g.add_edge(1, 2).unwrap();
g.add_edge(2, 0).unwrap();
let r = is_eulerian(&g).unwrap();
assert!(r.has_path && r.has_cycle);

// Path 0-1-2: vertices 0, 2 have odd degree → path only, no cycle.
let mut g = Graph::with_vertices(3);
g.add_edge(0, 1).unwrap();
g.add_edge(1, 2).unwrap();
let r = is_eulerian(&g).unwrap();
assert!(r.has_path && !r.has_cycle);