Border 理论随记

下文若不特别说明下标从 1 开始。

一. 定义

对于字符串 S,若有 0p<|S|S[1..p]=S[|S|p+1..|S|],则称 S[1..p]S 的 border。

对于字符串 S,若有 0<p|S|1i|S|pS[i]=S[i+p],则称 pS 的周期。

对于字符串 S,若周期 p 满足 p|S|,则称周期 pS 的整周期。

对于字符串 S,T,若存在 1p|T||S|+1,满足 T[p..p+|S|1]=S,则称 pST 中的一个匹配位置。

二. 基本定理

1. 对于字符串 S,若 T 为其 border,则 |S||T| 为其周期。

2. 对于字符串 S,若 p 为其周期,则 S[1..|S|p] 为其 border。

3. 对于字符串 S,若有 border S[1..p],S[1..q] 满足 p<q,则 S[1..p]S[1..q] 的 border。

4. 对于字符串 S,若其 border S[1..q] 有 border S[1..p],则 S[1..p]S 的 border。

5. 对于字符串 S,对于其周期 p,若有 k 满足 kp|S|,则 kpS 的周期。

6. 对于字符串 S,若其有周期 p,q,且 p+qgcd(p,q)|S|,则 gcd(p,q) 也为 S 的周期。(Periodicity Lemma, PL)

证明:考虑 S 中模 p 意义下相等的位置字符必定相等。考虑模 p 意义下的所有剩余类,周期 q 本质上是对于所有 i,在 ii+q 所在的剩余类间连边,表示这两个剩余类的中每个位置的字符相等。容易发现若 |S|p+q,最终会连出 gcd(p,q) 个长为 pgcd(p,q) 的环,每个环表示模 gcd(p,q) 下的一个剩余类,即说明 Sgcd(p,q) 的周期。发现环去掉一条边不影响连通性,即最后的 gcd(p,q) 条边并不影响结论,所以当 |S|p+qgcd(p,q) 时,S 有长为 gcd(p,q) 的周期。

三. Border 的等差数列性质

1. 对于字符串 S,所有满足 p|S|2 的周期 p 构成等差数列。

证明:找出满足条件的 p 中最小的周期 q,试证明所有 p 都为 q 的倍数。考虑反证法,若有周期 x 满足 x|S|2x 不为 q 的倍数,则根据 PL 有更小的周期 gcd(q,x),矛盾。所以所有 p 构成首项为 q,公差为 q 的等差数列。

2. 对于字符串 S,所有 border 构成 O(log|S|) 段等差数列。

证明:由 3.1,所有长度大于等于 |S|2 的 border 构成一段等差数列。然后继续考察第一个长度小于 |S|2 的 border,由 2.3,可以将其看作原串继续递归构造。此构造方法每次使字符串长度至少减半,所以共有 O(log|S|) 段等差数列。、

四. 整周期

1. 对于字符串 S,所有整周期都是最小整周期的倍数。

证明:考虑反证法。若存在一个整周期 q 非最小整周期 p 的倍数,易知 p,q 均不为 |S|,所以 p,q|S|2。因为 PL,必有更小的整周期 gcd(p,q),矛盾。

2. 对于字符串 S,若其最小整周期不为 |S|,则最小整周期为最小周期。

证明:考虑反证法。易知最小整周期 p|S|2。若存在周期 q<p,则根据 PL 可知 gcd(p,q) 为一更小的整周期,矛盾。

五. 回文 border

1. 对于回文串 S,其回文真前缀与回文真后缀均为其 border。

2. 对于回文串 S,其 border 均为回文串。

六、例题

1. [WC2016] 论战捆竹竿

2. [HNOI2019] JOJO

3. [POI2003] Tiles

4. [POI2005] SZA-Template

5. [POI2006] PAL-Palindromes

6. [POI2011] OKR-Periodicity

7. [POI2012] PRE-Prefixuffix

8. [POI2012] OKR-A Horrible Poem

posted @   JCY_std  阅读(380)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示