最长公共子序列问题

时间:2015-01-23 06:16:51
【文件属性】:

文件名称:最长公共子序列问题

文件大小:21KB

文件格式:DOCX

更新时间:2015-01-23 06:16:51

算法实验 最长公共子序列问题

动态规划的一个计算两个序列的最长公共子序列的方法如下:   以两个序列 X、Y 为例子:   设有二维数组 f[i,j] 表示 X 的 i 位和 Y 的 j 位之前的最长公共子序列的长度,则有:   f[1][1] = same(1,1);   f[i,j] = max{f[i-1][j -1] + same(i,j),f[i-1,j],f[i,j-1]}   其中,same(a,b)当 X 的第 a 位与 Y 的第 b 位完全相同时为“1”,否则为“0”。   此时,f[j]中最大的数便是 X 和 Y 的最长公共子序列的长度,依据该数组回溯,便可找出最长公共子序列。   该算法的空间、时间复杂度均为O(n^2),经过优化后,空间复杂度可为O(n)。


网友评论

  • 运行没问题,就是描述过少
  • 运行正确,谢谢分享
  • 对我帮助很大
  • 还行,很喜欢
  • 能运行成功,让我顺利交了报告
  • 运行正确,代码效率较高
  • 运行正确,可以使用。谢谢分享。
  • 运行正确,代码效率较高