Warning

This documents an unmaintained version of NetworkX. Please upgrade to a maintained version and see the current NetworkX documentation.

strongly_connected_components_recursive

strongly_connected_components_recursive(G)[source]

Generate nodes in strongly connected components of graph.

Recursive version of algorithm.

Parameters:G (NetworkX Graph) – An directed graph.
Returns:comp – A generator of sets of nodes, one for each strongly connected component of G.
Return type:generator of sets
Raises:NetworkXNotImplemented: – If G is undirected

Examples

Generate a sorted list of strongly connected components, largest first.

>>> G = nx.cycle_graph(4, create_using=nx.DiGraph())
>>> G.add_cycle([10, 11, 12])
>>> [len(c) for c in sorted(nx.strongly_connected_components_recursive(G),
...                         key=len, reverse=True)]
[4, 3]

If you only want the largest component, it’s more efficient to use max instead of sort.

>>> largest = max(nx.strongly_connected_components_recursive(G), key=len)

See also

connected_components()

Notes

Uses Tarjan’s algorithm with Nuutila’s modifications.

References

[1]Depth-first search and linear graph algorithms, R. Tarjan SIAM Journal of Computing 1(2):146-160, (1972).
[2]On finding the strongly connected components in a directed graph. E. Nuutila and E. Soisalon-Soinen Information Processing Letters 49(1): 9-14, (1994)..