最长公共子串

✍ dations ◷ 2025-07-27 18:29:17 #算法,动态规划,组合数学

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

字符串"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)} 的时间复杂度内解决.

相关

  • 第二水俣病第二水俣病是1965年确认的四大公害病之一。因与熊本县的水俣病症状相同,而得此名。因发生在新潟县阿贺野川下流,因此又名“新潟水俣病”及“阿贺野川有机水银中毒”。水俣病早
  • 电视剧电视科幻作品是指将具科学幻想的内容以电视节目呈现,其最早上映源自于科幻小说黄金时代。电视科幻作品主要透过特殊效果等制作技术,让创作者的发想不必被现实社会拘束,而得以重
  • abbr class=abbr title=S61: 防止排向环境,参考特别指示或安全技术说明书操作S61/abbr安全建议标准词(英语:Safety phrases,简写:S-phrases)是于《欧盟指导标准67/548/EEC 附录Ⅳ: 有关危险物品与其储备的安全建议》里定义。该列表被集中并再出版于指导标准2001/59/
  • 物质科学物质科学可以指:
  • 潜水员潜水员可以指:
  • 转型正义转型正义(英语:Transitional Justice)是民主国家对过去独裁政府实施的违法和不正义行为的弥补,通常具有司法、历史、行政、宪法、赔偿等面向。其根本基础在还原历史真相。评议者
  • 布狄卡布狄卡(英语:Boudica或Boudicca),旧名博阿迪西亚(拉丁语:Boudicea,或译波阿狄西亚),威尔士语中称她为比达格(Buddug)(不详-61年),是英格兰东英吉利亚地区古代爱西尼部落的王后和女王,其丈夫
  • 安东尼奥·穆齐安东尼奥·穆齐(Antonio Meucci,1808年4月13日-1889年10月18日),意大利发明家,被视为电话的最早发明者。穆齐出生于佛罗伦斯,十五岁进入当地学院,修习化学和机械,后来于当地歌剧院任
  • 坎萨玛乌帕齐拉坎萨玛乌帕齐拉(孟加拉语:খানসামা,英语:Khansama Upazila)是孟加拉国迪纳杰布尔县的一个乌帕齐拉,位于朗布尔专区的迪纳杰布尔县。。据1991年孟加拉国人口普查(英语:1991 Ban
  • 约翰·戈特利布·格奥尔基约翰·戈特利布·格奥尔基(Johann Gottlieb Georgi,1729年-1802年)为德国植物学家、博物学家及地理学家。