Dijkstra 算法总是给出最短路径吗?

tec*_*amp 4 graph dijkstra

我正在学习 Dijkstra 算法并进行了基本查询。我有一个如下图所示的图表..(非负节点):

A---2-----B------16------D-----3-----F
* *
* *
3 4
* *
C-- --------2----------------------------------------E

从上面的图表显示看不清楚,但 AC 的距离为 3,EF 的距离为 4。

我有兴趣找到 A 和 F 之间的最短路径。

考虑目标节点 F。当我们考虑其最近的节点时,我们得到 D(DF 的权重为 3,EF 的权重为 4)。然而,当我们沿着这条路径走时,我们得到的最短路径为:A、B、D、F(总距离:19)。

快速观察告诉我们,最短路径实际上是 A、C、E、F(距离:9)。然而,由于在第一步中,E 比 D 更远,所以我们跟随 D。

我在这里错过了什么吗?Dijkstra 算法在这里显然没有显示正确的结果。

Bri*_*ian 5

是的,当边缘成本均为正时,Dijkstra 总是给出最短路径。然而,当存在负边缘成本时,它可能会失败。