Package classycle.graph
Class StrongComponentProcessor
- java.lang.Object
-
- classycle.graph.GraphProcessor
-
- classycle.graph.StrongComponentProcessor
-
public class StrongComponentProcessor extends GraphProcessor
A processor which extracts the strong components of a directed graph. A strong component is a maximal strongly connected subgraph of a directed graph. The implementation is based on Tarjan's algorithm.- Author:
- Franz-Josef Elmer
-
-
Constructor Summary
Constructors Constructor Description StrongComponentProcessor(boolean calculateAttributes)Creates an instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidfinishProcessing(Vertex[] graph)Adds all arcs to the strong components.StrongComponent[]getStrongComponents()Returns the result ofGraphProcessor.deepSearchFirst(classycle.graph.Vertex[]).protected voidinitializeProcessing(Vertex[] graph)Initializes processing.protected voidprocessAfter(Vertex vertex)Processes the specified vertex after all its outgoing arcs are processed.protected voidprocessArc(Vertex tail, Vertex head)Processes the arc specified by tail and head vertices.protected voidprocessBefore(Vertex vertex)Processes the specified vertex before its outgoing arcs are processed.-
Methods inherited from class classycle.graph.GraphProcessor
deepSearchFirst, process
-
-
-
-
Method Detail
-
getStrongComponents
public StrongComponent[] getStrongComponents()
Returns the result ofGraphProcessor.deepSearchFirst(classycle.graph.Vertex[]).
-
initializeProcessing
protected void initializeProcessing(Vertex[] graph)
Description copied from class:GraphProcessorInitializes processing. Will be called in methodGraphProcessor.deepSearchFirst(classycle.graph.Vertex[]).- Specified by:
initializeProcessingin classGraphProcessor
-
processBefore
protected void processBefore(Vertex vertex)
Description copied from class:GraphProcessorProcesses the specified vertex before its outgoing arcs are processed.- Specified by:
processBeforein classGraphProcessor- Parameters:
vertex- Vertex to be processed.- Throws:
java.lang.IllegalArgumentException- if vertex is not an instance ofAtomicVertex.
-
processArc
protected void processArc(Vertex tail, Vertex head)
Description copied from class:GraphProcessorProcesses the arc specified by tail and head vertices.- Specified by:
processArcin classGraphProcessor- Parameters:
tail- Tail vertex of the arc.head- Head vertex of the arc.- Throws:
java.lang.IllegalArgumentException- if tail and head are not an instances ofAtomicVertex.
-
processAfter
protected void processAfter(Vertex vertex)
Processes the specified vertex after all its outgoing arcs are processed.- Specified by:
processAfterin classGraphProcessor- Parameters:
vertex- Vertex to be processed.- Throws:
java.lang.IllegalArgumentException- if vertex is not an instance ofAtomicVertex.
-
finishProcessing
protected void finishProcessing(Vertex[] graph)
Adds all arcs to the strong components. There is an arc from a strong component to another one if there is at least one arc from a vertex of one component to a vertex the other one.- Specified by:
finishProcessingin classGraphProcessor
-
-