Python:图的断开组件中的所有最短路径

标签 python for-loop error-handling exception networkx

我正在计算常规网络中任意两个节点之间的所有可能的最短路径。如果网络已连接(例如,最大组件=整个网络),我就没有问题。

当我断开组件连接时,就会出现问题:鉴于节点 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.bi Direction_dijkstra(F, n, j)来检查节点n之间是否存在边> 和节点 j,如果缺少这样的边,它会引发 NetworkXNoPath 错误,但如何检查此错误以便跳过一对未连接的节点?

最佳答案

只需对每个连接的组件进行计算即可。检查两个节点之间是否不存在路径的测试成本可能很高。

connected_components = nx.connected_component_subgraphs(G)
for component in connected_components:
    #your code here.                            

关于Python:图的断开组件中的所有最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37070222/

相关文章:

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

python - 使用 word2vec 进行情感分析

python - 如何在 SQLAlchemy 中查询关联表?

c++ - 为什么 auto 类型不能与 for 语句 C++ 中的其他内置类型共存

javascript - 从列表javascript向表添加行

vb.net - 这个 for 循环中是否有一个隐藏的迭代计数器?

java - 如何监听 servlet 请求范围内的所有错误?

python - 从 QComboBox 中的样式列表中使用 QStyleFactory 设置样式

python - 如何使用 Python 在 Pandas 中应用多个条件?

error-handling - nextjs - 在开发模式下使用 _error.js