These functions calculate whether an Eulerian path or cycle exists and if so, can find them.
int igraph_is_eulerian(const igraph_t *graph, igraph_bool_t *has_path, igraph_bool_t *has_cycle);
An Eulerian path traverses each edge of the graph precisely once. A closed Eulerian path is referred to as an Eulerian cycle.
Arguments:
|
The graph object. |
|
Pointer to a Boolean, will be set to true if an Eulerian path exists. |
|
Pointer to a Boolean, will be set to true if an Eulerian cycle exists. |
Returns:
Error code:
|
Time complexity: O(|V|+|E|), the number of vertices plus the number of edges.
int igraph_eulerian_cycle(const igraph_t *graph, igraph_vector_t *edge_res, igraph_vector_t *vertex_res);
Finds an Eulerian cycle, if it exists. An Eulerian cycle is a closed path that traverses each edge precisely once.
This function uses Hierholzer's algorithm.
Arguments:
|
The graph object. |
|
Pointer to an initialised vector. The indices of edges
belonging to the cycle will be stored here. May be |
|
Pointer to an initialised vector. The indices of vertices
belonging to the cycle will be stored here. May be |
Returns:
Error code:
|
Time complexity: O(|V|+|E|), the number of vertices plus the number of edges.
int igraph_eulerian_path(const igraph_t *graph, igraph_vector_t *edge_res, igraph_vector_t *vertex_res);
Finds an Eulerian path, if it exists. An Eulerian path traverses each edge precisely once.
This function uses Hierholzer's algorithm.
Arguments:
|
The graph object. |
|
Pointer to an initialised vector. The indices of edges
belonging to the path will be stored here. May be |
|
Pointer to an initialised vector. The indices of vertices
belonging to the path will be stored here. May be |
Returns:
Error code:
|
Time complexity: O(|V|+|E|), the number of vertices plus the number of edges.
← Chapter 13. Structural properties of graphs | Chapter 15. Graph visitors → |