最长公共上升子序列(lcis)的平方算法.pdfVIP

  • 0
  • 0
  • 约3.78千字
  • 约 4页
  • 2021-03-06 发布于福建
  • 举报

最长公共上升子序列(lcis)的平方算法.pdf

最长公共上升子序列( LCIS)的 O(n^2)算法预备知识: 动态规划的基本思想, LCS,LIS。 问题: 字符串 a,字符串 b,求 a 和 b 的 LCIS(最长公共上升子序列)。 首先我们可以看到,这个问题具有相当多的重叠子问题。于是我们想到用 DP 搞。 DP 的首要任务是什么?定义状态。 1 定义状态 F[i][j]表示以 a 串的前 i 个字符 b 串的前 j 个字符且以 b[j] 为结尾 构成的 LCIS的长度。 为什么是这个而不是其他的状态定义?最重要的原因是我只会这个,还有 一个原因是我知道这个定义能搞到平方的算法。而我这只会这个的原因是,这 个状态定义实在是太好用了。这一点我后面再说。 我们来考察一下这个状态。思考这个状态能转移到哪些状态似乎有些棘 手,如果把思路逆转一下,考察这个状态的最优值依赖于哪些状态,就容易许 多了。这个状态依赖于哪些状态呢? 首先,在 a[i]!=b[j] 的时候有 F[i][j]=F[i-1][j] 。为什么呢?因为 F[i][j] 是以 b[j] 为 结尾的 LCIS,如果 F[i][j]0 那么就说明 a[1]..a[i] 中必然有一个字符

文档评论(0)

1亿VIP精品文档

相关文档