Dijkstra算法是从一个顶点到其余各顶点的[最短路径]算法,解决的是有权图中最短路径问题。
主要特点是从起始点开始,采用[贪心算法]的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。
基本思想:
1、通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。
2、引进两个集合S和U。S集合
的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而U集合
则是记录还未求出最短路径的顶点(以及该顶点到起点s
的距离)。
3、初始时,S集合
中只有起点s
;U集合
中是除s
之外的顶点,并且U
中顶点的路径是”起点s
到该顶点的路径”。
4、从U
中找出路径最短的顶点,并将其加入到S
中;
5、更新U
中的顶点和顶点对应的路径。
6、循环执行4、5,直到遍历完所有顶点。