簡體   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