1. 简述
Dijkstra 算法是从一个顶点到其余各顶点的最短算法,解决的是有权图中最短路径问题。
从源点 source 开始,采用贪心算法,每次找到距离 source 最近且未加入最短路径顶点集合的顶点 v,并根据 v,更新 source 到其他顶点的距离。
2. 举例
dist:source 到各个顶点的最短距离数组
S:已确定到 source 最短路径的顶点集合
初始化:
S = {}
dist = [∞, ∞, 10, ∞, 30, 100]
第一步:将 source 加入 S
S = {0}
dist = [0, ∞, 10, ∞, 30, 100]
第二步:找出 dist 中,下标不在 S 中的最小的距离的下标——2,加入S,更新 dist
S = {0, 2}
dist = [0, ∞, 10, 60, 30, 100]
第三步:找出 dist 中,下标不在 S 中的最小的距离的下标——4