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

java.lang.Object
  extended by org.jgrapht.alg.cycle.SzwarcfiterLauerSimpleCycles<V,E>
Type Parameters:
V - the vertex type.
E - the edge type.
All Implemented Interfaces:
DirectedSimpleCycles<V,E>

public class SzwarcfiterLauerSimpleCycles<V,E>
extends Object
implements DirectedSimpleCycles<V,E>

Find all simple cycles of a directed graph using the Schwarcfiter and Lauer's algorithm.

See:
J.L.Szwarcfiter and P.E.Lauer, Finding the elementary cycles of a directed graph in O(n + m) per cycle, Technical Report Series, #60, May 1974, Univ. of Newcastle upon Tyne, Newcastle upon Tyne, England.

Author:
Nikolay Ognyanov

Constructor Summary
SzwarcfiterLauerSimpleCycles()
          Create a simple cycle finder with an unspecified graph.
SzwarcfiterLauerSimpleCycles(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

SzwarcfiterLauerSimpleCycles

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


SzwarcfiterLauerSimpleCycles

public SzwarcfiterLauerSimpleCycles(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.