本博文纯属本人学习记录之用,不喜勿喷!
单源最短路径
Dijkstra算法:
(图G)
设S是被探查的结点的集合,U是G中除S外的结点集合,初始时,S={s},d(s) =0,若s到U中的结点u有边,则d(u)=边上的权值或长度(具体自己定义),如果没有边,则d(u)=∞;
a.从U中选择一个到s距离最小的顶点v,将v加入到S中,此时的距离d(v)就是s到v的最短路径
b.以v为中间结点,重新考虑s到U中的各个结点的距离;如果通过v到U中的结点u的距离比原来不通过v的更小,则更新这个距离值,否则不更新
c.重复a、b直到所有结点都被包含到S中