Dijkstra最短路径算法

 参考:(3条消息) Dijkstra算法图文详解_一叶执念的博客-CSDN博客_迪杰斯特拉算法

 如图,假设图中共有n条路径(如D-C-E),根据路径长度进行小到大排序。

1、起点到达某终点的距离是无穷符号,表示该起点还需要借助中间某个端点才能到达该终点,所以起点到该终点的距离肯定不是最小,因为起点到该中间端点的距离就小于起点到该终点的距离。

2、一旦确定某端点是当前最小距离端点,除了把该端点加入到S集合中,还需要把紧挨着该端点的邻接点也加入到比较的范围之列,进行下一轮比较,不是该端点邻接点的端点要么需要借助该端点的邻接点才能到达,要么需要借助当前已参与比较的其它端点才能到达,所以肯定不是最短的;另外由于下一轮最短的未必就是当前次最短的,起点到当前最短路径的邻近点的路径可能还小于当前次最短路径。

3、在当前可比较范围之列中,如果有多条到同一终点的路径,先比较这些到同一终点的路径,比出最短路径,其余路径都删除,由该最短路径代表其它删除路径进行参选比较当前最短路径。

4、图中的总共的n条路径由小到大排好序后,那么出现在最前面的到达不同终点的路径就是起点到该终点的最短路径,因为它们排在最前面,所以已经没有哪条到该相同终点的路径比它们更小的了,有也是更大排在了后面。

egg:

假如CE边的权值是2,那么从小到大前几长度依次是:

路径                长度

D--->C               3

D--->E               4

D--->C--->E       5

D--->E--->F       6

........

虽然D->C->E排在D->E->F之前,但是D到F的最短距离还是D->E->F,且D->C->E因为有D->E更短距离,可以删掉。

5、无穷符号即表示距离无穷大,也可以表示当前可能是最短路径的可能性为零。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值