繁体   English   中英

将所有边连接到 NetworkX 多向图中的一组节点的最快方法?

[英]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_componentsweakly_connected_components检索所有节点的各个组件。 然后,您可以构建所有组件的并集,其中至少有一个节点,以检索所需的一组节点。

暂无
暂无

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

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