最长公共子串

✍ dations ◷ 2025-04-02 14:53:39 #算法,动态规划,组合数学

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

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

相关

  • 鸡尾酒疗法鸡尾酒疗法,专指一种治疗艾滋病的方法。它由华裔美籍科学家何大一发明,是目前公认的疗效最佳的艾滋病治疗方法。这项研发使何大一以“艾滋病研究者”(AIDS Researcher)的身份荣
  • 检疫隔离检疫 是风险管理的一种设施。 当人类、动物、植物等,由一个地方进入另一个地方,为防带有传染病等,所以必须进行隔离检疫。本条目出自公有领域:Chisholm, Hugh (编). Quarant
  • 伊泽尔省伊泽尔省(法语:Isère)是法国奥弗涅-罗讷-阿尔卑斯大区所辖的省份。该省编号为38。位于奥弗涅-罗讷-阿尔卑斯大区东部,该省是本大区中面积最大的一个省份,而人口也在本大区排名第
  • 噻唑烷二酮类噻唑烷二酮类 (英语:Thiazolidinedione,TZDs) 于1990年代开始使用,主要用于治疗2型糖尿病尚在实验中的药物:Netoglitazone和Rivoglitazone早期发展但未上市之药品:Ciglitazone用硫
  • 凯伦·卡本特卡伦·安·卡彭特 (Karen Anne Carpenter,1950年3月2日-1983年2月4日),美国著名流行音乐歌手及鼓手。1970年代,她和她的哥哥理查·卡本特一起创建了卡彭特乐队。她是一位技艺精湛
  • 胖子胖子(英语:Fat Man)是第二次世界大战时美国在日本长崎投掷的原子弹的名称。1945年8月9日,即广岛首枚原子弹爆炸后3天,由查尔斯·斯威尼(英语:Charles Sweeney)驾驶的B-29超级空中堡
  • 水晶兰科参见正文水晶兰科(Monotropaceae)共有10属15种,分布于全球温带和热带的山区,生育环境分布于海拔1500-3000米以上,常见于冷凉潮湿的针阔叶混合林间。中国有4属5种,生长在西南至东北
  • 第四第四航空队(英语:Fourth Air Force)是美国空军预备役司令部下属的一个编号航空队,指挥部位于加利福尼亚州的March空军基地。
  • 野口健野口健(1973年8月21日 - )日本登山家,出生于美国波士顿。了徳寺大学客员教授。毕业于亚细亚大学国际関系学部。外交官野口雅昭为野口健父亲,幼少期于海外度过。野口健曾就读开罗
  • 智能狂拼智能狂拼是一种基于中文语言模型(CLM)技术的汉语拼音输入法,与其他中文输入法相比,最大的特色是能够执行整句输入。与微软拼音、黑马神拼和拼音之星的语句输入类似。2000年,智能