汉明距离下近似重复序列的查找
1. 引言
重复序列(周期性)在单词组合学中扮演着核心角色,从应用角度来看也十分重要,例如其特性可加速模式匹配算法。高效识别给定单词中的重复序列是经典的模式匹配问题之一。
串联重复(或平方)是指单词中一个子单词的连续两次出现,例如“baba”是“cbacbabacba”中的串联重复。自 80 年代初起,人们就知道检查一个单词是否无串联重复(即无平方)可在 $O(n)$ 时间内完成($n$ 为单词长度)。若要找出所有串联重复,其数量就需纳入考量,像“$a^n$”这样的单词包含 $O(n^2)$ 个串联重复。若将范围限制在原始平方(即子单词 $uu$,其中 $u$ 不是 $v^k$($k \geq 2$)形式的重复),则一个单词可能包含 $O(n \log n)$ 个,且此界限是严格的,所有原始平方可在 $O(n + S)$ 时间内找到($S$ 为其数量),最坏情况下为 $O(n \log n)$ 时间。
在生物序列分析中,寻找字符串中的重复序列有了新的动力。DNA 序列中片段的连续出现往往承载着重要信息,许多基因组结构(如端粒区域)都具有重复序列的特征。从实际应用来看,卫星序列和 Alu 重复序列在染色体分析和基因分型中具有重要意义,因此寻找连续重复序列的工具如今已成为全基因组分析和注释集成系统的必备部分。
然而,在基因组序列中寻找具有生物学意义的重复序列的主要困难在于,重复子单词的副本之间必须允许一定的变异,即生物学家更关注近似重复而非仅精确重复。近似串联重复是指子单词 $uv$,其中 $u$ 和 $v$ 的距离在给定的 $k$ 范围内,距离的概念可以是生物应用中常用的汉明距离或编辑距离。G. Landau 和 J. Schmid