Package org.jgrapht.alg.connectivity
Class GabowStrongConnectivityInspector<V,E>
- java.lang.Object
 - 
- org.jgrapht.alg.connectivity.GabowStrongConnectivityInspector<V,E>
 
 
- 
- Type Parameters:
 V- the graph vertex typeE- the graph edge type
- All Implemented Interfaces:
 StrongConnectivityAlgorithm<V,E>
public class GabowStrongConnectivityInspector<V,E> extends Object
Computes the strongly connected components of a directed graph. The implemented algorithm follows Cheriyan-Mehlhorn/Gabow's algorithm presented in Path-based depth-first search for strong and biconnected components by Gabow (2000). The running time is order of $O(|V|+|E|)$.- Author:
 - Sarah Komla-Ebri
 
 
- 
- 
Field Summary
Fields Modifier and Type Field Description protected Graph<V,E>graphprotected List<Set<V>>stronglyConnectedSetsprotected List<Graph<V,E>>stronglyConnectedSubgraphs 
- 
Constructor Summary
Constructors Constructor Description GabowStrongConnectivityInspector(Graph<V,E> graph)Constructor 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Graph<Graph<V,E>,DefaultEdge>getCondensation()Compute the condensation of the given graph.Graph<V,E>getGraph()Return the underlying graph.List<Graph<V,E>>getStronglyConnectedComponents()Computes a list of subgraphs of the given graph.booleanisStronglyConnected()Returns true if the graph is strongly connected, false otherwise.List<Set<V>>stronglyConnectedSets() 
 - 
 
- 
- 
Constructor Detail
- 
GabowStrongConnectivityInspector
public GabowStrongConnectivityInspector(Graph<V,E> graph)
Constructor- Parameters:
 graph- the graph to inspect- Throws:
 NullPointerException- in case the graph is null
 
 - 
 
- 
Method Detail
- 
stronglyConnectedSets
public List<Set<V>> stronglyConnectedSets()
Description copied from interface:StrongConnectivityAlgorithmComputes aListofSets, where each set contains vertices which together form a strongly connected component within the given graph.- Returns:
 ListofSets containing the strongly connected components
 
- 
getGraph
public Graph<V,E> getGraph()
Description copied from interface:StrongConnectivityAlgorithmReturn the underlying graph.- Specified by:
 getGraphin interfaceStrongConnectivityAlgorithm<V,E>- Returns:
 - the underlying graph
 
 
- 
isStronglyConnected
public boolean isStronglyConnected()
Description copied from interface:StrongConnectivityAlgorithmReturns true if the graph is strongly connected, false otherwise.- Specified by:
 isStronglyConnectedin interfaceStrongConnectivityAlgorithm<V,E>- Returns:
 - true if the graph is strongly connected, false otherwise
 
 
- 
getStronglyConnectedComponents
public List<Graph<V,E>> getStronglyConnectedComponents()
Description copied from interface:StrongConnectivityAlgorithmComputes a list of subgraphs of the given graph. Each subgraph will represent a strongly connected component and will contain all vertices of that component. The subgraph will have an edge $(u,v)$ iff $u$ and $v$ are contained in the strongly connected component.- Specified by:
 getStronglyConnectedComponentsin interfaceStrongConnectivityAlgorithm<V,E>- Returns:
 - a list of subgraphs representing the strongly connected components
 
 
- 
getCondensation
public Graph<Graph<V,E>,DefaultEdge> getCondensation()
Description copied from interface:StrongConnectivityAlgorithmCompute the condensation of the given graph. If each strongly connected component is contracted to a single vertex, the resulting graph is a directed acyclic graph, the condensation of the graph.- Specified by:
 getCondensationin interfaceStrongConnectivityAlgorithm<V,E>- Returns:
 - the condensation of the given graph
 
 
 - 
 
 -