最长公共子序列

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

相关

  • 全球竞争力报告这是一份由世界经济论坛所出版的年度报告。2018年全球竞争力前30之排名: (此次报告采用新的计算方式,因此分数有所变化,排名则是与已经重新计算的2017年报告作比较)2017-2018年全
  • 印度储备银行印度储备银行(印地语:भारतीय रिज़र्व बैंक,英语:Reserve Bank of India)是印度的中央银行,按照中央立法会议1934年通过的《印度储备银行法案》,而成立于1935年4月
  • 1983年 艾德蒙顿第十二届夏季世界大学生运动会于1983年7月1日至7月12日在加拿大埃德蒙顿举行。最终苏联队以58金30银25铜的成绩排名奖牌榜首位。*  主办国家/地区(加拿大)
  • 亚欧板块欧亚板块(英语:Eurasian Plate)为包括大部分欧亚地区的板块,但不含括南亚的印度半岛(印度次大陆)、西南亚的阿拉伯半岛(阿拉伯次大陆)以及东西伯利亚的上扬斯克山脉以东(属鄂霍次克板
  • 大威廉丝维纳斯·厄布里·斯塔尔·威廉姆斯(英语:Venus Ebony Starr Williams,1980年6月17日-,简称维纳斯·威廉姆斯)是美国职业网球女运动员,同时也是同时代女网天后塞雷娜·威廉姆斯的亲
  • 松鼠和刺猬《松鼠和刺猬》(朝鲜语:다람이와 고슴도치)是一部1977年的朝鲜长篇动画片。由4·26儿童映画摄影所(SEK工作室)制作。2000年代朝鲜方面制作了第二季的动画。在动画中,动物成了拟人
  • 弗拉基米尔·戈尔布弗拉基米尔·亚历山德罗维奇·戈尔布(俄语:Владимир Александрович Горб,1903年12月31日-1988年10月20日),俄罗斯画家、教授,被视为列宁格勒画派(英语:Leni
  • CIT集团CIT集团股份有限公司,简称CIT集团股份,以及CIT集团(英语:CIT Group Inc.,NYSE:CIT),属于美国主要银行控股公司,则在1908年由Henry Ittleson,于美国密苏里州圣路易斯创立当时名为“美国
  • 天主教拉菲亚教区天主教拉菲亚教区(拉丁语:Dioecesis Lafiensis)是尼日利亚一个罗马天主教教区,属阿布贾总教区。教区于2000年12月5日成立,位于纳萨拉瓦州;2004年时有教友189,686人(占辖区人口10.2%
  • 缅因州议会大厦缅因州议会大厦(Maine State House)是美国缅因州议会的开会地点和缅因州长的办公场所,位于缅因州首府奥古斯塔。缅因州议会大厦修建于1829年至1832年。1909年至1910年,缅因州议