单源最短路径SSSP算法中使用了 松弛(relaxation)操作,即更新两点的最短路径

形象的理解:

原来用一根橡皮筋连接a、b两点,现在有一点v到b的距离更短,则用v点替换橡皮筋的a点,使得v、b连接在一起。这样缓解橡皮筋紧绷的压力,使其变得松弛,即松弛操作。

我们规定每个节点都有一个 dist 值,dist[v] 值记录的是从源点可达的顶点v的最短距离,每个节点也都有一个p指针指向他的前驱节点。松弛操作就是去更新 dist 的值。

                                                       

源点是节点S,以S点为起点计算到A、B点的最短路径。

节点B的 dist 值为8,表示从源点 S 到 B之前的最短距离是8,而节点A的 dist 值为3,表示从源点 S 到 A 之前的最短距离是3。而当我们发现AB这个边时,以A为父节点,从 A 到 B 的距离比较近 3+2=5,比8要小,所以我们去更新 B 的 dist 值,同时把 B 的前驱节点设置成 A。这个过程就是松弛操作。

松弛操作 伪代码:对边(u,v)进行的松弛操作

每个单源最短路径算法中都会调用INITIALIZE-SINGLE-SOURCE,然后重复对边进行松弛的过程。另外,松弛是改变最短路径和前趋的唯一方式。各个单源最短路径算法间区别在于对每条边进行松弛操作的次数,以及对边执行松弛操作的次序有所不同。在Dijkstra算法以及关于有向无回路图的最短路径算法中,对每条边执行一次松弛操作。在Bellman-Ford算法中,每条边要执行多次松弛操作。

单源最短路径SSSP之松弛操作相关推荐

  1. 你必须会的--Dijkstra算法--单源最短路径问题

    文章目录 一.算法原理 1.基本原理 2.如何保存最短路径? 二.算法实战一 1.测试 2.结果 二.算法实战2 Input Output Sample Input Sample Output 一.算 ...

  2. 算法导论之单源最短路径

    单源最短路径,在现实中是很多应用的,是图的经典应用,比如在地图中找出两个点之间的最短距离.最小运费等.单源最短路径的问题:已知图G=(V,E),找出给定源顶点s∈V到每个顶点v∈V的最短路径.单源最短 ...

  3. 单源最短路径bellman算法

    介绍 在一个权重,有向图G=(V,E)中,连接所有顶点且拥有最小权重值的路径是此图的单源最短路径.单源最短路径可以解决许多最短路径问题的变种:如一个顶点到其它所有顶点最短距离,2个顶点对之间的最短距离 ...

  4. Dijkstra算法求解单源最短路径问题

    文章目录 一 前言 二 Dijkstra 算法讲解 1. 贪心算法的证明 2. 算法实现说明 3. 初版Dijkstra算法代码 三 时间复杂度优化 1. 优化策略 2. 优化后的代码 四 结语 一 ...

  5. 算法设计与分析课程复习笔记11——单源最短路径

    算法设计与分析课程复习笔记11--单源最短路径 单源最短路径 最短路径问题 输入:有权有向图G=(V,E) 路径p={ v 0 , v 1 , . . . , v k v_0, v_1, . . . ...

  6. 四种不同单源最短路径算法性能比较

    四种不同单源最短路径算法性能比较   一.最短路径问题描述 单源最短路径描述:给定带权有向图G=(V,E),其中每条边的权是非负实数.另外,还给定V中的一个顶点,称之为源.现在要计算从源到其他各顶点的 ...

  7. 图算法:2、计算带有负权值的单源最短路径:Bellman-Ford算法

    原文地址:http://www.wutianqi.com/?p=1912 相关文章: 1.Dijkstra算法: http://www.wutianqi.com/?p=1890 2.Floyd算法: ...

  8. 图论(单源最短路径)

    一.基础 1.最短路径问题的形式: 单源最短路径:希望找到从源节点s到每个结点的最短路径: 单目的地最短路径:希望找到从每个结点到给定目的地的最短路径,只需将图的每条边方向翻转过来,就可以转化成单源最 ...

  9. 四种单源最短路径算法

      一.最短路径问题描述 单源最短路径描述:给定带权有向图G=(V,E),其中每条边的权是非负实数.另外,还给定V中的一个顶点,称之为源.现在要计算从源到其他各顶点的最短路径的长度.这里的路径长度指的 ...

最新文章

  1. java jsp中控件绑定_jsp页面常用控件
  2. 美国将对所有墨西哥输美商品加征关税,为何日本股市反而大跌?
  3. $(document).ready(function(){});不执行
  4. GANs(生成对抗网络)初步
  5. 1月17日云栖精选夜读:阿里云云数据库开了一个未来大会,谈了谈2038年的数据库趋势...
  6. linux centos 安装mysql,linux/centos安装mysql
  7. 复旦大学入学计算机考试大纲,《计算机办公自动化》课程入学考试考核大纲和样题-复旦大学外国留学生...
  8. altium summer 9导入orcad dsn文件的方法
  9. 大学的第一堂必修课:军训
  10. SurfacePro6解决亮度自动调节问题
  11. 中国十大最具影响力黑客
  12. MATLAB算法实战应用案例精讲-【数模应用】小批量梯度下降(MBGD)(附Python和MATLAB代码)
  13. windows打开虚拟键盘命令
  14. 笔记-中项/高项学习期间的错题笔记1
  15. 浅谈综述论文:文献综述
  16. 系统跟服务器的区别,域名服务器与根服务器区别
  17. 对折纸张(蓝桥杯真题)
  18. 使用numpy实现李代数se(3)和SE(3)之间的指对数映射
  19. WebStorm license server
  20. 解读LM79测试项目及LM80的区别

热门文章

  1. InnoDB学习笔记--锁
  2. android开启服务应用禁止被杀死,Android Service服务如何不被杀死
  3. Ubuntu网络图标消失,连不上网的解决办法
  4. 武林外传—武三通的zuul之惑
  5. 《考研数据结构》复习讲义 全网最全~
  6. Flask后端开发(二) - Flask的练习(入门)
  7. JAVA WEB 开源CMS系统,可用来二次开发
  8. VulnHub渗透测试实战靶场 - Odin:1
  9. 学习C语言,困难吗?
  10. html5魔塔编辑器安卓版,Mota: 纪元魔塔前传。童年魔塔记忆。使用手机编写的5000行代码...