算法设计语言的第4章导论.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
西南科技大学计算机学院软件教研室 计算机算法基础 Fundamentals of Computer Algorithms 第四章 动态规划 杨春明 西南科技大学计算机学院软件教研室 第四章 动态规划 什么是动态规划 动态规划与多段图 每队结点之间的最短路径 0/1背包问题 货郎担问题 流水线调度问题 什么是动态规划 根据最优性原理创建的一种最优化问题的算法设计方法。 最优化问题 有这样一类问题,他们的活动过程可以分为很多个阶段,而且在任何一阶段后的行为都仅依赖于I阶段的过程状态,而与I阶段之前的过程是如何达到这种状态的方式无关,这样的过程就构成了一个多阶段决策过程。 什么是动态规划 多段图问题 什么是动态规划 最优性原理(Principle of Optimality) 无论过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策所产生的状态构成一个最优决策序列。 如果对于所求解的问题最优性原理成立;则说明用动态规划方法有可能解决该问题。而解决问题的关银在于获取各阶段问的递推关系式。 多段图问题 多段图G=(V,E)是—个有向图。它具有如下特性: 图中的结点被划分成k≥ 2个不相交的集合Vi ,1≤i≤k,其中V1和Vk分别只有一个结点s(源点)和t(汇点)。 图中所有的边u,v均具有如下性质:若u∈Vi ,则v ∈ Vi+1 ,1≤i≤k,且每条边u,v均附有成本c(u,v)。 从s到t的一条路径成本是这条路径上边的成本和。 多段图问题(multistage graph problem)是求由s到t的最小成本路径。 多段图问题 最优性原理对多段图成立 假设s,v2,v3,…,vk-1,t是一条由s到t的最短路径 再假设从源点s开始,以作出了到结点V2的决策,因此V2就是初始决策所产生的状态 如果V2把看成是原问题的一个子问题的初始状态,解决这个子问题就是找出一条由V2到t的最短路径 这条最短路径显然是v2,v3,…,vk-1,t 如果不是,设v2,q3,…,qk-1,t由V2到t的更短路径,则这条路径肯定比v2,v3,…,vk-1,t路径短,这与假设矛盾,因此最优性原理成立 0/1背包问题 背包问题中的xj限定只能取0或1值,用KNAP(1,j,X)来表示这个问题 最优化决策序列的表示 设S0是问题的初始状态。假定要作n次决策xi,1≤i≤n X1={r1,1,r1,2,…,r1,pj}是x1的可能决策值的集合,而S1,1是在选取决策值r1,j1以后所产生的状态, 1≤j1≤p1 又设F1,j1是相应于状态S1,j1的最优决策序列 则相应于S0的最优决策序列就是{r1,j1 F1,j1 | 1≤j1≤p1}中最优的序列,记作 如果已作了k-1次决策,1≤k-1n。设x1,…xk-1的最优决策值是r1,..,rk-1,他们所产生的状态为S1,…Sk-1 最优化决策序列的表示 又设Xk={{rk,1,rk,2,…,rk,pk}是xk的可能值的集合。 Sk,jk是选取rk,jk决策之后所产生的状态, 1≤jk≤pk Fk,jk 是相应于Sk,jk的最优决策序列。 因此,相应于Sk-1的最优决策序列是 于是相应于的最优决策序列为:r1,…,rk-1,Fk 向前处理法(forward approach) 从最后阶段开始,以逐步向前递推的方式列出求前一阶段决策值的递推关系式,即根据xi+1,…,xn的那些最优决策序列来列出求取xi决策值的关系式,这就是动态规划的向前处理法 向后处理方法(backward approach)就是根据x1,…,xi-1的那些最优决策序列列出求x的递推关系式。 多段图的向前处理和向后处理 0/1背包问题的向前处理和向后处理 多段图 多段图向前处理的算法 设P(I,j)是一条从Vi中的节点j到汇点t的最小成本路径,COST(I,j)表示这条路径的成本,根据向前处理方法有: 多段图 例子中5段图的实现计算步骤: COST(3,6)=min{6+COST(4,9),5+COST(4,10)}=7 COST(3,7)=min{4+COST(4,9),3+COST(4,10)}=5 COST(3,8)=min{5+COST(4,10),6+COST(4,11)}=7 COST(2,2)=min{4+COST(3,6),2+COST(3,7),1+COST(3,8)}=7 COST(2,3)=9 COST(2,4)=18 COST(2,5)=15 COST(1,1)=min{9+COST(2,2),7+COST(2,3),3+COST(2,4),2+COST(2,5)}=16 多段图 例子中5段图的实现计算步骤: 在计算每一个COST(I,j)的同时,几下每个状态(结点j)所做出的决策,设为D

文档评论(0)

贪玩蓝月 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档