See: Description
Interface  Description 

DirectedSimpleCycles<V,E> 
A common interface for classes implementing algorithms for enumeration of the simple cycles of a
directed graph.

UndirectedCycleBase<V,E> 
A common interface for classes implementing algorithms for finding a cycle base of an undirected
graph.

Class  Description 

HawickJamesSimpleCycles<V,E> 
Find all simple cycles of a directed graph using the algorithm described by Hawick and James.

HierholzerEulerianCycle<V,E> 
An implementation of Hierholzer's algorithm for finding an Eulerian cycle in Eulerian graphs.

JohnsonSimpleCycles<V,E> 
Find all simple cycles of a directed graph using the Johnson's algorithm.

PatonCycleBase<V,E> 
Find a cycle base of an undirected graph using the Paton's algorithm.

SzwarcfiterLauerSimpleCycles<V,E> 
Find all simple cycles of a directed graph using the Schwarcfiter and Lauer's algorithm.

TarjanSimpleCycles<V,E> 
Find all simple cycles of a directed graph using the Tarjan's algorithm.

TiernanSimpleCycles<V,E> 
Find all simple cycles of a directed graph using the Tiernan's algorithm.

Implementation Note: All the implementations work correctly with loops but not with multiple duplicate edges.
Performance Notes: The worst case time complexity of the algorithms for finding cycles in directed graphs is:
The worst case performance is achieved for graphs with special structure, so on practical workloads an algorithm with higher worst case complexity may outperform an algorithm with lower worst case complexity. Note also that "administrative costs" of algorithms with better worst case performance are higher. Also higher is their memory cost (which is in all cases O(V+E)).
The package author's workloads contain typically several hundred nodes and from tens to several thousand simple cycles. On these workloads the algorithms score by performance (best to worst ) so :
Literature:
Copyright © 2017. All rights reserved.