一尘不染

如何在dijkstra算法中保存最短路径

algorithm

因此,首先让我们定义Dijkstra算法:
Dijkstra的算法在具有非负边权重的有向图中找到单源最短路径。
我想知道如何使用 Dijkstra 算法将最短路径形式s保存到t 。
我在Google上进行了搜索,但找不到任何特别的内容;我也更改了Dijkstra算法,但无法得到任何答案。如何使用 Dijkstra
保存从s到t的最短路径?
我知道我的问题是基本的和不专业的,但是任何帮助将不胜感激。感谢您考虑我的问题。


阅读 732

收藏
2020-07-28

共1个答案

一尘不染

如果您从给出的Wikipedia链接中查看伪代码,则会在其中看到一个名为的数组prev[]。对于图中的每个节点
v* ,此数组均包含源节点 sv 之间最短路径中的 前一个 节点 u 。(此数组也称为 前置 数组或
数组。)
***

换句话说, sv 之间 最短路径是:

s -> u -> v
where u = prev[v]

su 的路径之间可能有多个节点,因此要重构从 sv 的路径,您只需prev[]使用主伪代码(
目标v )下面的代码片段沿数组定义的路径返回:

1  S ← empty sequence
2  u ← target
3  while prev[u] is defined:                 // Construct the shortest path with a stack S
4      insert u at the beginning of S          // Push the vertex onto the stack
5      u ← prev[u]                             // Traverse from target to source
6  end while
2020-07-28