单源最短路问题
单源最短路问题是指:求源点到图中其余各顶点的最短路径。
这类问题如果使用DFS求解效率会很慢,而使用BFS就多了一个边权为一的限制,否则就会出错
于是乎就有了单源最短路径算法
Dijkstra单源最短路径算法
算法主要流程
我们用dis[ i ]表示从源点 s 到节点 i 的最短路径,dis[ s ] = 0;
1.找到距离源点最近的一个节点v,放入集合U。
2.用dis[ v ]和当前边的边权更新从v能够到达的所有节点的dis值。这一步被我们称为松弛操作。
3.重复以上两个步骤,直到遍历完所有s能够到达的点为止。
我们一起来看一个例子
这是一个带权图
首先,把源点放入集合中,进行松弛操作
找到dis最小的节点为W,将W放入集合中,进行松弛操作
找到dis最小的节点为E,放入集合,进行松弛操作
找到dis最小的节点为X,加入集合,进行松弛操作
以此类推