[英]Fastest way to get all edges connected to a set of nodes in a Multi Directed Graph in NetworkX?
给定一个nx.MultiDiGraph()
类型的大图G
,我如何以最有效的方式找到所有连接的节点?
我有一个包含 N 个节点的列表,我想找到连接到它的所有节点。
list_of_nodes = [Node1,Node2,Node3,Node4,...]
我知道一种方法,即使用bfs_tree
all_nodes = list(G.nodes())
find_all_connected_edges= []
[find_all_connected_edges.extend(nx.bfs_tree(G, x, reverse=False).edges()) for x in all_nodes]
这有效,但对于大量 N 来说很慢,有没有更好的方法来找到连接到网络中一组 N 个节点的所有边?
这取决于您想要哪种“连接节点”。 如果您希望所有节点都具有双向路径(u->v 和 v->u),您可以使用强连接组件的概念。 如果您不关心边缘的方向,您可以使用弱连接组件。
如果这些概念符合你的使用情况,您可以使用strongly_connected_components
或weakly_connected_components
检索所有节点的各个组件。 然后,您可以构建所有组件的并集,其中至少有一个节点,以检索所需的一组节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.