networkx.algorithms.components.kosaraju_strongly_connected_components

kosaraju_strongly_connected_components(G, source=None)[source]

Generate nodes in strongly connected components of graph.

Parameters
GNetworkX Graph

A directed graph.

Returns
compgenerator of sets

A generator of sets of nodes, one for each strongly connected component of G.

Raises
NetworkXNotImplemented

If G is undirected.

Notes

Uses Kosaraju’s algorithm.

Examples

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

>>> G = nx.cycle_graph(4, create_using=nx.DiGraph())
>>> nx.add_cycle(G, [10, 11, 12])
>>> [
...     len(c)
...     for c in sorted(
...         nx.kosaraju_strongly_connected_components(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.kosaraju_strongly_connected_components(G), key=len)