动态规划中的提纯.docVIP

  • 2
  • 0
  • 约1.41千字
  • 约 5页
  • 2017-08-20 发布于重庆
  • 举报
动态规划中的提纯.doc

动态规划中的“提纯” 广东中山纪念中学 陈启峰 【概述】 动态规划中优化的方法有很多种,总的来说可以分为两种方法,即减少重复计算和减少冗余。这两种“提纯”方法都体现了动态规划的本质特征。减少重复计算一般从策略上着手,先找出重复计算的值,然后增添新的状态来存储该状态值;而减少冗余一般可以从状态和策略去优化,删除无用的状态和策略。 通过下面这题的分析,希望能对大家起到抛砖引玉的作用。 【关键字】 减少重复计算、减少冗余 【正文】 问题简述——求两个序列的最长公共上升子序列(LCIS): 给出两个长度分别为n,m的序列A和B。 求出一个长度最长序列C,满足: ① …… ; ② C既是A的子序列又是B的子序列; 题目分析: 当看到这题的三个关键字——最长、公共、上升时,我便不禁有似曾相识的感觉。如果抛开公共或者上升的要求,就是我们都熟悉的最长公共子序列(LCS)问题,和最长上升子序列(LIS)问题了! 动态规划的首要任务是确定好状态。回顾LCS和LIS的状态表示方法,综合这两种状态表示方法的特性,便可以得到这题的一种状态表示: 设表示到和到的LCIS的长度,其中要求A=B、必须选取A和B作为一个匹配。于是得到一个状态转移方程A 这个动态规划的时间复杂度为O(n),显然是不尽人意的,需要进行“提纯”。 “提纯”方法1——减少重复计算 仔细分析不同状态的策略,易知意

文档评论(0)

1亿VIP精品文档

相关文档