最长公共子串

✍ dations ◷ 2025-07-06 09:00:13 #算法,动态规划,组合数学

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

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

相关

  • ~؋ ​₳ ​ ฿ ​₿ ​ ₵ ​¢ ​₡ ​₢(英语:Brazilian cruzeiro) ​ $ ​₫ ​₯ ​֏ ​ ₠ ​€ ​ ƒ(英语:Florin sign) ​₣ ​ ₲ ​ ₴(英语:Hryvnia sign) ​ ₭ ​ ₺
  • 糖苷糖苷(英语:Glycoside,读音同“糖甘”,简称苷,曾称为配糖体或甙)是一类化合物,这类分子的其中一部分连着一个糖类部位。分子中非糖部分称作苷元(aglycon)。在生物体内扮演重要角色。糖
  • 大定府大定府,可以指:
  • 蜥鸟龙蜥鸟龙属(属名:Saurornithoides)是种手盗龙类恐龙,属于伤齿龙科,生存于晚白垩纪。如同其他的伤齿龙科恐龙,蜥鸟龙是种掠食者,可用后肢来快速地奔跑,并拥有极佳的视力与听力。蜥鸟龙
  • Working Title Films沃克泰托电影公司是一间总部位于英国伦敦的电影制作公司,由蒂姆·贝文和莎拉·瑞克斐(英语:Sarah Radclyffe)(Sarah Radclyffe)在1983年成立,现为环球影业所拥有。沃克泰托电影公司
  • 对偶多面体在几何学,若一种多面体的每个顶点均能对应到另一种多面体上的每个面的中心,它就是对方的对偶多面体。根据对偶原则,每种多面体都存在对偶多面体。一种多面体的对偶多面体的对偶
  • 董若翰董若翰(法语:Jean-Baptiste Anouilh, C.M.,1819年11月8日-1869年2月18日)是法国遣使会士,天主教直隶西南宗座代牧区宗座代牧。1819年11月8日,董若翰出生于法国Prat-et-Bonrepaux 。
  • 气体人第一号气体人第一号(日文:がすにんげんだいいちごう)是1960年上映的日本特摄片,东宝公司制作“变身人系列”第三部。
  • 莫雷阿航空1121号班机空难在2007年8月9日,莫雷阿航空1121号班机在法属波利尼西亚莫雷阿岛上的他梅尔机场起飞不久后便坠毁。机上20名乘客和机组人员全部罹难,是这家成立于1968年的航空公司39年历史的首
  • 马里语马里语(马里语:марий йылме;俄语:марийский язык),又名切列米斯语,是乌拉尔语系的芬兰-乌戈尔语族的芬兰-伏尔加语支底下的其中一个亚语支,语言人口超过60万