简单字符串理论

简单字符串理论

下面令 \(|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\) 个等差数列。

posted @ 2026-01-25 10:08  XP3301_Pipi  阅读(48)  评论(0)    收藏  举报
Title