QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2815|回复: 1
打印 上一主题 下一主题

[其他资源] 最短路径dijkstra算法

[复制链接]
字体大小: 正常 放大

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-8-5 15:09 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
最短路径
当图为带权图时,把一个从顶点V0到图中任意顶点的路径所经过边的权值之和,定义为该路径的带权长度,把带权路径长度最短的那条路径称为最短路径。
对于最短路径有下面两种说法:. _. j# H# m4 @8 k/ e

* L0 y3 _0 z& F; U2 y5 ~
在最短路径中遇到不同的问题我们应该用那种方法呢?具体方法如下图所示:

1 g' G) _5 p* p% G0 ?! X8 U
首先我们来看最短路径dijkstra算法,他是寻找单源最短路径的。我们需要3个数组final[5],dist[5],path[5]。具体含义如下所示:其中最短路径长度是v0到该节点的最短路径
) y8 K, ]3 E" l- e' m. W& s- a- v) E7 `
首先,我们从v0开始,v0可以到v1v4。我们先把他们的路径长度提案先到最短路径长度上,并修改前驱,前驱为v0。此时的v1v4都没有找到最短路径,只有v0找到了到v0的最短距离,距离为0。在第一轮中循环遍历所有节点,找到没有确定最短路径且dist最小的顶点我们选取v4,说明找到了v0v4的最短路径,(如果不是最短路径他只能走v1那条路线,但是他已经超过了5,走v1路线一定不是最短的)
对其他finalfalse的节点进行更新,经过v4出去的节点有三个,将其全部更新,将v4到其他三个节点与v4记录中的最短路径相加,如果路径大于记录的路径长度则不用更新。最终更新结果如下图所示:
此时我们最短路径长度已经有两个确认了,寻找剩下的长度最小的V3,将v3final改为true,对v1v2的最短路径进行更新。其中v3指向的节点只有v2v3的最短路径为77+6=13<14。将v2节点的最短路径更改为13,且前去改为v3
之后再次寻找最小长度,为v1,将v1final改为true,从v1指出的阶段有v28+1=9<13.更新最后节点v2节点的最短路径,将其final改为true,更新其前驱为v1,结果如下:
可以观察到从v0v1的最短距离为8,到v2的最短距离为9v37v45。那么如何寻找路径呢?已知到v2的长度为9,我们寻找他的前驱,前驱为1v1的前驱为v4v4的前驱为v0,我们就可以得到它的最短路径了,v0 ->v4 ->v1->v2

7 a: Q% D% j% v+ [3 v+ `
由于图片上传有限制,图片都在附件中

5 v8 f$ Y, r( k2 U; F3 `  s- S# m% Q+ A, K- c! S, X$ F

最短路径djkstral.docx

855.07 KB, 下载次数: 0, 下载积分: 体力 -2 点

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

1

主题

3

听众

132

积分

升级  16%

  • TA的每日心情
    慵懒
    2023-9-10 01:49
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    自我介绍
    我是2021级大三的一名学生
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-17 09:46 , Processed in 0.464598 second(s), 58 queries .

    回顶部