简单字符串理论
简单字符串理论
下面令 \(|s|=n\)。
Theorem 1
字符串 \(s\) 有长为 \(p\) 的周期,等价于 \(s\) 有长为 \(n-p\) 的 Border。
前推后:由于 \(s_{i}=s_{i+p}\),所以 \(s[1:n-p]=s[p+1:n]\)。
后推前:由于 \(s[1:n-p]=s[p+1:n]\),所以 \(\forall i\in[1,n-p],s_i=s_{i+p}\)。
Theorem 2
字符串的最小周期为 \(p\),等价于其最长 Border 为 \(n-p\)。
定理 1 的推论。
Theorem 3
弱周期引理(Weak Periodicity Lemma,WPL):若 \(p,q\) 为 \(s\) 的周期,且 \(p+q\le n\),则 \(\gcd(p,q)\) 也是 \(s\) 的周期。
不妨设 \(p\ge q\)。
\(\forall i>q,s_{i}=s_{i-q}=s_{i+p-q}\)。
\(\forall i\le q,s_i=s_{i+p}=s_{i+p-q}\)。
所以 \(p-q\) 也是 \(s\) 的周期,辗转相减即得 \(\gcd(p,q)\) 也是 \(s\) 的周期。
强周期引理(Periodicity Lemma):强化到 \(p+q-\gcd(p,q)\le n\)。
Theorem 4
设 \(s\) 的最小周期为 \(t\)。若 \(t\) 不是整周期,那么不存在整周期。
若 \(t>\frac{n}{2}\) 显然成立。
若 \(t<\frac n 2\),那么设一个整周期为 \(z\)。显然有 \(z\le \frac n 2\),所以 \(z+t\le n\)。根据 WPL,\(\gcd(z,t)\) 也是周期,与 \(t\) 最小矛盾。
Theorem 5
\(s\) 的最小整周期为 \(p\),等价于其最长 Border \(q\) 满足 \((n-q)\mid n\)。而且 \(n-p=q\)。
定理 4 的推论。
Theorem 6
设 \(s,t\) 为字符串,\(|s|=n,|t|=m\)。若 \(2n\ge m\),则 \(s\) 在 \(t\) 的匹配位置构成一个等差数列。
若匹配位置个数 \(\le 2\) 显然成立。
下面考虑 \(\ge 3\) 的情况。设第一次、第二次匹配的位置为 \(p_1,p_2\),后面某次匹配的位置为 \(p_x\)。设 \(d_1=p_2-p_1,d_2=p_x-p_2\)。
不难得到 \(d_1,d_2\) 都是 \(s\) 的周期。
设 \(s\) 的最小周期为 \(r\),若 \(r<d_1\),那么在第一、二次匹配中间必定能再插入一个,矛盾。所以 \(r=d_1\)。
由 \(2n\ge m\),\(d_1+d_2\le n\)。由 WPL,\(\gcd(d_1,d_2)\) 也是周期,又由于 \(r=d_1\),所以 \(d_1\mid d_2\)。
由于 \(d_1\) 是周期,所以 \(p_2,p_x\) 中间每隔 \(d_1\) 个位置就能有一个匹配位置。所以所有匹配位置构成以 \(d_1\) 为公差的等差数列。
Theorem 7
\(s\) 的所有长度 \(\ge \frac n 2\) 的 Border 构成一个等差数列。
设最长 Border 为 \(n-p\)。\(n-p<\frac n 2\) 时平凡。
现在 \(n-p\ge \frac n 2\)。再设一个 \(\ge \frac n 2\) 的 Border 为 \(n-q\),那么有 \(p,q\) 的周期,且 \(p+q\le n\)。由 WPL,\(\gcd(p,q)\) 也是周期,所以 \(p\mid q\)。
由于 \(p\) 是周期,每隔 \(p\) 个就会有一个 Border。所以所有长度 \(\ge \frac n 2\) 的 Border 构成一个公差为 \(p\) 的等差数列。
Theorem 8
\(s\) 的所有 Border 可划分为 \(O(\log n)\) 个等差数列。
\(\ge \frac n 2\) 的 Border 构成等差数列,剩下的构成子问题。最多 \(\lceil \log_2 n \rceil\) 个等差数列。

浙公网安备 33010602011771号