解法分析 首先我们要知道,这个算法只不过是朴素迪杰斯特拉算法的过程的优化,其核心思路其实是不变的. 首先回忆朴素迪杰斯特拉算法: 初始化 遍历,找到最小的距离,标记(加入确认集合) 遍历,更新所有的距离 循环2,3 直到所有点 堆优化的算法就是将这两次遍历优化: 1.初始化堆,初始化链表 2.弹出堆头,标记(加入确认集合) 3.找到
优先队列下的迪杰斯特拉算法 首先由于加入到队列中的数据的值将不能改变,而有些点的最短距离更新时,还留在队列中的该点仍是该点更新之前的值,而此时的值已经成为了垃圾值(因为它已经不是该点的最短距离了,弹出之后更新的周围的点也不是最短距离)所以对于某些最短距离已经更新的点,再使用更新之前的点的值进行...