最长公共子串

✍ dations ◷ 2025-11-30 20:51:43 #算法,动态规划,组合数学

在计算机科学中,最长公共子串问题是寻找两个或多个已知字符串最长的子串。此问题与最长公共子序列问题的区别在于子序列不必是连续的,而子串却必须是。

字符串"ABABC","BABCA"以及"ABCBA"的最长公共子串是"ABC"。其他的公共子串包括"A"、"AB"、"B"、"BA"、"BC"以及"C"。

  ABABC    |||   BABCA    |||    ABCBA

问题定义

给定两个字符串,长度为 m {\displaystyle m} 的字符串 S {\displaystyle S} 以及长度为 n {\displaystyle n} 的字符串 T {\displaystyle T} ,求最长的子串 x {\displaystyle x} 同时是 S {\displaystyle S} 以及 T {\displaystyle T} 的连续子串。

问题可以一般化为k-公共子串问题——给定字符串的集合 S = { S 1 , . . . , S K } {\displaystyle {\displaystyle S=\{S_{1},...,S_{K}\}}} ,其中 | S i | = n i {\displaystyle |S_{i}|=n_{i}} Σ n i = N {\displaystyle \Sigma n_{i}=N} .。对于满足 2 k K {\displaystyle 2\leq k\leq K} k {\displaystyle k} ,找出至少是 S {\displaystyle S} k {\displaystyle k} 个字符串的公共子串的最长串。

利用广义后缀树,我们可以在 Θ ( n + m ) {\displaystyle \Theta (n+m)} 的时间复杂度内求出 S {\displaystyle S} T {\displaystyle T} 的最长公共子串的长度和他们的起始位置。而如果利用动态规划求解,则时间复杂度为 Θ ( n m ) {\displaystyle \Theta (nm)} 。而对于一般化的公共子串问题,使用动态规划的求解的时间复杂度为 Θ ( n 1 {\displaystyle \Theta (n_{1}} ·...· n K ) {\displaystyle n_{K})} ,利用广义后缀树则需 Θ ( N K ) {\displaystyle \Theta (N*K)} 的时间复杂度。

字符串集合的最长公共子串可以通过构造一棵广义后缀树, 然后去查找拥有来自所有集合中字符串的叶节点的最深的内部节点来得到。右图展示了字符串“ABAB”,“BABA”和“ABBA”对应的广义后缀树。为了方便后缀树的构造和区分字符串,每个串的结尾都添加了终结符“$”和字符串编号,分别变成了“ABAB$0”,“BABA$1”和 “ABBA$2”。如图所示,串“A”,“B”,“AB”和“BA”的节点对应的子树都包含来自所有字符串的叶节点。

假定字母表的大小是常数,构造这样的一颗后缀树的时间复杂度为 Θ ( N ) {\displaystyle \Theta (N)} 。这样,如果将整个树自底向上遍历,并在每个节点通过一个位向量标记每个节点的子树中出现过的所有字符串的,则k-公共子串问题可以以 Θ ( N K ) {\displaystyle \Theta (NK)} 的时间复杂度来解决。特别地,如果后缀树为常数时间的最近公共祖先检索做了优化,那么问题将可以在 Θ ( N ) {\displaystyle \Theta (N)} 的时间复杂度内解决.

相关

  • 单股反链病毒目单股反链病毒目(学名:Mononegavirales),核糖核酸病毒的一种,下面有8个科。
  • 死亡行军死亡行军 是一个针对战俘或其他俘虏或被驱逐出境者的强迫行军,旨在令他们死在途中,这就把它们从一般单纯的用徒步行军去运送囚犯区分出来。死亡行军通常包含严苛的体力劳动和
  • 采集渔猎狩猎采集者是指生活在大部分或所有的食物都是通过觅食(采集野生植物和追捕野生动物)的社会或群体中的人。狩猎采集社会与农业社会形成对比,后者主要依靠驯化物种来生活。狩猎和
  • 艾力克·斯托克斯艾力克·斯托克斯(Alec Stokes,1919年6月27日-2003年2月5日)是1940年代到1950年代间,伦敦国王学院的DNA研究团队成员之一。他曾与罗莎琳·富兰克林、雷蒙·葛斯林、莫里斯·威尔
  • 历代君主‎君主 · 首都 · 文学史 · 教育史电影史 · 韩医史陶瓷史 · 戏剧史韩国国宝 · 朝鲜国宝以下的列表列出朝鲜半岛历史上的所有君主。
  • 巴斯特尔 (圣基茨和尼维斯)巴斯特尔(英语:Basseterre)是东加勒比海岛国圣基茨和尼维斯的首都,位于圣基茨岛西南岸,是背风群岛的主要商业城市之一。该市位于圣乔治巴斯特尔区。巴斯特尔是东加勒比地区最古老
  • 萨默斯沃思坐标:43°15′14″N 70°52′32″W / 43.25389°N 70.87556°W / 43.25389; -70.87556萨默斯沃思(英语:Somersworth)是美国新罕布什尔州斯特拉佛县东南部的一个城市,东邻缅因州。
  • 国际山岳联盟国际山岳联盟(Union Internationale des Associations d'Alpinisme,UIAA)是一个成立于1932年,专门管辖国际登山运动事务的组织。目前,该组织约有60个成员国加盟,其总部设在瑞士伯
  • 刘季篪刘季篪,名韶,以字行,明代江浙行省绍兴路余姚州(今浙江余姚)人。政治人物、进士。洪武二十七年(1394年)进士,授行人,曾出使朝鲜,婉拒其馈赠礼,明太祖得知后,赐衣钞。后任陕西参政,有政绩。
  • 专门学校 (日本)专门学校,是专修学校里,作为高等教育机关有“专门课程”的学校被称为“专门学校”。是日本教育体制中特有的高等教育机构,课程密集,有专业的师资,是以专攻资格证照为目标的学校。