算法设计与分析-最长公共子序列问题-动态规划算法.docxVIP

  • 13
  • 0
  • 约2.62千字
  • 约 9页
  • 2022-03-03 发布于上海
  • 举报

算法设计与分析-最长公共子序列问题-动态规划算法.docx

? ? 【算法设计与分析】最长公共子序列问题 动态规划算法 超详细 ? ? 最长公共子序列问题描述 注意:最长公共子序列不一定是连续序列。 例如:ASAFAGAHAJAK“与”AAAAAAA的最长公共子序列为:AAAAAA 公共子序列的定义 证明最优子结构性质 分析其递归关系式 分别将第一个序列的元素个数设置为0到m,在每一个第一个序列的元素个数0到m的情况下,用内循环让第二个序列的元素从0到n遍历。 也就是说,先从0开始,求解很小的子问题,然后将这些子问题的解存储起来,当求解更大的问题时,会用到这些子问题的结果。这时,直接访问之前计算过的结果,避免了重复运算,这就是动态规划的巧妙之处,也正是需要证明其最优子结构性质的原因。 计算最优值 运行效果 c数组表示当前状态下,最长公共子序列的长度。 s数组表示当前状态下,最长公共子序列的长度是由哪种情况(1/2/3)计算出来的。 调试中的一个过程截取: 比如说,求解ABCDEFGHI和BDFI的最长公共子序列。 第一步(填0): 当i=0,j=0,1,2,3,...时,因为X={},所以最长子序列都是0 第二步(填0):i=1,2,3,...,j=0时,因为Y={},所以最长子序列是0 (用这样的原理,把第一行和第一列都设置为0) 第三步(进入正常循环): 当i=1,j=1时,也就是说当X的长度为1,Y的长度为1的条件下

文档评论(0)

1亿VIP精品文档

相关文档