狄克斯特拉算法由荷兰计算机科学家于1959年提出,是求解最短路径问题的经典方法。该算法在实际中广泛应用,如交通导航、网络路由和路径规划等领域,具有重要的理论与实践价值。
1、 算法思路
2、 给定一个带权无向图G={E,V},其中V为顶点集,E为边集,所有边的权重均为正数。指定两个顶点s和d,均属于V,分别作为起点与终点。
3、 计算从源节点s到其余各节点的最短路径距离。
4、 初始时,除起点A外,其余各点的距离值均设为无穷大。
5、 刷新邻距信息
6、 起点A的邻接点为B和D,依据边AB与AD的权重,更新其对应距离值。
7、 删除距离最短的点D
8、 因A的邻接点为B和D,且B的距离值2大于D的距离值1,故优先移除距离较小的D节点。
9、 从已移除的D开始更新操作
10、 计算D的各邻居节点距离,即AD分别与DC、DF、DG、DE、DB权重之和。
11、 移除B
12、 从剩余节点中选取距离最短的B(距离为2)进行移除,同时更新其相邻节点信息。
13、 D的距离无需更新,因其值已确定;E的距离同样无需更改,由于路径BD加DE的总长为5,大于先前得出的3。
14、 移除E
15、 从剩余节点中选取距离最短的E(距离为3)进行移除,同时更新其相邻节点信息。
16、 由于邻居B和D已被移除,无需进行更新;同时distance(G)也保持不变,因为BE加GE等于16,大于当前distance(G)的值5,不满足更优条件。
17、 移除C
18、 从剩余节点中选取距离最短的C(距离为3)删除,并同步更新其邻接点信息。
19、 移除G
20、 删除F后,按规则更新其余节点距离
21、 至此,已求出起点A到各顶点的最短路径,完整实现了Dijkstra算法的计算过程。

