- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 动态规划PPT
第8章 动态规划;引言;动态规划的适用条件;;动态规划的适用条件;注意:
动态规划一般用于多阶段最优化问题
但是书中
8.1 计算二项式系数
8.2.1 warshall
并不是最优化问题。
8.2.2 floyed
8.3 最优二叉查找树
8.4 背包问题
才是最优化问题;8.1 计算二项式系数;动态规划算法
把二项式系数记录在一张n+1行k+1列的表中;;;8.2 Warshall算法和Floyd算法;8.2.1 Warshall算法;d;;void WARSHALL
输入:M,图的邻接矩阵
输出:M*,图的传递闭包矩阵
for (i=1; i= n; i++ )
for (j=1; j= n; j++ )
if(M [j,i]=T)
for (k=1; i= n; i++ )
m [j,k] + =m [i,k]; (4)
该算法由邻接矩阵在原地构建传递闭包上述算法必定会在有限时间内结束运行。
WARSHALL算法的时间复杂度为O(n3)。;算法思想说明
搭桥找路径
选取一个顶点作为桥梁,考察所有顶点,是否可以通过桥梁到达其它的顶点。
用I控制依次选择各顶点做桥梁。
用j控制当选定某顶点做为桥梁时,依次考察所有顶点。
用k控制当桥梁选定时,考察某一顶点通过该桥梁是否可以到达其它顶点。
; 外循环第一次,选择0作为桥梁
考察0是否可以通过0到达其它顶点 1 0 1 0 0 1
考察1是否可以通过0到达其它顶点 1 1 1 0 0 1
考察2是否可以通过0到达其它顶点 0 1 1 0 0 0
考察3 0 0 1 1 1 0
考察4 0 0 0 0 1 1
考察5 0 0 0 0 1 1;
外循环第二次,增加1为桥梁
考察0是否可以通过1到达其它顶点 1 0 1 0 0 1
考察1是否可以通过1到达其它顶点 1 1 1 0 0 1
考察2是否可以通过1到达其它顶点 1 1 1 0 0 1
考察3 0 0 1 1 1 0
考察4 0 0 0 0 1 1
考察5 0 0 0 0 1 1
;循环6次结束,M最终记录了闭包矩阵的信息。
实现细节说明之一
if(M [j,i]=T)
for (k=1; i= n; i++ ){…}
当M [j,i]=F时说明什么?
考察的顶点j到桥梁i没有路径,
也就意味着该顶点不可能通过选择的桥梁建立到其它顶点的路径,因此不必考察它通过该桥梁是否可以到???其它顶点,即内循环不用做。
;实现细节说明之二
if(M [j,i]=T)
for (k=1; i= n; i++ )
m [j,k] + =m [i,k]
红色部分等同于
m [j,k] =m [i,k]× m [j,i] + m [j,k]
加号为逻辑加(OR),乘号为逻辑乘(and)
表达式含义:考察顶点j到k是否经过i有路径
观察m [j,k]的布尔值由什么决定
顶点j到k原来有路径
顶点i到k有路径(j到i有路径隐含在if条件中)
;定理 WARSHALL算法的输出矩阵是输入关系矩阵的传递闭包矩阵。
证 注意到算法的输入、输出矩阵都存储在M中,与M相应的关系用A表示。
输入关系用R表示,其传递闭包用R*表示。则须证在算法运行结束时
1. A R*
2. R* A
定理的证明分成相应的两部分。;;8.2.2 Floyd算法;Floyd算法中体现的动态规划思路:
用一系列n阶矩阵来计算一个n顶点加权图的距离矩阵
矩阵D(k)的第i行第j列的元素dij (k)为从第i个顶点到第j个顶点之间最短路径的长度,并且路径的每一个中间顶点的编号不大于k
D(0) 为权重矩阵D(n)为距离矩阵
(1)找出最优解的性质,并刻画其结构特征
(2)递归地定义最优值。
(3)以自底向上的方式计算出最优
文档评论(0)