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

Dan*_*l.V 9 algorithm graph dijkstra shortest-path

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

bea*_*ker 12

如果你看一下你给出的维基百科链接中的伪代码,你会看到一个名为的数组prev[].对于图中的每个节点v,该数组包含源节点sv之间的最短路径中的前一节点u.(此数组也称为前置数组.)

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

s -> u -> v
where u = prev[v]
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

  • 我们如何存储重复的路径? (2认同)