Skip to main content

eulerian_cycle

Function eulerian_cycle 

Source
pub fn eulerian_cycle(graph: &Graph) -> IgraphResult<Vec<u32>>
Expand description

Build an Eulerian cycle if one exists, or return an error.

Unlike eulerian_path, this function requires that every vertex with nonzero degree has even degree (undirected) or equal in-/out-degree (directed). Returns Err if no Eulerian cycle exists.

Counterpart of igraph_eulerian_cycle() from references/igraph/src/paths/eulerian.c:594.

§Examples

use rust_igraph::{Graph, eulerian_cycle};

// Triangle 0-1-2-0: every vertex has even degree → cycle exists.
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 cycle = eulerian_cycle(&g).unwrap();
assert_eq!(cycle.len(), 3);

// Path 0-1-2: has Euler path but no Euler cycle → error.
let mut g = Graph::with_vertices(3);
g.add_edge(0, 1).unwrap();
g.add_edge(1, 2).unwrap();
assert!(eulerian_cycle(&g).is_err());