QQ登录

只需要一步,快速开始

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

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

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

1002

主题

4

听众

2526

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-8-5 15:09 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
最短路径
当图为带权图时,把一个从顶点V0到图中任意顶点的路径所经过边的权值之和,定义为该路径的带权长度,把带权路径长度最短的那条路径称为最短路径。
对于最短路径有下面两种说法:3 I0 A% Y  @' V) z2 `. I
- x4 ?9 i" M! K
在最短路径中遇到不同的问题我们应该用那种方法呢?具体方法如下图所示:
& B4 X) l( [6 Q7 E
首先我们来看最短路径dijkstra算法,他是寻找单源最短路径的。我们需要3个数组final[5],dist[5],path[5]。具体含义如下所示:其中最短路径长度是v0到该节点的最短路径2 N- E3 S: u/ _4 |) H
6 o  T4 |# P" g; |) v) `, S. v/ c
首先,我们从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
- a* n! P: K2 Y4 h  f% n. `
由于图片上传有限制,图片都在附件中
, _( m! t% n1 j6 y9 \1 j* G" k

+ i1 Z4 a. m3 j! g# a" e! q, |

最短路径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, 2024-9-21 17:16 , Processed in 0.452805 second(s), 58 queries .

    回顶部