迪杰斯特拉算法。简单理解。内含示例

参考视频:https://www.bilibili.com/video/BV1oV411R7Yo

视频讲解通俗易懂。建议1.5倍速食用!

下面的总结,估计仅仅适合我自己看。不太明白的地方。请去原视频观看!

目的就是生成一个优先队列(最小的优先):

  1. 1、从A开始,先把每一 个点边计算出来,入列
  2. 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

结束!

猜你喜欢

转载自blog.csdn.net/weixin_42859280/article/details/105904904