定义
迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
算法核心:‘起始点到中间点距离’ + ‘中间点到某点距离’ < ‘起始点到某点距离’, 则更新起始点到某点的距离。
接下来结合一个例子来逐步讲解思路,请看下面这个有权图:
目标:从A到E的最短路径。
算法步骤
- 初始化各个点到各个点的距离(其中A点到A点本身的距离为0),没有相互连接的两个地点的距离先用无穷大表示,例如初始化A到D的距离为无穷大,设inf代表无穷大,初始化结果如下:
A点到各个点距离:[0, 3, 5, inf, inf]
B点到各个点距离:[3, 0, 1, 4, 5]
C点到各个点距离:[5, 1, 0, 2, inf]
D点到各个点距离:[inf, 4, 2, 0, 1]
E点到各个点距离:[inf, 5, inf, 1, 0] - 选择距离A点最近的点&#