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。
缺失,但它工作正常。谢谢但这只是为了,我们如何在有向图中处理它?