最长公共子序列

✍ dations ◷ 2025-12-01 04:11:53 #算法,动态规划,组合数学,多项式时间问题,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

相关

  • 约翰逊航天中心林顿·约翰逊太空中心(Lyndon B. Johnson Space Center)是美国国家航空航天局属下的一个机构,从1961年开始它负责协调管理美国的载人太空飞行任务,它位于德克萨斯州休斯敦。美国
  • 阿波罗-联盟阿波罗-联盟测试计划(英语:Apollo-Soyuz Test Project (ASTP);俄语:Экспериментальный полёт «Союз-Аполлон» (ЭПСА))是历史上第一次由
  • 老龄化人口老龄化又称人口老化或人口高龄化、老龄化社会,是指因出生率降低和/或预期寿命延长导致年龄中位数增加的现象。大多数发达国家人口长寿,老龄人群变多;但发展中国家目前也出
  • 月球地质月球地质(有时称为月质学,或涵盖范围更广的月球科学)与地球地质学差别明显。 月球表面缺少会产生侵蚀的大气层与水体,现在也没有板块构造活动。由于月球的总质量远远小于地球,其
  • 贫困线贫困线(poverty threshold)或贫穷线、贫困线,是为满足生活标准而需的最低收入水平。一如贫穷的认定,在已发展国家里贫困线(如美国)的认定标准明显比第三世界高。故联合国在1993年
  • 极限 (数学)极限是现代数学特别是分析学中的基础概念之一。极限可以用来描述一个序列的指标愈来愈大时,序列中元素的性质变化的趋势。极限也可以描述函数的自变量接近某一个值的时候,相对
  • 卡斯特国家森林卡斯特国家森林(英语:Custer National Forest)是美国的一处国家森林,1908年7月1日建立,位处蒙大拿州和南达科他州交接处,占地面积1,188,130英亩(4,808.2平方千米),最近的城市为比灵斯
  • 瓦尔特相律瓦尔特相律由德国学者瓦尔特在1894年提出,内容为:“只有那些目前可以观察到是彼此毗邻的相和相区,才能原生的重叠在一起。”这就是著名的瓦尔特相律,也叫做相对比原理。
  • 润滑脂润滑脂乃是在基础油加入增稠剂与润滑添加剂制成的半固态机械零件润滑剂。润滑脂俗称黄油、牛油,因为润滑脂是半固态的油腻物质且多半呈深浅不一的黄色~乳白色,与一般人习见的
  • H square2或H-square是数学及控制理论的用语,是指有平方范数的哈代空间,是2空间的子集合,因此也是希尔伯特空间。特别的是,2空间也是再生核希尔伯特空间(英语:Reproducing kernel Hilbert