轻量级参数化后缀数组构建
1. 引言
在字符串处理领域,参数化后缀树和后缀数组的构建是重要的研究方向。以往有算法能在 $O(n(log π + log σ))$ 时间内构建参数化后缀树,也有在线构建算法。对于参数化模式匹配问题,可利用参数化后缀树在 $O(m log(π + σ) + |Pocc|)$ 时间内解决。在数组表示方面,参数化后缀数组也被研究过,不同情况下解决参数化模式匹配问题的时间复杂度不同。但对于非二进制字符串,高效直接构建参数化后缀数组和参数化最长公共前缀(PLCP)数组的算法较少,目前最好的理论最坏情况时间复杂度为 $O(n^2)$。本文提出了一种新算法,用于高效构建非二进制字符串的参数化后缀数组和 PLCP 数组。
2. 预备知识
- p - 字符串定义 :设 $\Sigma$ 和 $\Pi$ 分别是两个不相交的常量符号和参数符号的有限集,$(\Sigma ∪\Pi)^*$ 中的元素称为 p - 字符串。p - 字符串 $s$ 的长度是其中常量和参数符号的总数,记为 $|s|$。对于长度为 $n$ 的 p - 字符串 $s$,第 $i$ 个符号记为 $s[i]$,从位置 $i$ 到位置 $j$ 的子串记为 $s[i : j]$。
- 参数化匹配定义 :两个长度为 $m$ 的 p - 字符串 $s$ 和 $t$ 若满足以下条件之一,则称它们参数化匹配(p - 匹配),记为 $s ≃t$:
- $s[i] = t[i] ∈\Sigma$;
- $s[i], t[i] ∈\Pi$,且对于任意 $1 ≤j &
超级会员免费看
订阅专栏 解锁全文
5万+

被折叠的 条评论
为什么被折叠?



