最长公共子序列

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

相关

  • 焦尔达诺·布鲁诺焦尔达诺·布鲁诺(意大利语:Giordano Bruno,1548年-1600年2月17日)是文艺复兴时期的意大利哲学家、数学家、诗人、宇宙学家和宗教人物,1593年起,布鲁诺以异端罪名接受罗马宗教法庭
  • 性甾体性类固醇(英语:Sex steroid,亦称为性甾体)是指一类与脊椎动物雄激素或雌激素受体相互作用的类固醇激素。他们的效应是由两种方式进行的:第一种是经核受体进行的慢性染色体组机制,
  • 腰方肌腰方肌(Quadratus lumborum)位于腹腔的后部。在腹腔肌肉里面位置最深,常被指为腰肌。形状是四边形。功能为腰椎侧弯以及防止腰椎从另一边侧弯。
  • 干涉测量干涉测量术(英语:Interferometry)是通过由波的叠加(通常为电磁波)引起的干涉现象来获取信息的技术。这项技术对于天文学、光纤、工程计量、光学计量、海洋学、地震学、光谱学及其
  • 岩藻糖苷贮积症岩藻糖苷贮积症(英语:Fucosidosis)是一种溶小体储积症,其会导致许多器官呈现广泛性α-L岩藻糖蛋白(英语:Alpha-L-fucosidase)、糖脂质以及寡糖的堆积。亦会产生血管角质瘤,广泛性毛
  • 汤尔和汤尔和(1878年-1940年) ,原名汤槱,字调鼐,医学家、中国政治人物,浙江杭州人。1903年到日本留学,金泽医学专门学校毕业。1904年回国。1907年赴德国柏林洪堡大学学习。1912年宣统退位,
  • 淘金潮淘金潮(又称淘金热;英语:Gold Rush)是指当一个地区戏剧性地发现了数量上拥有商业价值的黄金时,大量移民工人涌入这个地区的时期。通常特指始自1849年,贯穿19世纪50年代在美国加利
  • 2014年国际足联世界杯预选赛 – 亚洲区第一轮本条目是提供2014年世界杯预选赛亚洲区第一轮的赛事资讯。本轮赛事的配对由抽签随机决定主客场。抽签于2011年3月30日于马来西亚吉隆坡的亚足联总部进行。马来西亚 v 中华
  • 沃森石沃森石是一种由硫和钛组成的矿物。这种矿物是2011年在一颗编号为“大和691”的陨石中发现的。这颗陨石是日本科研人员1969年12月在南极大和山附近发现。
  • 达巴瓦拉达巴瓦拉(马拉提语:डब्बेवाले,印地语:डब्बावाला,英语:dabbawal),意为“饭盒人”,是指印度孟买从事将刚做好的午饭饭盒从上班族(主要是郊区)的住家运往他们工作地点,并