我正在开发一个 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)
以及生成连通图的所有组合