图中的孤立的组

时间:2015-09-15 19:18:27

标签: python networkx

我想编写一段代码来检测图中的节点组。作为示例,请参阅附加的图像。在那里我绘制了一组包含3组节点的图表。算法的结果应该是{0,1,2},{3,4,6,7},{5,8}。

我的直觉是为标记找到的节点(它可以到达的节点)的每个节点运行DFS算法,如果我为节点0执行此操作,它将标记节点1和2.如果我运行它然后为节点1它将找不到,因为其组中的所有节点都已标记。每个节点DFS的每组发现节点将是一个组。最后,我将保留非空组。

我的问题是:我可以使用某种聚类算法找到这些组吗?

代码用于测试图:

import networkx as nx
g = nx.Graph()

g.add_edge(0, 1)
g.add_edge(1, 2)

g.add_edge(6, 7)
g.add_edge(4, 7)
g.add_edge(3, 4)

g.add_edge(5, 8)


from matplotlib import pyplot as plt
nx.draw(g)

plt.show()

Graph plot

修改

如下所述,答案是:

from networkx import connected_components
connected_components(g)

1 个答案:

答案 0 :(得分:1)

networkx的connected_components功能是您要找的?从图中,它返回一个列表生成器,每个生成的项目都是连接节点的列表。