算法设计与分析 Dij证明
RT
Def:
δ(s,u): 表示从s到u的真实的最短路径
V是所有点的集合
S是已经添加的点的集合
性质1: 已经添加到S点中的点满足δ(s,x) = dist[x]
显然,对于源点s,满足该性质.对于源点s直接相连的点,亦满足。接下来就证明其他点加入到点集S时满足以下定理。(这里感觉不太严谨QAQ)
算法正确性证明:只需证明定理的正确性
定理: 在Dij算法中,顶点u被添加到S中时,dist[u] = δ(s,u)
证明: 采用反证法,实质是证明该命题的逆否命题成立.
假设对于点u被添加到S中时,dist[u] > δ(s,u).
那么存在一条路径满足路径长度 = δ(s,u),也就是最优解,假设它为路径P<s…x,y…u>
此处,x属于S,而y属于V - S.
由性质1可得: dist[x] = δ(s,x)
下面夹杂证明dist[y] = δ(s,y)
只需要证明 dist[y] >= δ(s,y) 且 dist[y] <= δ(s,y)
①显然,dist[y] >= δ(s,y),因为δ(s,y)是最优解.
②因为算法规定对于S中的点要进行边松弛操作,而x和y直接相连,所以y会被松弛。
满足dist[y] <= dist[x] + w(x,y) (1)
由于P是最优解,那么它上边的路径也是最优解(即最短路).
(上课的时候赵老师已经证明了,路径A是路径B的子路径,假设A不是最优,存在A‘ < A,A’ + left < A + left = B,说明B不是最优解,与已知矛盾。)
所以满足 δ(s,y) = δ(s,x) + w(x,y) (2)
由性质1, dist[x] = δ(s,x) (3)
由(1)(2)(3),得 dist[y] <= δ(s,x) + w(x,y) = δ(s,y)
所以dist[y] <= δ(s,y)
所以dist[y] = δ(s,y)
最短路径P<s…x,y…u> 中,y出现在u之前。因此:
dist[u] > δ(s,u) >= δ(s,y) = dist[y] (4)
u != y (5)
由(4)、(5),根据贪心选择性质,Dij将选择y点加入S而不是u点.
所以,如果dist[u] != δ(s,u), u就不会加入到S中.
逆否命题的正确性得以证明,所以原命题的正确性得到保证.
所以定理得证,Dij算法的正确性得以证明.
算法设计与分析 Dij证明相关推荐
- 【算法】算法设计与分析试题(含答案)
算法设计与分析试题 (中国科学院大学-陈玉福-2011秋) 一. 回答下列问题: (每小题5分) 1.陈述算法在最坏情况下的时间复杂度和平均时间复杂度:这两种评估算法复杂性的方法各自有什么实际意义? ...
- 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述
晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...
- 算法设计与分析——算法思想总结
算法设计与分析 1.分治法 分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同.递归的解这些子问题,然后将各子问题的解合并得到原问题的解. 分治法所能解 ...
- 【算法设计与分析】15 分治策略:芯片测试
上一篇文章学习了[算法设计与分析]14 分治算法的一般描述和分析方法 文章目录 1. 芯片测试 1.1 一次测试的过程 1.2 如何测试一块芯片的好坏 1.3 蛮力算法 1.4 分治算法设计思想 1. ...
- 【算法设计与分析】06 几类重要的函数
本篇文章中会用到上一篇文章的定理:[算法设计与分析]05 有关函数的渐进的界的定理 主要学习常见的一些函数的阶 1. 基本函数类 以下按阶的高低排序: 至少指数级: 2n, 3n, n!, - 多项式 ...
- 【算法设计与分析】05 有关函数的渐进的界的定理
上一篇文章学习了函数的渐近的界定义,本篇文章继续学习函数渐近的界定理.这些定理的证明,用到了函数渐近的界的定义.点击查看上一篇文章:[算法设计与分析]04 函数的渐进的界 文章目录 1. 定理1 1. ...
- 哈工大威海算法设计与分析_【斯坦福算法分析和设计02】渐进分析
点击上方蓝字,关注公众号 目录 1. The Gist 1.1 为什么要学它(Motivation) 1.2 High level idea 1.3 4个例子 2. Big-Oh Notation 2 ...
- 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...
中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...
- 【算法设计与分析】经典常考三十三道例题AC代码
❥小虾目前大三,我校在大一下开设<数据结构>这门课,大二上开了<算法设计与分析>这门课,很庆幸这两门课的上机考试总成绩一门100,一门99,最后总分也都90+.下文会给出机试的 ...
最新文章
- 尺度空间理论与图像金字塔
- 从头开始 Struts 2 入门
- html5 初试 indexedDB
- 1. face_generate.py
- weblogic环境搭建
- Dijkstra算法——计算一个点到其他所有点的最短路径的算法
- postMessage跨域、跨iframe窗口消息传递
- SSM整合 mybatis多条件查询与分页
- 嵌入式linux appace,嵌入式Linux攻略 ACE程序移植过程详细解析 — IT技术
- http status 400 – bad request 亚马逊_蛮拼的!这个亚马逊卖家为Prime Day做了这三大准备,销量暴涨58倍...
- qgc地面站如何导入离线地图_【技术贴第三期】如何玩转离线地图?
- 在Xcode编译的时候,报这个错误"library not found for -
- oracle backup exec,利用Backup Exec 2010进行异机恢复测试
- 学习笔记:简谈boost升压电路
- cad批量打印_CAD批量打印插件的安装与使用方法
- idea添加scala环境_Scala篇:Scala环境及IDEA配置
- 视频技术系列 - 分析业内数字版权管理DRM技术
- 虚拟机、云主机、VPS 三者之间的区别
- python断点续传下载_Python 3 爬虫|第12章:并发下载大文件 支持断点续传
- Vue中获取组件声明时的name属性