动态规划 1【信息技术】.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文档。上传文档
查看更多
动态规划(一) 背景 近年来,涉及动态规划的各种竞赛题越来越多,每一年的NOI几乎都至少有一道题目需要用动态规划的方法来解决。 动态规划算法通常用来解决最优化问题。这些问题可能存在多个解,每个解具有一个值。我们希望找到一个具有最优(最大或最小)值的解。在动态规划算法中,主要关心的是找到一个最优解和求出最优解的值,而不是找出所有的最优解。 背景 动态规划算法可分解成从先到后的4个步骤: 1. 描述一个最优解的结构; 2. 递归地定义最优解的值; 3. 以“自底向上”的方式计算最优解的值; 4. 从已计算的信息中构建出最优解的路径。 其中步骤1~3是动态规划求解问题的基础。如果题目只要求最优解的值,则步骤4可以省略。 从一个例子谈起 问题: 求城市间最短通路. 设有如图所示的N座城市, 相邻城市之间有若干条通路, 线上的数字表示通路的距离. 试求出从A到D的最短距离. 最短通路问题的解结构 分析: 我们可以用搜索,枚举图中的每条路径。但当图的规模大起来时,搜索的效率显然是非常低的。让我们试着用动态规划的思路来分析这道题: 动态规划策略的第一步是描述一个最优解的结构。对最短通路问题解的结构,我们这样来分析: 从图中可以看到,从A点要到D点必然要经过B1和B2中的一个。到底选择B1还是B2,不能只比较A到B1和A到B2这两段的长度。本问题的性质表明:局部最优并不能保证全局最优。例如,按照局部最优的策略选择的路径是:A-B2-C3-D,路径长度为11。而实际上A-B1-C2-D才是最优解,其路径长度为10。所以“贪心法”在本题中不可用。 最短通路问题的解结构 因此,我们既要考查选择B1的解又要考查选择B2的解。然后再比较两个解,看哪个最优。 首先,我们假定选择B1的解是最优的,也就是说A-B1…D是最短通路。那么一个关键的观察是:B1 …D也必须是最短的。为什么? 证明如下: 假设从B1到D还有更短的路径,那么替换掉组成A -B1…D的路径,必然就得到一个更短的A-D的通路,这与题目假设A -B1…D是最短通路相矛盾。因此,B1 …D是最短通路。 同理,我们假定选择B2的解是最优的,即A-B2 …D是最短通路。那么B2 …D也必须是最短通路。 最短通路问题的解结构 更一般地说,对最短通路问题,问题的一个最优解(找到从A到D的最短通路)中包含着子问题(找到从B1到D的最短通路或从B2到D的最短通路)的一个最优解。 我们把这一性质称为最优子结构。最优子结构是可以应用动态规划解题的标志性特点之一。 最短通路问题的解结构 最优子结构性质表明我们可以利用子问题的最优解来构造问题的最优解。 对最短通路问题,子问题的最优解这样来构造问题的最优解: 问题的最优解 = MIN(B1~D的最优解+A~B1的长度,B2~D的最优解+A~B2的长度) 因此,为了解决A~D的最短通路问题,我们必须首先解决B1~D的最短通路问题和B2~D的最短通路问题。这显然是一个递归的过程。 递归地定义最优解的值 动态规划策略的第二步是根据子问题的最优解递归地定义问题的最优解的值。我们用 MD(v)表示点v到点D的最短通路的长度,用w(v,u)表示点v到点u的线段长度, d(v)是与v相邻的节点的集合。那么根据前面的分析就有: 递归地定义最优解的值 根据这个这个公式,我们可以推导出: MD(A) = min{w(A,B1)+MD(B1), w(A, B2)+MD(B2)} MD(B1)= min{w(B1,C1) + MD(C1), w(B1, C2)+MD(C2)} MD(B2)= min{w(B2,C2) + MD(C2), w(B2,C3)+MD(C3)} MD(C1)= min{w(C1,D)+MD(D)} MD(C2)= min{w(C2,D)+MD(D)} MD(C3)= min{w(C3,D)+MD(D)} MD(D) = 0 递归边界条件 MD(C1) = 4 MD(C2) = 3 MD(C3) = 5 MD(B1) = 5 MD(B2) = 9 MD(A) = 10 上述手工方式推导出本题的解是为了让大家熟悉递归法求解问题的过程。根据上述递归式写出相应的递归程序应当是不难的事情。留给大家做课后练习。 自底向上计算最优解的值 如果我们满足于用递归式计算出问题的解,则没有达到动态规划的目的。通过分析前面递归计算过程,我们发现MD(C2)在计算MD(B1)和MD(B2)时均要用到,而在计算完MD(B1)后, 并没有保存MD(C2)的值, 所

文档评论(0)

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

1亿VIP精品文档

相关文档