最长公共子序列

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

相关

  • 声波武器声波武器(英语:Sonic weapon)就是利用声音对目标造成杀伤或干扰的武器。用扬声器定向发出大音量的声波,令到敌方人员死伤或丧失战斗力。当人没有任何保护的情况下处在存在120分
  • 2006年欧洲热浪2006年欧洲热浪指自2006年6月末在一些欧洲国家开始的极端高温天气。受到热浪袭击的国家包括英国、法国、比利时、荷兰、卢森堡、意大利、波兰、捷克、匈牙利、德国和俄罗斯
  • 科尔根航空3407号班机坐标:43°00′42″N 78°38′21″W / 43.011602°N 78.63904°W / 43.011602; -78.63904科尔根航空3407号班机(与大陆连接航空实行代码共享,为大陆连接航空3407号班机)是一班往
  • 全国高速公路德国高速公路是德国的全国高速公路系统,其德文名称(Autobahn .mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Un
  • 摇蚊科共223个摇蚊科(学名:Chironomidae),常被泛称为摇蚊,是双翅目摇蚊总科之下的其中223个属,超过5000种的统称。摇蚊的幼虫被俗称为红筋虫。
  • 联合日报联合日报是马来西亚的一份中文报纸,前身为《美里日报》和《中华日报》,两报于2004年1月1日合并,目前仅在东马的砂拉越与文莱发行,并以砂拉越西部地区古晋、三马拉汉、斯里阿曼等
  • 塞巴斯蒂昂·若泽·德卡瓦略-梅洛塞巴斯蒂昂·若泽·德卡瓦略-梅洛,第一代蓬巴尔侯爵、第一代奥埃拉什子爵(葡萄牙语:Sebastião José de Carvalho e Melo, Marquês de Pombal e Conde de Oeiras;1699年5月13
  • 剪切强度剪切强度(Shear strength)是工程学名词,是一个描述物质对抗剪切力强度的专有名词,也就是物质在承受剪切力时会出现降伏或是结构失效(英语:structural failure)时的剪切力强度。剪切
  • 楢山节考 (1983年电影)《楢山节考》是一部由日本导演今村昌平拍摄的影片,参与电影主演的为日本影星绪形拳。本片在1983年于日本上映。并获得各界广泛的讨论,成为一部经典影片。剧情描写在日本信州深
  • 费迪南·福煦普法战争 第一次世界大战费迪南·福煦(Ferdinand Foch,1851年-1929年),法国陆军统帅。父亲为拿破仑·福煦。福煦于普法战争时被征召入伍、进入海军陆战队服役,战后决定留在军队发