迪杰斯特拉算法 | 动画算法与数据结构

符号

数据
从起点到各节点的暂定最短距离 dist
在最短路径树中的父节点 parent
节点之间的距离 weight

起点的确定和初始化
将起点的最短距离初始化为 0 dist[s] ← 0
将其他节点的暂定距离初始化为大值 dist[v] ← INF
最短路径树的构建
寻找暂定距离最小的节点 # find minimum
指向暂定距离最小的节点 u
更新节点的暂定距离和父节点 if dist[v] > dist[u] + weight[u][v]:
    dist[v] ← dist[u] + weight[u][v]
    parent[v] ← u
表示最短路径树的暂定边 (v, parent[v])
扩展最短路径树 将 u 加入 T
最短路径树的输出
基于父节点的信息构建最短路径树

动画

起点的确定和初始化
迪杰斯特拉算法 | 起点的确定和初始化

最短路径树的构建
迪杰斯特拉算法 | 最短路径树的构建

最短路径树的输出
迪杰斯特拉算法 | 最短路径树的输出