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

时间:2019-01-06 02:11:42

标签: python-2.7 networkx

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

G = nx.Graph(network_map)  # Graph for the whole network
components = list(nx.connected_components(G))

此功能connected_components的作用是什么?我浏览了文档,但无法正确理解。

1 个答案:

答案 0 :(得分:2)

nx.connected_components(G)将返回"A generator of sets of nodes, one for each component of G"。 Python中的generator允许以惰性方式迭代值(即,仅在必要时才会生成下一项)。

文档提供以下示例:

>>> 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]

我们来看一下:

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中所有连接的组件上生成了一个生成器(惰性迭代器),其中每个连接的组件只是一组节点。