参考视频:https://www.bilibili.com/video/BV1oV411R7Yo
视频讲解通俗易懂。建议1.5倍速食用!
下面的总结,估计仅仅适合我自己看。不太明白的地方。请去原视频观看!
目的就是生成一个优先队列(最小的优先):
- 1、从A开始,先把每一 个点边计算出来,入列
- 2、如果这个顶点的所有边计算完毕,就出列
1,先计算,起点(图中为A)到各个相邻点的距离大小。生成一个队列。
2,如果,A点出发,所能够到达的所有点。已经“走完”。那么就将A点出发的所有相关的路径列。出列。
3,接着进行下一个。最短距离所对应的城市名字。并且以这个城市名字作为起点。
【本示例的第二个为C点!即是上一个过程的A点!】
然后,比较从新的起点C出发,A-C-B的距离和。是否比A-B的距离小。如果,A-C-B的距离比之前的A-B距离要小的话。那么就替换之前的A-B。
更新为下图:
剩下的以此类推。
4,最后得出的结果:
根据所得结果,每次想要找寻路径的时候。可以进行反推。
举例子:[结果只是相对于A点的!]
F到A最短:F-D-B-C-A
D到A最短:D-B-C-A
结束!