Python:图中断开连接的组件中的所有最短路径
我正在计算规则网络中任意两个节点之间所有可能的最短路径。如果网络已连接(例如,最大组件=整个网络),则我没有问题 断开组件连接时会出现问题:假设节点Python:图中断开连接的组件中的所有最短路径,python,for-loop,error-handling,exception-handling,networkx,Python,For Loop,Error Handling,Exception Handling,Networkx,我正在计算规则网络中任意两个节点之间所有可能的最短路径。如果网络已连接(例如,最大组件=整个网络),则我没有问题 断开组件连接时会出现问题:假设节点n和节点j之间没有路径,则会引发NetworkXNoPath错误 我的问题:我想跳过所有未连接的节点对。我知道我需要一个if来检查是否存在引发的错误,但我不知道如何将其添加到我的代码中 我的代码用于计算图中任意两个节点之间的所有可能最短路径: import networkx as nx counts=OrderedDict()
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.dijkstra(F,n,j)
检查节点n
和节点j
之间是否存在边,如果缺少边,则会引发网络xnopath
错误,但是如何检查此错误以跳过一对未连接的节点呢?您可以使用python中的错误处理来完成此操作
try:
nx.bidirectional_dijkstra(F, n, j)
except NetworkXNoPath:
# do whatever you want
您可以使用此选项获得更多帮助只需对每个连接的组件进行计算即可。检查两个节点之间是否没有路径的测试可能会很昂贵
connected_components = nx.connected_component_subgraphs(G)
for component in connected_components:
#your code here.
请尝试使用try和,除此之外。你可以试试:nx.bidirectional_dijkstra(F,n,j)除了NetworkXNoPath:#做你想做的事。实际上,我不知道如何在这种情况下使用它,但我想这就是答案……实际上有一个
nx。
缺失,但它工作正常。谢谢但这只是为了,我们如何在有向图中处理它?