我正在計算常規網絡中任意兩個節點之間的所有可能的最短路徑。如果網絡連接(例如,最大的組件=整個網絡),我沒有問題。Python:圖中斷開組件的所有最短路徑
當我斷開組件時出現問題:假設節點n
和節點j
之間沒有路徑,則會引發NetworkXNoPath
錯誤。
我的問題:我想跳過所有未連接的節點對。我知道我需要一個if
來檢查是否存在提出的錯誤,但我不知道如何將它添加到我的代碼中。
我的用於計算圖中的所有的任何兩個節點之間的可能的最短路徑的代碼:
import networkx as nx
counts=OrderedDict()
for n in F.nodes(): counts[n]=0
for n in F.nodes():
for j in F.nodes():
if (n!=j):
gener=nx.all_shortest_paths(F,source=n,target=j)
for p in gener:
for v in p: counts[v]+=1
回顧一下:我可以使用nx.bidirectional_dijkstra(F, n, j)
到節點n
和節點之間檢查的邊緣的存在j
,並且如果缺少這樣的邊緣,則會引發NetworkXNoPath
錯誤,但是如何檢查此錯誤以跳過一對未連接的節點?
已嘗試使用嘗試,除此之外。你可以嘗試:nx.bidirectional_dijkstra(F,n,j),除了NetworkXNoPath:#你想要的。 – sumit
其實,我不知道如何使用它的這種情況下,但我想這是答案... – FaCoffee