材料
- ①G<V,E> v为节点,E为边,需要知道权重
- ②array d[v] 原点到节点v的最短路径
- ③array pai/pre[v] 节点v的前驱节点
算法过程
- 第一步 初始化 , 原点为s, d[s],为0 ,其余节点 i d[i]无穷
- 第二步 (存在集合 S 和集合 Q,S+Q=V)
①开始: S为 空 , Q为 V
②进行: 选取Q中 距原点最近的 结点u ,从Q移到S。(开始时u为原点)
对 u指向的每条边 进行松弛操作,若改进,更新 d[] 与 pre[]
算法思想
Dijkstra采用 贪心策略 效率快 必须是 ***正权重***
- 疑惑:u加入到S后,d[u]为s到u的最短路径 见书证明