符号
| 数据 | ||
|---|---|---|
| 从起点到各节点的暂定最短距离 | dist | |
| 节点编号 | nodeId | |
| 在最短路径树中的父节点 | parent | |
| 节点之间的距离 | weight | |
| 起点的确定 | ||
|---|---|---|
| 将起点的最短距离初始化为 0 | dist[s] ← 0 | |
| 将其他节点的暂定距离初始化为大值 | dist[v] ← INF | |
| 最短路径树的构建 | ||
| 指向从堆中取出的最优的节点 | u | |
| 访问相邻节点,更新距离 | if dist[e.v] > dist[u] + e.weight: dist[e.v] ← dist[u] + e.weight 将 (dist[e.v], e.v) 插入 que parent[e.v] ← u |
|
| 表示最短路径树的暂定边 | (v, parent[v]) | |
| 扩展最短路径树 | T 中包含的节点 | |
| 最短路径树的输出 | ||
| 基于父节点的信息构建最短路径树 | ||
动画
起点的确定
最短路径树的构建
最短路径树的输出