You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用NetworkX的dijkstra_path求最短路径长度及获取路径权重?

NetworkX 最短路径距离相关问题解答

嘿,我来帮你搞定这两个NetworkX的问题!

1. 如何用dijkstra_path函数获取最短路径的长度?

nx.dijkstra_path()返回的是最短路径的节点序列(比如从节点1到节点2的路径是[1,2]),如果要得到这条路径的总权重长度,你可以搭配nx.path_weight()函数来计算:

import networkx as nx

# 优化后的图定义(无向图无需重复添加双向边)
G = nx.Graph()
G.add_edge(1, 2, weight=450)
G.add_edge(1, 3, weight=390)
G.add_edge(1, 4, weight=550)
G.add_edge(1, 8, weight=1310)
G.add_edge(2, 3, weight=300)

# 获取最短路径的节点序列
path = nx.dijkstra_path(G, source=1, target=2)
# 计算该路径的总权重长度
path_length = nx.path_weight(G, path, weight='weight')
print(path_length)  # 输出:450

2. 直接获取最短路径的距离/权重,无需路径本身

当然有专门的函数!nx.dijkstra_path_length()就是干这个的——它直接返回源节点到目标节点的最短路径总权重,省去了先获取路径的步骤,效率更高:

# 直接计算节点1到节点3的最短路径权重
distance = nx.dijkstra_path_length(G, source=1, target=3)
print(distance)  # 输出:390(对比1->2->3的750,这是更短的路径权重)

另外提个小细节:你用的是nx.Graph()(无向图),这类图的边默认是双向可达的,所以不需要重复添加(1,2)和(2,1)这样的边,加一次就够啦~

内容的提问来源于stack exchange,提问作者houssem zeiri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:28:37