Enumerating Cycles of a Directed Graph

Initializing live version
Download to Desktop

Requires a Wolfram Notebook System

Interact on desktop, mobile and cloud with the free Wolfram Player or other Wolfram Language products.

Contributed by: Daniel Skates (November 2010)
Open content licensed under CC BY-NC-SA



This Demonstration implements Johnson's algorithm, finding all the distinct elementary cycles in a graph, and generates random directed graphs.

An elementary cycle in a directed graph is a sequence of vertices in the graph such that for , there exists an edge from to , as well as one from to , and that no vertex appears more than once in the sequence. Two elementary cycles are distinct if one is not a cyclic permutation of the other.

Note that Mathematica 7 does not have a native circuit finding method.


[1] D. B. Johnson, "Finding All the Elementary Circuits of a Directed Graph," SIAM Journal of Computing, 4(1), 1975 pp. 77–84. http://epubs.siam.org/doi/pdf/10.1137/0204007.

Feedback (field required)
Email (field required) Name
Occupation Organization
Note: Your message & contact information may be shared with the author of any specific Demonstration for which you give feedback.