有人可以解释一下这个“nx.connected_components()”的作用吗?

ast*_*luv 6 networkx python-2.7

我从 git 得到了一些代码,我试图理解它,这是其中的一部分,我不明白这段代码的第二行

G = nx.Graph(network_map)  # Graph for the whole network
components = list(nx.connected_components(G))
Run Code Online (Sandbox Code Playgroud)

这个函数有什么作用connected_components呢?我浏览了文档但无法正确理解它。

zoh*_*kom 7

nx.connected_components(G)将返回 “节点集的生成器,每个节点对应 G 的每个组件”。Python 中的生成允许以惰性方式迭代值(即,仅在必要时生成下一项)。

该文档提供了以下示例:

>>> import networkx as nx
>>> G = nx.path_graph(4)
>>> nx.add_path(G, [10, 11, 12])
>>> [len(c) for c in sorted(nx.connected_components(G), key=len, reverse=True)]
[4, 3]
Run Code Online (Sandbox Code Playgroud)

让我们看一下:

G = nx.path_graph(4)- 创建有向图 0 -> 1 -> 2 -> 3

nx.add_path(G, [10, 11, 12])- 添加到 G:10 -> 11 -> 12

所以,现在 G 是一个有 2 个连通分量的图。

[len(c) for c in sorted(nx.connected_components(G), key=len, reverse=True)]- 从最大到最小列出 G 中所有连通分量的大小。结果为 [4, 3],因为 {0, 1, 2, 3} 的大小为 4,而 {10, 11, 12} 的大小为 3。

回顾一下 - 结果是 G 中所有连接组件的生成器(惰性迭代器),其中每个连接组件只是一组节点。