Class JohnsonSimpleCycles<V,​E>

  • Type Parameters:
    V - the vertex type.
    E - the edge type.
    All Implemented Interfaces:
    DirectedSimpleCycles<V,​E>

    public class JohnsonSimpleCycles<V,​E>
    extends java.lang.Object
    implements DirectedSimpleCycles<V,​E>
    Find all simple cycles of a directed graph using the Johnson's algorithm.

    See:
    D.B.Johnson, Finding all the elementary circuits of a directed graph, SIAM J. Comput., 4 (1975), pp. 77-84.

    Author:
    Nikolay Ognyanov
    • Constructor Summary

      Constructors 
      Constructor Description
      JohnsonSimpleCycles​(Graph<V,​E> graph)
      Create a simple cycle finder for the specified graph.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.List<java.util.List<V>> findSimpleCycles()
      Find the simple cycles of the graph.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • JohnsonSimpleCycles

        public JohnsonSimpleCycles​(Graph<V,​E> graph)
        Create a simple cycle finder for the specified graph.
        Parameters:
        graph - - the DirectedGraph in which to find cycles.
        Throws:
        java.lang.IllegalArgumentException - if the graph argument is null.
    • Method Detail

      • findSimpleCycles

        public java.util.List<java.util.List<V>> findSimpleCycles()
        Find the simple cycles of the graph.
        Specified by:
        findSimpleCycles in interface DirectedSimpleCycles<V,​E>
        Returns:
        The list of all simple cycles. Possibly empty but never null.