Class CycleDetector<V,E>
java.lang.Object
org.jgrapht.alg.cycle.CycleDetector<V,E>
- Type Parameters:
V- the graph vertex typeE- the graph edge type
Performs cycle detection on a graph. The inspected graph is specified at construction time
and cannot be modified. Currently, the detector supports only directed graphs.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classException thrown internally when a cycle is detected during a yes/no cycle test.private static classVersion of DFS which maintains a backtracking path used to probe for cycles. -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCycleDetector(Graph<V, E> graph) Creates a cycle detector for the specified graph. -
Method Summary
Modifier and TypeMethodDescriptionbooleanPerforms yes/no cycle detection on the entire graph.booleanPerforms yes/no cycle detection on an individual vertex.private voidFinds the vertex set for the subgraph of all cycles.Finds the vertex set for the subgraph of all cycles which contain a particular vertex.
-
Field Details
-
graph
-
-
Constructor Details
-
CycleDetector
-
-
Method Details
-
detectCycles
public boolean detectCycles()Performs yes/no cycle detection on the entire graph.- Returns:
- true iff the graph contains at least one cycle
-
detectCyclesContainingVertex
Performs yes/no cycle detection on an individual vertex.- Parameters:
v- the vertex to test- Returns:
- true if v is on at least one cycle
-
findCycles
-
findCyclesContainingVertex
Finds the vertex set for the subgraph of all cycles which contain a particular vertex.REVIEW jvs 25-Aug-2006: This implementation is not guaranteed to cover all cases. If you want to be absolutely certain that you report vertices from all cycles containing v, it's safer (but less efficient) to use StrongConnectivityAlgorithm instead and return the strongly connected component containing v.
- Parameters:
v- the vertex to test- Returns:
- set of all vertices reachable from v via at least one cycle
-
execute
-