某个函数(u,v) : 表示这个函数用到u、v这两个点

d[v] : 当前顶点v的值

w[u,...,v] : u到v一种路径的权值

一、松弛relax(u,v)

解释:这是一种计算起始点走到某个顶点要多远的算法。我们把每个顶点的值用来表示:出发点到该顶点的权值和(走到这要多远)。

实际操作:对任意访问到的一个顶点u,其中一个相邻的顶点v(u可能还有其他相邻顶点)来说:

顶点u的值 + 路(u,v)的权值 = 对应相邻顶点v的一个值(这个走法是新的,但值不一定是最小的)

如果算出来的“对应相邻节点的一个值”比“这个顶点v点目前的值”小,那就把这个值赋给对应相邻顶点v

​​​​​​​

二、一些性质

三角不等式的性质

对任意一条边(u,v),(s,v)的最短距离小于等于(s,u)的最短距离加(u,v)任意边(感觉没什么用啊)

上界性质

对所有顶点v,d[v] 肯定存在一个最小的数,这个数就是最短路径的权值,d[v]一但在变化中变成这个值就不会再变了。

没路径性质

出发点点u到顶点v没有路径,则v的值是无穷∞

收敛性

w(s,u,v)是图里的一条最短路径,如果d[u]是(s,u)的最短距离,那么Relax(u,v),此时d[v]是(s,v)最短距离

三、单个源点的最短路径

贝尔曼福特算法 Bellman-Ford Alogrithm(路的权可有负值,有向图)

算法思路:从出发点开始,对每条边疯狂地松弛。

  • 初始化,对每个定点赋值无穷大∞,复杂度:V上界
  • 对图里每一条边,不断松弛,执行 V(顶点的个数)-1 次,复杂度:O(V模E模)
  • 对图里的每条边u、v,如果d[v]大于d[u]加w(u,v),说明存在负权回路,表示没有最短路径复杂度:O(E模)
  • 如果都行,就实行

狄杰斯特拉算法 Dijkstra Algorithm(路的权必须为正值,有向图)

算法思路:搞一个队列存放未被作为松弛起点的顶点,不断找到里面值最小的顶点进行松弛、出队

  • 将其事顶点点赋值0,其他顶点赋值无穷大∞,并将所有顶点加入队列Q,集合S设为空
  • 只要Q不为空:找到具有最短路径估计的点u,把u相邻的所有的顶点松弛;把u出队,加入集合S,复杂度O(V模的平方)

这样子算出来,任何一个顶点u的值d[u]都是起始点s到顶点u的最小值

图片来自《算法设计与分析》张德富

仅供个人学习和他人参考之用

算法设计与分析:最短路径算法相关推荐

  1. 算法设计与分析——蒙特卡罗算法(简单、通俗、易懂)C++

    算法设计与分析--蒙特卡罗算法(简单.通俗.易懂) 虽然都是文字描述,但都是较为通俗的语言,相信你看完应该能理解 在实际应用中会遇到一些问题,不论采用确定性算法还是随机性算法,都无法保证每次能到到正确 ...

  2. 计算机算法设计与分析教学大纲,算法设计与分析的教与学(教学大纲)

    原标题:算法设计与分析的教与学(教学大纲) 课程代码:**** 课程负责人: **** 课程中文名称:算法设计与分析 课程英文名称:Designand Analysis of Algorithms 课 ...

  3. 计算机算法设计与分析读后感,算法设计与分析基础经典读后感有感

    <算法设计与分析基础>是一本由Anany levitin著作,清华大学出版社出版的胶版纸图书,本书定价:49.00元,页数:409,特精心从网络上整理的一些读者的读后感,希望对大家能有帮助 ...

  4. 程振波 算法设计与分析_算法设计与分析

    本书按照教育部*制定的计算机科学与技术专业规范的教学大纲编写,努力与国际计算机学科的教学要求接轨.强调 算法 与 数据结构 之间密不可分的联系,因而强调融数据类型与定义在该类型上的运算于一体的抽象数据 ...

  5. 算法设计与分析 ——插入排序算法与归并排序算法比较

    插入排序算法与归并排序算法比较 实验目的 通过插入排序算法与归并排序算法效率对比体会算法在求解问题中的重要性. 实验内容 分别编写函数实现插入排序算法和归并排序算法: 利用随机函数产生大量数据存入数组 ...

  6. 算法设计与分析_算法导论(CLRS)骨灰级笔记分享:目录

    倘若你去问一个木匠学徒:你需要什么样的工具进行工作,他可能会回答你:"我只要一把锤子和一个锯".但是如果你去问一个老木工或者是大师级的建筑师,他会告诉你"我需要一些精确的 ...

  7. 算法设计与分析python_Python算法设计与分析

    内容提要 本书内容包括算法初步.排序算法.查找.双指针问题.哈希算法.深度优先搜索算法.广度优先搜索算法.回溯算法.动态规划.贪心算法.分治算法.并查集.最短路径算法和数论算法等常见算法.每个算法都做 ...

  8. 算法设计与分析_算法设计与分析(第2版)第2章分治策略回顾

    YI时间|外刊|MM-DFW|机器学习系列 点击上方蓝字,关注给你写干货的松子茶 分治策略是通用算法设计技术之一,很多有效的算法是它的特殊实现,顾名思义就是分而治之.一个问题能够用分治法求解的要素是 ...

  9. python 算法设计与分析_算法设计与分析(黄建军)

    spContent=本课基于主讲教师在北京大学讲授数据结构与算法课(Python版)的多年教学实践经验,面向具有Python语言程序设计基础的大学生和社会公众,介绍常见的基本数据结构以及相关经典算法, ...

  10. 【算法设计与分析】算法的时间复杂度(介绍O渐近上界,Ω渐近下界,θ准确的界)

    什么是时间复杂度? 我们先看看一些函数的渐近表达式: 关于时间复杂度的基本要点: 时间复杂度反映的是随着问题规模的变大,计算所需的时间的增长速度,与系数的多少关系不大 算法的渐近时间复杂度,简称时间复 ...

最新文章

  1. c 添加mysql表单的一行数据类型_MySQL数据库基础
  2. (iPhone)怎样从photo album中获取所有图片 “****TWO*****” ---》 获取所有图片从Photo Album?...
  3. QT【001】- 基础写在前面的话
  4. 中国石化:五年要建充换电站5000座
  5. 重磅!中国科协发布2020重大科学问题和工程技术难题
  6. JS中图片缓冲loading技术的实例代码
  7. Cephalocon 2020首尔峰会取消
  8. 机房巡检为什么检查指示灯_小工具需要“检查引擎”指示灯
  9. WebService原理
  10. 23. 电容触摸按键实验
  11. 抖音短视频实操:抖音热门视频的分类特点,如何选择视频内容(上)
  12. 面试时,你会问面试官哪些问题?
  13. Android 基于 dlib 和 opencv 实现换脸(不需要依赖第三方关键点检测)
  14. 加州大学欧文分校6个最受欢迎的英语语法MOOC课程
  15. 可ping通主机而不能连上主机端口的一般原因
  16. HTMLCSS基础篇之十一:字体与颜色样式
  17. 在线网校平台搭建的流程
  18. 股豆网股票配资:A股集体大跌环保券商板块跌幅居前
  19. 利用 UMA 使硬件加速器可直接用于 TVM
  20. 1-2 四轴飞行器基本原理

热门文章

  1. linux查看硬盘占用情况
  2. IEnumerable 与 IQueryable
  3. Flex Ant自动构建
  4. javaScript---代码性能指标
  5. RDB分析工具redis-rdb-tools的安装
  6. Java8函数式编程(Lambda表达式,Stream流,Optional)
  7. 使用I18Next翻译激励应用
  8. 05-修改hosts优化github访问
  9. sql server的增删改查,删除列,范围查询
  10. Android通过goToSleep休眠后,CountDownTimer遇到的问题