最长公共子串

✍ dations ◷ 2025-05-18 16:58:04 #算法,动态规划,组合数学

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

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

相关

  • 弥漫大B细胞淋巴瘤弥漫大B细胞淋巴瘤(Diffuse large B-cell lymphoma DLBL or DLBCL)是一种常见的恶性淋巴瘤。占成人淋巴瘤患者近40%。根据其基因活性,DLBL可分为2种或3种主要亚型:标准化疗方案
  • 绿色植物绿色植物(学名:Viridiplantae,意为“绿色植物”)是由绿藻(以水生藻类为主)与陆生植物(有胚植物)组成的真核生物演化支 。传统上绿藻不包含有胚植物,因此为一并系群,但后来因为许多研究
  • 诺斯特拉行省纳博讷高卢(拉丁语:Gallia Narbonensis)是罗马帝国位于今法国朗格多克和普罗旺斯的一个行省,也被称为诺斯特拉行省(意为“我们的行省”),是罗马帝国在阿尔卑斯山以北的第一个行省,起
  • 不成盐氧化物不成盐氧化物,也叫做中性氧化物,指既不能与酸反应,又不能与碱反应生成原价态的盐和水的氧化物。不成盐氧化物全部为非金属氧化物,数量较少,但非金属氧化物不全是不成盐氧化物。
  • 金海心金海心(朝鲜语:김해심,1978年10月30日-),中国朝鲜族女歌手。她主要用汉语演唱,也会用朝鲜语唱歌。出生于吉林省音乐家庭,5岁即开始学习钢琴和长笛。大学毕业。由于著名音乐人三宝的
  • 瓜拉登嘉楼瓜拉登嘉楼(马来语:Kuala Terengganu),原名瓜拉丁加奴,是马来西亚登嘉楼州的首府,也是州内最大城市。瓜拉登嘉楼于2008年1月1日升级为大城市。如今,东海岸大道第二阶段也已连接到此
  • 抗甲状腺自身抗体人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学 抗甲状腺自身抗体或简称抗甲状腺抗
  • 西海卫星发射基地西海卫星发射基地(西海卫星发射场),又叫东仓里发射场,是位于朝鲜平安北道铁山郡的火箭发射场。在2012年4月13日,为庆祝金日成诞晨100周年朝鲜发射光明星3号但失败了,但在同年12月1
  • 诺拉·艾芙伦诺拉·艾芙隆(英语:Nora Ephron,1941年5月19日-2012年6月26日)出生于美国纽约州纽约市,是一位美国电影制片人、导演、编剧、小说家、剧作家、记者、作家、传记作者,被华文媒体称之
  • 莫罗 (俄勒冈州)莫罗(英语:Moro)是美国俄勒冈州谢尔曼县内的一座城市。2000年美国人口普查时它有337名居民,它是谢尔曼县的县府,是俄勒冈州最小的县府。莫罗的地理位置为45°29′6″N 120°43′5