Class TiernanSimpleCycles<V,​E>

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

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

    See:
    J.C.Tiernan An Efficient Search Algorithm Find the Elementary Circuits of a Graph., Communications of the ACM, vol.13, 12, (1970), pp. 722 - 726.

    Author:
    Nikolay Ognyanov
    • Constructor Detail

      • TiernanSimpleCycles

        public TiernanSimpleCycles()
        Create a simple cycle finder with an unspecified graph.
      • TiernanSimpleCycles

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

      • getGraph

        public Graph<V,​E> getGraph()
        Get the graph
        Returns:
        graph
      • setGraph

        public void setGraph​(Graph<V,​E> graph)
        Set the graph
        Parameters:
        graph - graph
      • findSimpleCycles

        public List<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.