单源最短路径问题之Dijkstra算法详解

来源:互联网 发布:怎么装修手机版淘宝 编辑:程序博客网 时间:2024/05/16 05:54

单源最短路径问题之Dijkstra算法详解

单源最短路径:给定一个图G=(V,E),找到从给定源结点sV到每个结点vV的最短路径。

Dijkstra算法

目标:是解决带权重的有向图的单源最短路径问题。
前提:假设对于所有的边(u,v)E,都有w(u,v)0
该算法会在运行过程中维护一个结点集合S

符号表示

V:所有结点的集合。
S:结点集合,确定最短路径结点的集合。
Q:最小优先队列。
s:源结点。
u:选择最短路径估计最小的结点。

算法伪代码

Alt text

松弛技术

Dijkstra算法中需要使用松弛技术。对于每个结点v,维持一个属性v.d,用来记录从源结点s到结点v的最短路径权重的上界,称为最短路径估计。
- 初始化操作
Alt text
- 松弛 relax(u,v,w)
Alt text
将从结点s到结点u之间的最短路径距离加上结点u与结点v的权重,并与当前的sv的最短路径进行比较,如果前者更小,则更新v.dv.π.

#最小优先队列

在该算法中,使用最小优先队列Q来保存结点集合,每个结点的关键值为其d值。
- EXTRACTMIN(Q)
最小优先队列中的操作,去掉并返回S中具有最小键值的元素。在这里,就是返回并去除具有最小d值的结点。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 妻子因为我欺骗她要跟我离婚怎么办 老婆用苹果手机共享我的位置怎么办 孕妇餐后2小时血糖偏高怎么办 孕妇血糖餐后2小时数值高怎么办 股市退市的话股民的钱怎么办 美股股票退市了手里的股票怎么办 坐高铁安检时怕把包包弄坏了怎么办 很贵的包包高铁安检怎么办 如果过高铁安检东西被扣留怎么办 邻居家小孩把我家东西弄坏了怎么办 邻居早上6点放音乐扰民怎么办 隔壁楼邻居天天放音乐很吵怎么办 发现老公在卧室安了摄像头怎么办 憋的尿又没有厕所的时候怎么办 一岁宝宝拉屎总是拉出血怎么办 孩子鼻窦炎鼻子堵有白色鼻涕怎么办 家里阳台上老是有蝙蝠趴着怎么办 空调太冷在空调房里该怎么办 分手了怎么办不要挽回要重新吸引 过敏体质没打疫苗的孩子入学怎么办 遇到不认识的小姐姐问我问题怎么办 小孩孑脖子洛忱了痛怎么办 挤奶把乳腺挤肿了不出奶怎么办 遇到好兄弟在背后捅刀子怎么办 面对出轨还不想离婚的老公怎么办 法院执行局把案划错了不承认怎么办 手机nfc功能被手机壳挡住怎么办 飞信短信登录验证码达到上限怎么办 手机自带短信软件没了怎么办 老婆出轨孩子又3个不知道怎么办 骑电动车摔跤小脚趾疼有点肿怎么办 第一次太疼了有心理阴影了怎么办 天梭机械表调了时间忽然慢怎么办 支付宝信用住到酒店没房间怎么办 拳头打在硬上骨头肿了怎么办 领导决策出现了失误你该怎么办 我的直销团队走到瓶颈了怎么办 孕妇8个月便秘大便带血怎么办 爱他美金装冲泡有泡沫怎么办 做雅思听力时理解不了原文怎么办 英国读语言班不想读研了怎么办