首页 > 其他 > 详细

最长公共子序列动态规划方程

时间:2019-10-31 10:42:21      阅读:71      评论:0      收藏:0      [点我收藏+]
动态规划的一个计算两个序列的最长公共子序列的方法如下:
[1] 以两个序列 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”。
此时,二维数组中最大的数便是 X 和 Y 的最长公共子序列的长度,依据该数组回溯,便可找出最长公共子序列。
该算法的空间、时间复杂度均为O(n^2),经过优化后,空间复杂度可为O(n)。

最长公共子序列动态规划方程

原文:https://www.cnblogs.com/likeghee/p/11769836.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!