最长公共子串

✍ dations ◷ 2025-10-22 15:07:12 #算法,动态规划,组合数学

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

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

相关

  • 舒马曲坦舒马曲坦 (英语:Sumatriptan,或译为舒马普坦)是一种曲坦类药物,用于治疗偏头痛。在结构上,舒马曲坦和蟾毒色胺、5-甲氧基二甲基色胺一样是一种生物碱——二甲基色胺(DMT)的衍生物,其
  • 东海岸经济特区东海岸经济特区(马来语:Wilayah Ekonomi Pantai Timur、英语:East Coast Economic Region,简称“ECER”)是一个涵盖吉兰丹州、登嘉楼州、 彭亨州、及柔佛州丰盛港县的马来西亚半
  • 六重键六重键(英语:Sextuple Bond),是指化学中,由6对价电子组成的共价键。六重键的键级为6,含有六重键的化合物仅有双原子分子的 Mo
  • 高锐高锐(1950年5月-),生于吉林长春,籍贯黑龙江双城。地球物理学家,从事地球物理与深部构造研究。1977年毕业于长春地质学院地球物理勘探系,1981年又取得该校硕士学位。担任中国地质科
  • 各国铂产量列表本列表列出各国铂年产量,根据美国地质调查局统计资料。
  • 环球邮报《环球邮报》(英语:)是一份在加拿大全国发行的英语报纸,以多伦多为基地并在全国六个城市印刷。每周读者量935,000,是加拿大最大的全国性发行报纸,周销量居《多伦多星报》之后为第
  • 2012年夏季残疾人奥林匹克运动会轮椅网球比赛2012年夏季残疾人奥林匹克运动会的轮椅网球比赛会由9月1日至9月8日在伦敦奥林匹克公园伊顿庄园举行,本项目共产生6面金牌。轮椅网球在1988年残奥会成为表演项目,并于1992年正
  • 用户ID用户ID(英语:user identifier,一般缩写为User ID或UID),全称用户标识符,在类UNIX系统中是内核用来辨识用户的一个无符号整型数值,亦是UNIX文件系统与进程的必要组成部分之一。在不
  • 李甫姬李甫姬(韩语:이보희,1959年5月25日-),韩国女演员。1979年MBC第11期公开招募演员出身,1983年出演李长镐(朝鲜语:이장호 (영화 감독))导演所执导的电影《一松亭的苍松》正式踏入影坛,之后
  • 教宗玛策林教宗圣玛策林(拉丁语:Sanctus Marcellinus PP.;250年-305年4月1日)于296年6月30日-305年4月1日为教宗。 本条目出自公有领域:Chisholm, Hugh (编). 大英百科全书 第十一版. 剑桥大