Border 理论随记
下文若不特别说明下标从 开始。
一. 定义
对于字符串 ,若有 ,,则称 为 的 border。
对于字符串 ,若有 ,,,则称 为 的周期。
对于字符串 ,若周期 满足 ,则称周期 为 的整周期。
对于字符串 ,若存在 ,满足 ,则称 为 在 中的一个匹配位置。
二. 基本定理
1. 对于字符串 ,若 为其 border,则 为其周期。
2. 对于字符串 ,若 为其周期,则 为其 border。
3. 对于字符串 ,若有 border 满足 ,则 为 的 border。
4. 对于字符串 ,若其 border 有 border ,则 为 的 border。
5. 对于字符串 ,对于其周期 ,若有 满足 ,则 为 的周期。
6. 对于字符串 ,若其有周期 ,且 ,则 也为 的周期。(Periodicity Lemma, PL)
证明:考虑 中模 意义下相等的位置字符必定相等。考虑模 意义下的所有剩余类,周期 本质上是对于所有 ,在 与 所在的剩余类间连边,表示这两个剩余类的中每个位置的字符相等。容易发现若 ,最终会连出 个长为 的环,每个环表示模 下的一个剩余类,即说明 有 的周期。发现环去掉一条边不影响连通性,即最后的 条边并不影响结论,所以当 时, 有长为 的周期。
三. Border 的等差数列性质
1. 对于字符串 ,所有满足 的周期 构成等差数列。
证明:找出满足条件的 中最小的周期 ,试证明所有 都为 的倍数。考虑反证法,若有周期 满足 且 不为 的倍数,则根据 PL 有更小的周期 ,矛盾。所以所有 构成首项为 ,公差为 的等差数列。
2. 对于字符串 ,所有 border 构成 段等差数列。
证明:由 3.1,所有长度大于等于 的 border 构成一段等差数列。然后继续考察第一个长度小于 的 border,由 2.3,可以将其看作原串继续递归构造。此构造方法每次使字符串长度至少减半,所以共有 段等差数列。、
四. 整周期
1. 对于字符串 ,所有整周期都是最小整周期的倍数。
证明:考虑反证法。若存在一个整周期 非最小整周期 的倍数,易知 均不为 ,所以 。因为 PL,必有更小的整周期 ,矛盾。
2. 对于字符串 ,若其最小整周期不为 ,则最小整周期为最小周期。
证明:考虑反证法。易知最小整周期 。若存在周期 ,则根据 PL 可知 为一更小的整周期,矛盾。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】