动态规划的优化和应用.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态规划的优化及应用 广东北江中学 卢彦丞 关键词:动态规划 优化 应用 目录 序 …………………………………………………………………2 [一] 动态规划的优化和特殊技巧 ………………………………3 改变状态表示 ……………………………………………3 预处理,必要时进行两次动态规划 ……………………7 针对“双向问题”的优化 ………………………………8 其他优化 …………………………………………………12 按特殊顺序进行动态规划 ………………………………15 把最优值问题转化为判定问题 …………………………16 [二]动态规划的应用 ……………………………………………18 计数 ………………………………………………………18 一些图论问题 ……………………………………………21 求第K优解 ………………………………………………21 [三]后记 …………………………………………………………24 序: 说起动态规划,大家一定不会陌生。这是因为自从21世纪伊始,各类信息学竞赛中的动态规划逐渐成为了主要题型之一。但是,越来越多的证据表明,动态规划并不是一件容易的事。而本文主要论的就是动态规划如何优化,以及它在一些什么地方有用武之地。也就是说,这篇论文讲的是关于“动态规划进阶”的。至于动态规划的基础知识,可以查阅有关资料,这里不再赘述。 注:在本文,例题列出状态转移方程后不再附标程,因为对于动态规划题来说,知道了状态转移方程后就可以自己写出程序了。 动态规划的优化和特殊技巧 也许大家会问,“动态规划算法是一种非常优的多项式时间算法,用得着优化吗?”“搜索需要优化,动态规划也需要吗?”差矣。虽然动态规划是一种多项式时间、多项式空间的算法,但是弄不好也会超时、爆空间。如,一道动态规划题,规模是1=n=1000,如果你写出个O(n3)的状态转移方程,不超时才怪呢!而如果把它优化成O(n2)的话,就基本上不会超时了。如果方程正确的话,你就能通过这道题了! 改变状态表示 众所周知,动态规划的核心是状态转移方程,而状态转移方程的关键是阶段的划分和状态的表示。所以说,状态表示得好不好,会决定着动态规划的其他一切因素,正可谓“牵一发,动全身”。有时候,改变一下状态表示,就可以在状态转移时,只让O(1)个状态转移到该状态,从而使时、空复杂度都减少一维。下面举几个例子: 花店橱窗布置(IOI99) 题目简述:有V个花瓶按顺序排成一行,最左边是1号,最右是V号。你有F束花要插在花瓶中,花束的编号决定了花束在花瓶中的排列顺序。即如果ij,则花束i所在的花瓶必须在花束j所在的花瓶的左边。如果花瓶数大于花束数,则多余的花瓶必须空置。每个花瓶最多只能放一束花。第i束花插在j号花瓶中的美学值为Ai,j。整个摆放方式的美学值为所有花束在所插花瓶中的美学值之和。现在给出一个Ai,j的矩阵,求具有最大美学值的摆放方式。(1=F=V=100,-50=Ai,j=50) 分析:由“花束的编号决定了花束在花瓶中的排列顺序”可知该问题具有“无后效性”,并且很容易得出该问题的“最优化原理”,所以这是一道动态规划题。 以花束划分阶段,设fi,j代表前i束花插进前j个花瓶中、并且第i个花束必须插进第j个花瓶中能产生的最大美学什,则可列出以下的状态转移方程: ……………………(1) f[F,V]即为最大美学值。 但是,这是个O(FV2)的方程,如果把F、V的范围调成1000会怎样?再说,虽然F、V的范围是100,但那是1999年的题啊!你以为那时候的机子有现在的这么快吗?弄不好就超时了!看来需要进行一点优化。不如我们重新考虑怎么样?以花瓶为阶段,设fi,j代表前i束花插进前j个花瓶中,但第i束花不一定插进第j个花瓶能产生的最大美学值,则可列出以下的状态转移方程: ……………………(2) f[F,V]即为最大美学值。 稍微对时间复杂度有点了解的人就会发现,(2)比(1)整整降了一维:(2)的时间复杂度为O(FV)。这时,这个方程不仅能轻松应付规模为100的小数据,应对那些更大的数据也不在话下了! 其实,如果把一个类似于“”的式子代入(1)也可以变换出(2),但何必那么麻烦呢?还不如脑筋一个大转弯,重新考虑来得更爽一些呢! 再来看一个很典型的例子: 多源多汇最短路问题 题目简述:给你一个带权(可能有负权,但一定没有负环)无向图/有向图,计算出每对顶点间的最短距离。 分析:这是一个很典型的问题,现在我们可以用Floyd-Warshall算法求解。但是,在不会Floyd-Warshall算法的情况下或者在该算法被发明之前怎么办?换句话说,Floyd-Warshall算法是如何得到的?…… 好吧,看看这道题,发现它有点“隐隐约约”地有首最优子结构,这“助长”了我们用动态规划的“苗头”。

您可能关注的文档

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档