[英]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.