1_金策_字符串算法选讲
字符串算法选讲
.
字符串算法选讲
金策
清华大学交叉信息研究院
February 3, 2017
字符串算法选讲
Periods and borders
Basics
字符串: , 。
字符集: 。算法竞赛中常见的 是 个小写英文字
母。
子串 。
前缀pre , 后缀suf 。
字符串算法选讲
Periods and borders
Basics
周期和 border
若 , , 就称 是
的周期(period)。
若 , pre suf , 就称pre 是 的
border。
pre 是 的border 是 的周期。
period
border
比如 abaaaba 就有周期 , 对应的 border 是 aba,a, 和 ϵ。
字符串算法选讲
Periods and borders
Basics
KMP 算法
可以在 时间求出数组fail, 其中fail 表示前缀
的最大border 长度。
的所有border 长度?
fail failfail
字符串算法选讲
Periods and borders
Basics
后缀数组和 LCP 查询
在 log 时间空间预处理后(或较复杂的 时间空间
预处理), 可以 回答: 两个子串的最长公共前缀(LCP)、最
长公共后缀 (LCS)。
对于拥有周期 的串, LCP 。
输入, 回答最大的 使得 拥有周期 。
字符串算法选讲
Periods and borders
Periodicity lemma
Weak Periodicity Lemma
和 是字符串 的周期, , 则gcd 也是 的周
期。
证明: 令 , 则由 或 均可
推出 。
Periodicity Lemma: 和 是 的周期, gcd ,
则gcd 也是 的周期。
abaaba
字符串算法选讲
Periods and borders
Periodicity lemma
字符串匹配
引理: 字符串 满足 , 则 在 中的所有匹配位
置组成一个等差数列。
证明: 只需讨论至少匹配 次的情况。考虑 在 中的(最左
边)第一次和第二次匹配, 间距为 。另外某次匹配与第二次匹
配的间距为 。
可知 都是 的周期, 从而 gcd 也是 的周期。
设 的最小周期为 。
由 知 也是