首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在NetworkX中查找所有结点对之间的所有最短路径

在NetworkX中查找所有结点对之间的所有最短路径
EN

Stack Overflow用户
提问于 2021-10-12 11:24:07
回答 2查看 433关注 0票数 2

我正在尝试获得无向无权图中所有节点对之间的所有最短路径。我目前使用的是nx.all_pairs_shortest_path(),但我不明白为什么它只为每对节点返回一条最短路径。我的图中有圈,所以在某些节点之间应该存在多个最短路径。有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2021-10-12 16:55:23

遍历图中的所有节点:

代码语言:javascript
运行
复制
results = []
for n1 in G.nodes():
    for n2 in G.nodes():
        shortest_path = nx.single_source_dijkstra(G, source=n1, target=n2, weight=f)
        results.append(shortest_path)
票数 5
EN

Stack Overflow用户

发布于 2021-11-06 00:48:41

我可能会迟到,但我刚刚遇到了同样的问题,这是我的解决方案:

代码语言:javascript
运行
复制
 def all_shortest_paths(G):
    a = list(nx.all_pairs_shortest_path(G))
    all_sp_list = []
    for n in range(len(G.nodes)):
      a1 = a[n][1]
      for k,v in a1.items():
        all_sp_list.append(len(v))
    return all_sp_list

我尝试的其他方法都变得非常非常慢,因为我的图有一堆节点,所以这是我最快的解决方案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69539672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档