Dijkstra
Dijkstra
迪杰斯特拉

- S:已求出最短路径的顶点的集合
- V-S=T:尚未确定最短路径的顶点集合
将
-
初使时令
S={V0},T={ 其余顶点} ,T 中顶点对应的距离值,若存在<V0,Vi> ,为<V0,Vi> 弧上的权值( 和SPFA初始化方式不同) ,若不存在<V0,Vi> ,为Inf 。 -
从
T 中选取一个其距离值为最小的顶点W( 贪心体现在此处) ,加入S( 注意不是直接从S 集合中选取,理解这个对于理解vis 数组的作用至关重要) ,对T 中顶点的距离值进行修改:若加进W 作中间顶点,从V0 到Vi 的距离值比不加W 的路径要短,则修改此距离值( 上面两个并列for 循环,使用最小点更新) 。 -
重复上述步骤,直到
S 中包含所有顶点,即S=V 为止( 说明最外层是除起点外的遍历) 。

0,3,4
3,0,-2
4,-2,0,
用