最长公共子序列

✍ dations ◷ 2025-12-08 07:12:09 #算法,动态规划,组合数学,多项式时间问题,NP完全问题

最长公共子序列(LCS)是一个在一个序列集合中(通常为两个序列)用来查找所有序列中最长子序列的问题。这与查找最长公共子串的问题不同的地方是:子序列不需要在原序列中占用连续的位置 。最长公共子序列问题是一个经典的计算机科学问题,也是数据比较(英语:data comparison)程序,比如Diff工具,和生物信息学应用的基础。它也被广泛地应用在版本控制,比如Git用来调和文件之间的改变。

一个数列 S {\displaystyle S} ,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 S {\displaystyle S} 称为已知序列的最长公共子序列。

对于一般性的LCS问题(即任意数量的序列)是属于NP-hard。但当序列的数量确定时,问题可以使用动态规划(Dynamic Programming)在多项式时间内解决。

最长公共子序列问题存在最优子结构:这个问题可以分解成更小,更简单的“子问题”,这个子问题可以分成更多的子问题,因此整个问题就变得简单了。最长公共子序列问题的子问题的解是可以重复使用的,也就是说,更高级别的子问题通常会重用低级子问题的解。拥有这个两个属性的问题可以使用动态规划算法来解决,这样子问题的解就可以被储存起来,而不用重复计算。这个过程需要在一个表中储存同一级别的子问题的解,因此这个解可以被更高级的子问题使用。

动态规划的一个计算最长公共子序列的方法如下,以两个序列 X {\displaystyle X} Y {\displaystyle Y} 为例子:

设有二维数组 f {\displaystyle f} 表示 X {\displaystyle X} i {\displaystyle i} 位和 Y {\displaystyle Y} j {\displaystyle j} 位之前的最长公共子序列的长度,则有:

其中, s a m e ( a , b ) {\displaystyle same(a,b)} X {\displaystyle X} 的第 a {\displaystyle a} 位与 Y {\displaystyle Y} 的第 b {\displaystyle b} 位完全相同时为“1”,否则为“0”。

此时, f {\displaystyle f} 中最大的数便是 X {\displaystyle X} Y {\displaystyle Y} 的最长公共子序列的长度,依据该数组回溯,便可找出最长公共子序列。

该算法的空间、时间复杂度均为 O ( n 2 ) {\displaystyle O(n^{2})} ,经过优化后,空间复杂度可为 O ( n ) {\displaystyle O(n)}


下面算法计算了所有子问题的最长公共子序列长度C

相关

  • 乔纳斯·索尔克乔纳斯·爱德华·索尔克(英语:Jonas Edward Salk,乔纳斯·爱德华·索尔克,港澳称为乔纳斯·索尔克,台湾称为约纳斯·沙克,1914年10月28日-1995年6月23日),美国实验医学家、病毒学家,主
  • 科德角鳕鱼角(英语:Cape Cod),是美国东北部马萨诸塞州伸入大西洋的一个半岛,面积1033平方公里。1914年,美国在该半岛与大陆连接处开掘鳕鱼角运河,使鳕鱼角实际上成为了一个岛屿。
  • 各国家和地区人口列表索引 国防预算 石油储量 军事(武装部队) 死刑 国债 生育率 最高点 官方语言 地理 政体 面积 代码 陆地面积 人口 人口密度 国内生产总值 国徽 国旗 国歌 国家格言 首都 城市
  • 李垠李垠(이은,1897年10月20日-1970年5月1日),朝鲜王朝最后的王位继承者以及日本近现代王公族成员,日本军人。朝鲜高宗第七子(庶三子),封号为英亲王、皇太子,日韩合并期间封为李王世子、后
  • 弯螺属弯螺属(学名:),又名中华草包蜗牛属,是一种会呼吸空气的陆地蜗牛,属于扭蜗牛总科扭蜗牛科草包蜗牛亚科的陆上有肺类腹足纲软体动物本属的学名源于-(中华)+(草包蜗牛属),也就是本属在台湾
  • 周邦道周邦道(1898年-1991年),字庆光,号龙雾山樵,龙雾居士。教育家。江西瑞金黄柏乡直坑村人。曾就读宁都县立中学、江西省立第九中学(今宁都中学)。民国18年考考取国立南京高等师范学校,民
  • 恐龙尤物《恐龙尤物》(英语:,标题显示为)是一部2015年首映的美国青少年喜剧电影,由亚利·桑德尔(英语:Ari Sandel)执导,乔许·A·卡根(Josh A. Cagan)执笔,改编自柯蒂·凯普林吉(Kody Keplinger)的
  • 黄哲伦黄哲伦(英语:David Henry Hwang,1957年8月11日-)为美国华裔作家。1957年出生于美国加州洛杉矶。其作品皆为英文。曾就读于耶鲁大学戏剧系与史丹佛大学,最知名著作为《蝴蝶君》
  • 肯德尔·詹纳肯德尔·妮科尔·詹纳(英语:Kendall Nicole Jenner,1995年11月3日-)是一位美国电视名人和时装模特儿。詹纳第一次出现在萤光幕是在E!(英语:E!)频道的真人秀《与卡戴珊姊妹同行(英语:Ke
  • 凤松路凤松路(Fongsong Rd.)是高雄市凤山区北端连接市郊的南北向重要干道,因连结凤山、鸟松两地而得名。起端于凤诚路口接鸟松区中正路,编号市道183号。途中市道183号转经武路。末端止