小编Dar*_*nco的帖子

如何在networkx中找到图的所有连接子图?

我正在开发一个 python 应用程序,我想列出所有可能连接的任何大小的子图,并从每个节点开始使用 NetworkX。

我只是尝试使用 itertools 库中的组合()来查找所有可能的节点组合,但它太慢了,因为它也搜索未连接的节点:

for r in range(0,NumberOfNodes)
for SG in (G.subgraph(s) for s in combinations(G,r):
    if (nx.is_connected(SG)):
        nx.draw(SG,with_labels=True)
        plt.show()
Run Code Online (Sandbox Code Playgroud)

实际输出是正确的。但是我需要另一种更快的方法来做到这一点,因为具有 50 个节点和 8 个作为 LenghtTupleToFind 的图的节点的所有组合都高达 10 亿(n!/r!/(nr)!)但只有其中的一小部分是连接子图所以是我感兴趣的。所以,有可能有一个功能来做到这一点?

对不起,我的英语,提前谢谢你

编辑

这是一个例子:

起始图示例

所以,我想要的结果:

[0]
[0,1]
[0,2]
[0,3]
[0,1,4]
[0,2,5]
[0,2,5,4]
[0,1,4,5]
[0,1,2,4,5]
[0,1,2,3]
[0,1,2,3,5]
[0,1,2,3,4]
[0,1,2,3,4,5]
[0,3,2]
[0,3,1]
[0,3,2]
[0,1,4,2]
Run Code Online (Sandbox Code Playgroud)

以及生成连通图的所有组合

python networkx

5
推荐指数
1
解决办法
3935
查看次数

标签 统计

networkx ×1

python ×1