繁体   English   中英

从 NetworkX 图中查找连接组件内的子图

[英]Find Subgraphs inside a Connected Component from a NetworkX Graph

我已经构建了一个包含 50000 个节点和大约 1 亿条边的 NetworkX Graph。 我使用 nx.connected_components(G) 方法列出了该组的所有连接组件。 这种方法导致我拥有节点集群,这样每个节点都有一条路径可以到达该集群中的每个其他节点。 现在我想要的是,在这些连接的组件中的每一个中,我想找到子图/子簇,以便这些子图中的每一个都通过一条边相互连接。 NetworkX 中是否有我可以直接使用的方法或任何其他可以完成此操作的方法? 对不起,我对图论很陌生,所以需要一点指导。

你想要的是最小跨越三 使用networkx你可以这样做:

import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_edges_from([(1,2), (1,3), (2,3), (4,5), (4,6), (5,6)])
nx.draw(nx.minimum_spanning_tree(G), with_labels=True)
plt.show()

但是,我有点怀疑networkx是否能够根据此基准测试在如此多的边缘上执行。 我已经在igraph上测试了connected components算法,它也对我igraph (当然,速度要快得多),因此您可能还想寻找基于igraph的解决方案。

结果

在此处输入图片说明

如果我理解正确,那么对于每个子图,您想找到大小为 1 的所有图切割,即您想找到所有边,如果去掉,则将图划分为两个子图。 这些边被称为,有有效的算法可以找到它们。 networkx 中的实现可以通过networkx.algorithms.bridges.bridges访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM