最长公共子串

✍ dations ◷ 2025-11-20 18:07:47 #算法,动态规划,组合数学

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

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

相关

  • 海上丝绸之路海上丝绸之路,是陆上丝绸之路的延伸,联合国科教文组织所认定的海上丝绸之路起点位于中国福建省泉州市。形成主因是因为中国东南沿海山多平原少,且内部往来不易,因此自古许多人便
  • 十诫十诫(希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR","Keter Aram Tsova","Taamey Ash
  • ATCvet码解剖学治疗学及化学分类系统(英语:Anatomical Therapeutic Chemical Classification System, ATC),是世界卫生组织对药品的官方分类系统。ATC系统由世界卫生组织药物统计方法整
  • 人口危险预警防空警报是城市民防工程的重要组成部分,是在城市受到空袭威胁时鸣响的提醒人们防空避难的警报。防空警报除了在战争时期使用,而且也在非战争时期为了纪念某些重大事件而使用。
  • 伊利诺州伊利诺伊州(英语:State of Illinois,i/ˌɪləˈnɔɪ/),简称伊州,是一个位于美国中西部的州,州名源自曾在此居住的伊利尼维克(Illiniwek)印第安人部落。“Illinois”这个名字就是法
  • 黄荣辉 (院士)黄荣辉(1942年8月17日-),气象学家,福建省泉州市泉港区前黄镇前黄村人。中国科学院大气物理研究所副所长、研究员、世界气候研究计划(WCRP)中国委员会秘书长。1959年,黄荣辉考入北京
  • 物理学 (亚里士多德)《物理学》(希腊语:Φυσικὴ ἀκρόασις,拉丁语:,意为“自然讲学”)是亚里士多德的一本被视为西方科学与哲学基础文献的著作。
  • 乔氏似鳞头鳅乔氏似鳞头鳅为辐鳍鱼纲鲤形目鳅科的其中一种,为热带淡水鱼,被IUCN列为濒危保育类动物,分布于亚洲斯里兰卡淡水流域,体长可达6公分,栖息在有遮蔽物、流动缓慢的溪流底层水域,生活
  • K•大伟•哈里森 K·大伟·哈里森(K. David Harrison)是一位美国语语言学家、作家和活动家,在美国斯沃斯莫尔学院进行濒危语言教学、及文档整理、保存等之工作,并隶属于国家地理学会的一员。
  • 曾经沧海难为水《曾经沧海难为水》(英语:)是1974年的美国喜剧电影,导演是马丁·斯科塞斯,编剧是罗伯特·格恰尔(英语:Robert Getchell)。故事讲述由艾伦·鲍丝汀饰演一名寡妇,与她青春期前的儿子旅