Djkstra总结
迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。
它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。
1、指定一个节点,例如我们要计算 ‘A’ 到其他节点的最短路径
2、引入两个集合(S、U),S集合包含已求出的最短路径的点(以及相应的最短长度),U集合包含未求出最短路径的点(以及A到该点的路径,没有直接相连初始时为∞)
3、初始化两个集合,S集合为空,U集合中A->A = 0
,其他节点为∞。
4、从U集合中找出距离A最短的点C,加入S集合。
5、更新U集合路径,主要是计算与C相邻的节点到达A的代价值,且父节点设置为C,若相邻节点不可达则代价值为∞,若相邻节点已经在S中则计算该节点经过C到达A是否有更小的代价值,若有则将该节点的父节点改为C,即改为A->C->与C相邻节点。
6、循环执行 4、5 两步骤,直至把终点加入到S中,遍历结束。
参考链接:https://www.jianshu.com/p/ff6db00ad866