动态规划 5【信息技术】.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文档。上传文档
查看更多
动态规划(五) 最小代价子母树-问题 问题描述:设有n堆沙子排成一排,其编号为1,2,3,…,n(n =100)。每堆沙子有一定的数量,如下表: 13 7 8 16 21 4 18 现要将n堆沙子归并为一堆。归并的过程为每次只能将相邻的两堆沙子堆成一堆,这样经过n-1次归并之后最后成为一堆。如上面7堆沙子,可以有多种方法归并成一堆。其中的2种方法入下图: 最小代价子母树-问题 最小代价子母树-分析 根据问题描述,深刻理解问题。画出一些简单的最小代价子母树。 (1)n=2 最小代价子母树-分析 (2)n=3 请你先画一画有几种堆法 最小代价子母树-分析 (3)n=4 请你先画一画有几种堆法。 最小代价子母树-分析 (3)n=4 时共有5种堆法。这5种堆法可以分成3类: 第1类:先归并1~3堆,再与第4堆归并。这是上图(a)、(b)的情形。可以看到(b)要占优是因为(b)中1~3堆是最小代价归并方案。 第2类:先归并1~2堆,3~4堆,再归并为一堆。这是上图(c)的情形。 第3类:先归并2~4堆,再与第1堆归并。这是上图(d) 、(e)的情形。可以看到(d)要占优是因为(d)中2~4堆是最小代价归并方案。 归纳上述分析,我们可以得出这样的结论: (1)如果把归并1~4堆看成整个问题,则这个问题可以分解为三个归并方案,每个归并方案包含1~2个子问题: ① 归并1~3;再与4归并 ② 归并1~2,归并3~4;再归并 ③ 归并2~4;再与1归并 (2)问题的最优解必然是这三种分解方案之一的结果为最优。从上图可以看到,是①方案的结果为最优。而①方案实际有两种堆法,可以看到最终入选的是归并1~3的最优解。也就是说,在问题(归并1~4堆)的一个最优解中,包含着子问题(归并1~3堆)的一个最优解。 最小代价子母树-分析 (3)请一定要注意的是,参与“竞选”的②③两种方案的子问题也必须是由子问题的最优解构成,否则根本没有机会获胜。例如,在归并2~4堆的子问题中,只有(d)有机会获胜,调小第4堆的数值可以实现这一点,大家可以试一试。但是不管怎样调小数值,(e)都不可能获胜。因为(e)不是归并2~4堆的最优解,(d)才是! 同样,在②方案中,归并1~2,归并3~4两个子问题也都是最优解。 (4)如果我们继续分析增加更多堆数进行归并的问题,就会发现n个沙堆归并时,会分解为n-1种类型: Case1: “归并”第1堆,归并2~n堆;再最后归并 Case2: 归并1~2堆,归并3~n堆;再最后归并 Case3: 归并1~3堆,归并4~n堆;再最后归并 …… Case n-2: 归并1~n-2堆,归并n-1~n堆;再最后归并 Case n-1: 归并1~n-1堆,“归并”第n堆;再最后归并 最小代价子母树-分析 在Case1和Case n-1两种情况中,都是一堆沙与另n-1堆沙归并。一堆沙没有归并代价,为了形式上的统一,我们把一堆沙的归并代价设为0。 这样,在所有n-1种情况中,都是先归并左右两个子问题,求出子问题的最小代价,再归并在一起。 致此,我们分析出了问题的最优子结构性质。 最小代价子母树-分析 递归地定义最优解的值 在前面的的分析中,我们看到问题的归并代价实际上由两部分组成: (1)归并树左右子树的最小代价之和 (2)归并树所有叶结点的权值之和 最小代价子母树-分析 递归地定义最优解的值 引入记号F(i,j)表示从第i堆沙到第j堆沙的归并最小代价。 F(1,1) =0 F(1,2)=20 F(1,3)=43 F(3,4)=? F(2,4)=? F(4,4)=? 最小代价子母树-分析 递归地定义最优解的值 引入记号G(i,j)表示第i堆沙到第j堆沙的数量和。 G(1,1)=13 G(1,2)=20 G(1,3)=28 G(2,3)=? G(2,4)=? 最小代价子母树-分析 递归地定义最优解的值 因此,F(1,4) = MIN{F(1,1)+F(2,4), F(1,2)+F(3,4), F(1,3)+F(4,4)}+G(1,4) {归并1~4} F(2,4)=MIN{F(2,2)+F(3,4), F(2,3)+F(4,4)}+G(2,4) {归并2~4} F(3,4)=MIN{F(3,3)+F(4,4)}+G(3,4) {归并3~4} F(1,3)=? F(1,2)=? 我们看到归并1~4沙堆的子问题不只包括1~2, 1~3等,还包括2~3, 3~4, 2~4等。因此我们定义问题时不能只定义为F(n), 意思是合并1~n堆沙。而必须定义为F(i,j). 最小代价子母树-分析 递归地定义最优解的值 F(i,j)= MIN{F(i,

文档评论(0)

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

1亿VIP精品文档

相关文档