最长公共子串

✍ dations ◷ 2024-12-23 16:04:49 #算法,动态规划,组合数学

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

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

相关

  • 罗莎琳·富兰克林罗莎琳·爱尔西·富兰克林(英语:Rosalind Elsie Franklin,1920年7月25日-1958年4月16日),是一位英国物理化学家与晶体学家。她所做的研究,专注于DNA、病毒、煤炭与石墨等物质的结构
  • 国际生物化学与分子生物学联盟国际生物化学与分子生物学联盟(英语:International Union of Biochemistry and Molecular Biology,缩写:IUBMB)是一个国际非政府组织,致力于关注生物化学与分子生物学的发展,成立于
  • 卡塔哥市卡塔戈是哥斯达黎加的城市,也是卡塔戈省的首府,位于该国中部,始建于1563年,面积152平方公里,海拔高度1,435米,每年平均降雨量1,402毫米,2008年人口156,600。
  • 乙酰乙酸铝乙酰乙酸铝是一个铝离子与三个乙酰乙酸阴离子形成的配合物,化学式C18H27AlO9,它在医学上用作抗酸药。
  • 截获核间谍指擅自向其他国家泄露有关核武器的国家机密。在核武器的历史上有许多已知的核间谍案件,也有不少怀疑或指控从事间谍活动的案件。核武器一般被视为是最重要的国家机密,因
  • 捉迷藏 (2016年电影)《捉迷藏》(英语:Hide and Seek)是一部2016年上映的惊悚电影。翻拍自2013年上映的同名韩国电影《捉迷藏》。《捉迷藏》是由新线索电影、威秀电影亚洲、青春光线联合出品,刘杰执
  • 萨布里·埃尔贡萨布里·埃尔贡(土耳其语:Sabri Ergun;1918年3月1日-2006年2月18日)是一名土耳其化学工程师,以描述填充床(英语:Packed bed)流体压降的埃尔贡方程闻名。萨布里·埃尔贡出生于奥斯曼帝
  • 阿莱克西斯·基维阿莱克西斯·基维(芬兰语:Aleksis Kivi,1834年10月10日-1872年12月31日),出生时原名为阿莱克西斯·斯滕瓦尔(瑞典语:Alexis Stenvall),是一位芬兰作家。他写的小说《七兄弟》是第一部
  • 劳拉·巴斯劳拉·巴斯 (意大利语:Laura Bassi,1711年11月29日-1778年2月20日),18世纪意大利科学家,她是欧洲第二位获得学术资格的女性, 同时也是欧洲第一位女教授。劳拉·巴斯出生在博洛尼亚的
  • 比干比干(?-?),子姓,殷商沫邑(今河南卫辉)人,殷商宗室,因封地为“比邑”(今山西汾阳),故称其“比干”,商纣时宰相,文丁之子、纣王的叔父,为三大忠臣之一,《论语》中称微子、箕子、比干,为“殷三仁”