最长公共子串

✍ dations ◷ 2025-09-19 14:18:27 #算法,动态规划,组合数学

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

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

相关

  • 玻利维亚面积以下资讯是以2019年估计家用电源国家领袖国内生产总值(购买力平价) 以下资讯是以2016年估计国内生产总值(国际汇率) 以下资讯是以2016年估计人类发展指数 以下资讯是以2018
  • 蛲虫病蛲虫(学名:Enterobius vermicularis,英文Pinworm),别名:针状虫、坐虫,线虫动物门中的一类肠道寄生虫,是蛲虫病的病因。在全世界均有其分布。成虫虫体外型有如粉红色线头,前端有三片
  • 易经《易经》是中国汉族最古老的文献之一,并被儒家尊为“五经”之始;一般说上古三大奇书包括《黄帝内经》、《易经》、《山海经》,但它们成书都较晚。《易经》以一套符号系统来描述
  • 连续在数学中,连续是函数的一种属性。直观上来说,连续的函数就是当输入值的变化足够小的时候,输出的变化也会随之足够小的函数。如果输入值的某种微小的变化会产生输出值的一个突然
  • 急性症状性癫痫癫痫发作(epileptic seizure 或epileptic fit,有时在文献或新闻只简单称为 seizure 或fit) 是因为脑中的过度的神经振荡而出现的医学病征。 这种脑内异常的外溢效应(outward eff
  • 米雷米雷(法语:Muret)是法国南部-比利牛斯大区上加龙省的一个市镇,属于米雷区(Muret)米雷县(Muret)。该市镇总面积57.84平方公里,2009年时的人口为23356人。。米雷人口变化图示
  • 香蕉白话香蕉白话,又称香蕉白仔话、蕃薯白仔话、温州白话,或简称香蕉白,是从日治时期至当代流传于南台湾的平埔原住民族群秘密语,主要以闽南语台湾话混杂,高雄甲仙一带大武垅族部落亦会混
  • 西奥多·韦尔西奥多·牛顿·魏尔(Theodore Newton Vail,1845年7月16日-1920年4月16日),美国电话实业家。1885至1889年间及1907至1919年间任美国电话电报公司之总裁。魏尔视电话服务为一公共设
  • 何塞·波拿巴何塞·费尔南多·波拿巴(西班牙语:西班牙语:José Fernando Bonaparte,1928年6月14日-2020年2月18日),阿根廷古生物学家,因发现了大量南美恐龙而闻名。2020年2月18日病逝,享寿91岁。
  • 蒙上你的眼《蒙上你的眼》(英语:),是一部于2018年上映的美国末日惊悚片,由苏珊娜·比尔执导、艾瑞克·赫瑟勒编剧。电影改编自乔许·梅勒曼(英语:Josh Malerman)的2014年同名小说(英语:Bird Box),