最长公共子序列的算法

 我来答
血盟孑孑hl395
2016-05-18 · 超过59用户采纳过TA的回答
知道答主
回答量:182
采纳率:33%
帮助的人:114万
展开全部

动态规划的一个计算两个序列的最长公共子序列的方法如下:
以两个序列 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)。

上海华然企业咨询
2024-10-28 广告
作为上海华然企业咨询有限公司的工作人员,我们深知AI算法备案的重要性。AI算法备案是一项必要的合规措施,旨在确保算法的安全性和透明度,维护用户权益和社会秩序。我们提供专业的备案咨询服务,协助企业完成算法备案流程,包括准备相关材料、填报备案信... 点击进入详情页
本回答由上海华然企业咨询提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式