簡體   English   中英

Networkx - 最短路徑長度

[英]Networkx - Shortest path length

我正在使用networkx來管理由50k節點組成的大型網絡圖。

我想計算一組特定節點之間的最短路徑長度,比如說N.
因為我正在使用nx.shortest_path_length函數。

在N的一些節點中,可能沒有路徑,因此networkx正在提升和停止我的程序。

有沒有辦法運行這個程序沒有任何錯誤?
並告訴shortest_path_length返回一些最大值?

代碼只是在循環中使用nx.shortest_path_length(G,i,j) 錯誤如下

raise nx.NetworkXNoPath("No path between %s and %s." % (source, target)) networkx.exception.NetworkXNoPath: No path between V and J

import networkx as nx
G=nx.Graph()
G.add_nodes_from([1,2,3,4])
G.add_edge(1,2)
G.add_edge(3,4)
try:
    n=nx.shortest_path_length(G,1,4)
    print n
except nx.NetworkXNoPath:
    print 'No path'

或者,取決於圖的類型 - 即有 ,強或弱連接,或無向 - 創建組件子圖(sub_G),即,

(G.subgraph(c) for c in connected_components(G))

或如果指示:

nx.weakly_connected_component_subgraphs(G)nx.strongly_connected_component_subgraphs(G)

此外,給定sub_G是有向圖,檢查其連接的強度,例如

nx.is_strongly_connected(sub_G)ng.is_weakly_connected(sub_G)

這些建議組合或單獨地減少了由於組件子圖的性質而對不存在的路徑進行不必要的檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM