strongly_connected_components#

strongly_connected_components(G)[source]#

生成图中强连通分量的节点。

Parameters:
GNetworkX 图

一个有向图。

Returns:
comp集合生成器

一个生成器,每个集合包含图 G 的一个强连通分量的节点。

Raises:
NetworkXNotImplemented

如果 G 是无向图。

Notes

使用 Tarjan 的算法[R827335e01166-1]_ 结合 Nuutila 的改进[R827335e01166-2]_。 算法的非递归版本。

References

[1]

深度优先搜索和线性图算法,R. Tarjan SIAM 计算杂志 1(2):146-160, (1972).

[2]

在有向图中寻找强连通分量。 E. Nuutila 和 E. Soisalon-Soinen 信息处理快报 49(1): 9-14, (1994).

Examples

生成一个按大小排序的强连通分量列表,从大到小。

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

如果只需要最大的分量,使用 max 比排序更高效。

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