动态规划中的提纯.doc_第1页
动态规划中的提纯.doc_第2页
动态规划中的提纯.doc_第3页
动态规划中的提纯.doc_第4页
动态规划中的提纯.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

动态规划中的“提纯”动态规划中的“提纯”广东中山纪念中学 陈启峰【概述】动态规划中优化的方法有很多种,总的来说可以分为两种方法,即减少重复计算和减少冗余。这两种“提纯”方法都体现了动态规划的本质特征。减少重复计算一般从策略上着手,先找出重复计算的值,然后增添新的状态来存储该状态值;而减少冗余一般可以从状态和策略去优化,删除无用的状态和策略。通过下面这题的分析,希望能对大家起到抛砖引玉的作用。【关键字】 减少重复计算、减少冗余【正文】问题简述求两个序列的最长公共上升子序列(LCIS):给出两个长度分别为n,m的序列A和B。求出一个长度最长序列C,满足: ; C既是A的子序列又是B的子序列;题目分析:当看到这题的三个关键字最长、公共、上升时,我便不禁有似曾相识的感觉。如果抛开公共或者上升的要求,就是我们都熟悉的最长公共子序列(LCS)问题,和最长上升子序列(LIS)问题了!动态规划的首要任务是确定好状态。回顾LCS和LIS的状态表示方法,综合这两种状态表示方法的特性,便可以得到这题的一种状态表示:设表示到和到的LCIS的长度,其中要求A=B、必须选取A和B作为一个匹配。于是得到一个状态转移方程A这个动态规划的时间复杂度为O(n),显然是不尽人意的,需要进行“提纯”。 “提纯”方法1减少重复计算仔细分析不同状态的策略,易知意义相同的值会被计算了多遍。比如:对于任意的两个状态和,如果存在某个使得并且,那么在两个状态的策略选取时,里状态都被计算一次。计算某个状态集合,其实质是计算这个集合中状态值最大的状态,因此我们只需知道这个集合中的最大状态值就足够了。而形如的集合被计算多次,也就是这些集合的最大状态值被重复计算了,所以可以添增一种状态表示。于是得出双状态的状态转移方程B:这样总的时间复杂度是O(n),如果使用二叉查找树还可以使时间复杂度降到O(nlogn)。显然这样的“提纯”已经除去很多杂质了,但可别忘记还有另一把锋利的刀哦。_“提纯”方法2减少冗余冗余常常隐藏得很隐蔽,就像豪宅里的白蚁,不易被发现,所以要花多点时间和心思去发挖掘。在状态转移方程序B中,不难发现对于任意的一个状态,如果其最优策略k小于一个(表示满足=并且的最大的),那么。于是便产生一个猜想对于所有状态x,若其最优策略小于last,都有x= x?下面通过证明来证实这个猜想。证明:是的一个可行解:这可由的最优方案构造出来,只要将匹配换成就可以了,如下图:所以。当策略,总有:因为在的方案里加上匹配边便可得到的方案。如下图:综上所述,如果计算了,就不需要计算。有了证明以后,再对状态转移方程B进行改进,就得到了更优的状态转移方程C这个动态规划的总时间复杂度是O(n),应该说是不错的。总结动态规划的“提纯”没有固定的形式,我们就应用它时常常需要灵感。这种灵感不是空中楼阁,而是基于平时的思考和积累的经验。我们如果能常总结、常思考、常创新并持之以恒,就能掌握好这种方法。【感谢】 感谢宋新波老师、郭华阳向我提很多宝贵

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论