因此,首先让我们定义Dijkstra算法: Dijkstra的算法在具有非负边权重的有向图中找到单源最短路径。 我想知道如何使用 Dijkstra 算法将最短路径形式s保存到t 。 我在Google上进行了搜索,但找不到任何特别的内容;我也更改了Dijkstra算法,但无法得到任何答案。如何使用 Dijkstra 保存从s到t的最短路径? 我知道我的问题是基本的和不专业的,但是任何帮助将不胜感激。感谢您考虑我的问题。
如果您从给出的Wikipedia链接中查看伪代码,则会在其中看到一个名为的数组prev[]。对于图中的每个节点 v* ,此数组均包含源节点 s 与 v 之间最短路径中的 前一个 节点 u 。(此数组也称为 前置 数组或 父 数组。) ***
prev[]
换句话说, s 和 v 之间 的 最短路径是:
s -> u -> v where u = prev[v]
从 s 到 u 的路径之间可能有多个节点,因此要重构从 s 到 v 的路径,您只需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