動态规划的优化讲义.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
動态规划的优化讲义

动态规划的优化 一、时间上的优化 花店橱窗布置问题(IOI99试题)。假设想以最美观的方式布置花店的橱窗,有F束花,每束花的品种都不一样,同时,至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,并从左到右,从1到V顺序编号,V是花瓶的数目,编号为1的花瓶在最左边,编号为V的花瓶在最右边,花束可以移动,并且每束花用1到F的整数唯一标识,标识花束的整数决定了花束在花瓶中列的顺序,即如果I<J,则花束I必须放在花束J左边的花瓶中。例如,假设杜鹃花的标识数为1,秋海棠的标识数为2,康乃馨的标识数为3,所有的花束在放入花瓶时必须保持其标识数的顺序,即:杜鹃花必须放在秋海棠左边的花瓶中,秋海棠必须放在康乃馨左边的花瓶中。如果花瓶的数目大于花束的数目,则多余的花瓶必须空,即每个花瓶中只能放一束花。 每一个花瓶的形状和颜色也不相同,因此,当各个花瓶中放入不同的花束时,会产生不同的美学效果,并以美学值(一个整数)来表示,空置花瓶的美学值为0。在上述例子中,花瓶与花束的不同搭配所具有的美学值,可以用如下表格表示: 花瓶1 花瓶2 花瓶3 花瓶4 花瓶5 杜鹃花 7 23 -5 -24 16 秋海棠 5 21 -4 10 23 康乃馨 -21 5 -4 -20 20 根据表格,杜鹃花放在花瓶2中,会显得非常好看,但若放在花瓶4中则显得很难看。 为取得最佳美学效果,必须在保持花束顺序的前提下,使花的摆放取得最大的美学值,如果具有最大美学值的摆放方式不止一种,则输出任何一种方案即可。题中数据满足下面条件:1≤F≤100,F≤V≤100,-50≤AIJ≤50,其中AIJ是花束I摆放在花瓶J中的美学值。输入整数F,V和矩阵(AIJ),输出最大美学值和每束花摆放在各个花瓶中的花瓶编号。 【分析】问题实际就是给定F束花和V个花瓶,以及各束花放到不同花瓶中的美学值,需要你找出一种摆放的方案,使得在满足编号小的花放进编号小的花瓶中的条件下,美学值达到最大。 (1)将问题进行转化,找出问题的原型。首先,看一下上述题目的样例数据表格。 将摆放方案的要求用表格表现出来,则摆放方案需要满足:每行选且只选一个数(花瓶);摆放方案的相邻两行中,下面一行的花瓶编号要大于上面一行的花瓶编号两个条件。这时可将问题转化为:给定一个数字表格,要求编程计算从顶行至底行的一条路径,使得这条路径所经过的数字总和最大(要求每行选且仅选一个数字)。同时,路径中相邻两行的数字,必须保证下一行数字的列数大于上一行数字的列数。 看到经过转化后的问题,发现问题与例题4-5的数字三角形问题十分相似,数字三角形问题的题意是: 给定一个数字三角形,要求编程计算从顶至底的一条路径,使得路径所经过的数字总和最大(要求每行选且仅选一个数字)。同时,路径中相邻两行的数字,必须保证下一行数字的列数,与上一行数字的列数相等或者等于上一行数字的列数加1。 上例中已经知道:数字三角形中的经过数字之和最大的最佳路径,路径的每个中间点到最底层的路径必然也是最优的,可以用动态规划方法求解,对于“花店橱窗布置”问题经过转化后,也可采取同样的方法得出本题同样符合最优性原理。因此,可以对此题采用动态规划的方法。 (2)对问题原型动态规划方法的修改。“数字三角形”问题的动态规划方法为:已知它是用行数来划分阶段。假设用a[i,j]表示三角形第i行的第j个数字,用p[i,j]表示从最底层到a[i,j]这个数字的最佳路径(路径经过的数字总和最大)的数字和,易得问题的动态转移方程为: p[n+1,j]=0 (1≤j≤n+1) p[i,j]=max{p[i+1,j],p[i+1,j+1]}+a[i,j] (1≤j≤i≤n,其中n为总行数) 分析两题的不同之处,就在于对路径的要求上。如果用path[i]表示路径中第i行的数字编号,那么两题对路径的要求就是:“数字三角形”要求path[i]≤path[i+1]≤path[i]+1,而本题则要求path[i+1]path[i]。 在明确两题的不同之后,就可以对动态规划方程进行修改了。假设用b[i,j]表示美学值表格中第i行的第j个数字,用q[i,j]表示从表格最底层到b[i,j]这个数字的最佳路径(路径经过的数字总和最大)的数字和,修改后的动态规划转移方程为: q[i,V+1]= -∞ (1≤i≤F+1) q[F,j]=b[F,j] (1≤j≤V) q[i,j]=max{q[i+1,k] (j<k≤V+1)}+b[i,j] (1≤i≤F,1≤j≤V) 这样,得出的max{q[1,j]}(1≤j≤V)就是最大的美学值,算法的时间复杂度为O(FV2)。 (3)对算法时间效率的改进。

文档评论(0)

cwhs + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档