QQ登录

只需要一步,快速开始

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

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

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

1171

主题

4

听众

2744

积分

该用户从未签到

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

5 o! z  ~7 f3 i6 B0 W
在最短路径中遇到不同的问题我们应该用那种方法呢?具体方法如下图所示:

& E" p8 _8 i' [) T  E. `% X
首先我们来看最短路径dijkstra算法,他是寻找单源最短路径的。我们需要3个数组final[5],dist[5],path[5]。具体含义如下所示:其中最短路径长度是v0到该节点的最短路径' l0 ]# d! G4 A; l

$ R  H# E# P1 K) i
首先,我们从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 |+ K" y6 ]% y: T! Q; w7 }# A. E
由于图片上传有限制,图片都在附件中
/ [0 g; o7 S# W: f- K" n' x; S

7 o4 D" ^: h4 S, l1 A# J

最短路径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, 2025-5-2 03:29 , Processed in 0.510496 second(s), 57 queries .

    回顶部