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

Dijkstra's Algorithm能否处理负权边?《算法图解》习题相关疑问咨询

Dijkstra's Algorithm question from grokking algorithms book

问题解答

首先明确两个基础结论:

  • Dijkstra算法本身不支持处理带负权边的图,本质逻辑是:算法运行过程中只要把某个节点标记为「已找到最短路径、加入已处理集合」,后续就不会再更新这个节点的距离。如果图中存在负权边,后续可能出现更短的路径可以刷新已处理节点的距离,就会导致最终结果出错。
  • 这道题在有负权边的前提下仍有可行解,核心原因是这张特定的图的负权边,刚好不会触发上述的错误场景。

你可以手动模拟一次算法运行流程验证:

  1. 初始状态:起点距离设为0,其余所有节点距离设为无穷大,已处理集合为空
  2. 每轮选出当前未处理节点里距离最小的节点,更新它所有邻接节点的距离,再把该节点加入已处理集合
  3. 直到终点被加入已处理集合,结束运算

这张图里唯一的负权边,它指向的目标节点,在被这条负权边更新距离的时候,还没有被标记为已处理,所以算法可以正常完成更新,最终得到正确的最短路径结果。
简单说就是:不是Dijkstra突然支持负权边了,只是这道题的图结构特殊,负权边没有触碰到Dijkstra的错误边界,所以存在可行解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:15:00