Border Theory

前言

只知道一些结论,但是对其中字符串的一些具体结构不是很清楚。

导致模拟赛遇见 \(\text{Border Theory}\) 题目想了两个多小时才把结论确定得七七八八,没时间写代码了。

太痛了,真的太痛了。

周期

引理 \(1\):弱周期引理

对于字符串 \(S\),若其有长度为 \(p\) 和 \(q\) 的周期,且满足 \(p+q \leq |S|\),则 \(\gcd(p,q)\) 也是 \(S\) 的周期。

考虑设 \(p>q\),并证明 \(p-q\) 是 \(S\) 的周期,通过辗转相减即可证得 \(\gcd(p,q)\) 是周期。

根据周期的定义:

  • \(\forall i \leq q,S_i=S_{i+p}=S_{i+p-q}\)

  • \(\forall i > q,S_i=S_{i-q}=S_{i-q+p}\)

故 \(p-q\) 是 \(S\) 的周期。

引理 \(2\):强周期引理

对于字符串 \(S\),若其有长度为 \(p\) 和 \(q\) 的周期,且满足 \(p+q-\gcd(p,q) \leq |S|\),则 \(\gcd(p,q)\) 也是 \(S\) 的周期。

这个我不会证。

引理 \(3\)

下文所述匹配位置均为匹配开始时的下标。

对于串 \(S\) 和 \(T\),满足 \(2|T| \geq |S|\),则 \(T\) 在 \(S\) 中匹配的位置是等差序列。

仅需考虑至少匹配三次的情况。

设 \(T\) 在 \(S\) 中的前两次匹配位置是 \(t_1,t_2\),还有后续任意一次匹配位置 \(t_x\)。

令 \(t_2-t_1=d,t_x-t_2=q\)。

因为 \(2|T| \geq |S|\),所以任意两次匹配间隔不可能超过 \(|T|\),即它们要么相交,要么恰好接在一起。

所以 \(d,q\) 均为 \(T\) 的周期。

那么因为 \(d+q =t_x-t_1 \leq |T|\),所以 \(r=\gcd(d,q)\) 也是 \(T\) 的周期。

设 \(T\) 的最小周期为 \(p\),有 \(d+p \leq d+q \leq |T|\),故 \(\gcd(d,p)\) 是 \(T\) 的周期,从而 \(\gcd(d,p)=p\)。

若 \(d>p\),则可以推出 \(t_1+p\) 是一次匹配,这与 \(t_2\) 是第二次匹配矛盾,所以 \(d=p\)。

故 \(r=p\),从而 \(p\mid q\)。

接下来令 \(t_n\) 表示最后一次匹配位置。

利用重叠和周期性不难得出,所有位于 \([t_1,t_n]\) 的,与 \(t_1\) 的差是 \(p\) 的倍数的位置均为匹配位置。

故所有匹配位置构成等差数列。

推论

从证明过程中可以看出,当 \(T\) 在 \(S\) 中匹配次数至少为 \(3\) 时,所有匹配位置的间隔均为 \(T\) 的最小周期 \(p\)。

引理 \(4\)

若 \(p\) 是 \(S\) 的周期,则 \(p\) 的所有倍数均为 \(S\) 的周期。

\(\text{Border}\)

引理 \(5\)

对于串 \(S\),若 \(b\) 为 \(S\) 的 \(\text{border}\),那么 \(|S|-b\) 是 \(S\) 的周期。

由条件易知 \(\forall i\in [1,b],S_i=S_{i+|S|-b}\),故得证。

引理 \(6\)

若串 \(T\) 是串 \(S\) 的 \(\text{border}\),串 \(W\) 也是 \(S\) 的 \(\text{border}\),且满足 \(|W|<|T|\),则 \(W\) 是 \(T\) 的 \(\text{border}\)。

这个可以用 \(\text{KMP}\) 中 \(\text{fail}\) 指针的树状结构说明。

引理 \(7\)

字符串 \(S\) 所有不小于 \(\frac {|S|} 2\) 的 \(\text{border}\) 构成等差数列。

考虑其最小周期 \(p\),和另一个周期 \(q\),满足 \(p\) 和 \(q\) 均 \(\leq \frac {|S|} 2\)。

那么根据弱周期引理,易知 \(\gcd(p,q)=p\) 是原串的周期,则 \(p \mid q\)。

那么根据引理 \(4\),可得原串 \(S\) 所有 \(\leq \frac {|S|} 2\) 的周期集合为 \(\{kp \mid kp \leq \frac {|S|} 2\}\)。

将周期转换为 \(\text{border}\) 即可证得原命题。

\(\text{Border}\) 定理

字符串 \(S\) 的所有 \(\text{border}\) 构成至多 \(\lceil \log_2 {|S|}\rceil\) 个等差数列。

由引理 \(7\) 可得所有 \(\geq \frac {|S|} 2\) 的 \(\text{border}\) 构成一个等差数列。

将 \(< \frac {|S|} 2\) 的最长 \(\text{border}\) 称为 \(T\),根据引理 \(6\),则 \(S\) 剩余的所有 \(border\) 恰好是 \(T\) 本身和 \(T\) 的所有 \(\text{border}\)。

每次递归时,字符串的长度至少减半,故等差数列最多 \(\lceil \log_2 {|S|}\rceil\) 个。

推论 \(1\)

对于字符串 \(S\),设其最小周期为 \(p\),则存在一个正整数 \(k\),满足 \(\forall c \in [1,k]\),\(cp\) 都是 \(S\) 的周期。

且除去这些周期后,剩余的周期长度均 \(> \frac {|S|} 2\)。

推论 \(2\):周期链

一个串的所有周期必定形如 \(p_0,2p_0,3p_0,\dots,a_0p_0,a_0p_0+p_1,a_0p_0+2p_1\dots\)。

具体地,一定可以写成 \(xp_k+\sum_{i=0}^{k-1} a_ip_i\),其中 \(x\in [1,a_k],k\leq \lceil \frac {|S|} 2\rceil\)。

考虑 \(S\) 所有为最小周期整数倍的周期:\(p_0,\dots,a_0p_0\)。

它们对应的最小 \(\text{border}\) 是 \(|S|-a_0p_0\)。

那么该 \(\text{border}\) 的下一个 \(\text{border}\) 是 \(|S|-a_0p_0-p_1\),其中 \(p_1\) 是该 \(\text{border}\) 的最小周期。

归纳即可证得原命题。

后话

不曾起舞的清晨,她望向倒影;

她想,我要见证雪鹄未见之梦;

我要追逐呼啸的风,向上独行;

向上,坠往恍惚、燃烧的蓝空。

看呀,我已告别尘与土的苦痛;

伸出手,触及苍穹永恒的面容。

posted @ 2026-09-17 15:10  jr_zch  阅读(22)  评论(0)    收藏  举报