org.jgrapht.alg.cycle
Class TiernanSimpleCycles<V,E>

java.lang.Object
  extended by org.jgrapht.alg.cycle.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 Summary
TiernanSimpleCycles()
          Create a simple cycle finder with an unspecified graph.
TiernanSimpleCycles(DirectedGraph<V,E> graph)
          Create a simple cycle finder for the specified graph.
 
Method Summary
 List<List<V>> findSimpleCycles()
          Finds the simple cycles of the graph.
Note that the full algorithm is executed on every call since the graph may have changed between calls.
 DirectedGraph<V,E> getGraph()
          Returns the graph on which the simple cycle search algorithm is executed by this object.
 void setGraph(DirectedGraph<V,E> graph)
          Sets the graph on which the simple cycle search algorithm is executed by this object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TiernanSimpleCycles

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


TiernanSimpleCycles

public TiernanSimpleCycles(DirectedGraph<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 DirectedGraph<V,E> getGraph()
Returns the graph on which the simple cycle search algorithm is executed by this object.

Specified by:
getGraph in interface DirectedSimpleCycles<V,E>
Returns:
The graph.

setGraph

public void setGraph(DirectedGraph<V,E> graph)
Sets the graph on which the simple cycle search algorithm is executed by this object.

Specified by:
setGraph in interface DirectedSimpleCycles<V,E>
Parameters:
graph - the graph.

findSimpleCycles

public List<List<V>> findSimpleCycles()
Finds the simple cycles of the graph.
Note that the full algorithm is executed on every call since the graph may have changed between calls.

Specified by:
findSimpleCycles in interface DirectedSimpleCycles<V,E>
Returns:
The list of all simple cycles. Possibly empty but never null.


Copyright © 2013. All rights reserved.