[学习笔记]Border&Period杂谈
十分简要地胡乱说一些与 Border 相关的东西。
Border 是什么?
用 kmp 求的那个东西就是 border,因此 border 可以在 内用 kmp 求出来,每个前缀的 border 构成树形结构,把这个树建出来,我们称其为失配树。
Border 的性质
弱周期引理(Weak Periodicity Lemma,WPL)
若 为 的周期,且 ,那么 也是 的周期。
证明:不妨设 ,令 ,那么:
- 当 时,;
- 当 时,;
不难发现 取遍 ,因此 也为 的周期,根据辗转相除法,可证 为 的周期。
周期定理(Periodicity Lemma,PL)
若 为 的周期,且 ,那么 也是 的周期。
它比 WPL 稍微强一点在于对 的限制。用得少,不证它了。
前缀整除周期传递性
若 是 的前缀,且 有周期 , 有周期 ,,则 也有周期 .
证明:画个图就行。
长串等差匹配位
若 ,则 在 中的匹配位置必为等差序列.
证明:先将 中没有被 覆盖的部分去掉,由于 ,因此此时的 的所有部分都被 覆盖。
对于 在 中的匹配位小于等于 ,结论是显然的,下面考虑匹配位大于 的情况。
设 在 中第一二次的匹配位差为 ,第二次与后面的某一次匹配位差为 ,不难发现 均为 的周期,并且显然有 ,并且 ,可得 ,由 WPL 得 为 的周期。设 为 的最小周期,那么有 ,否则 可以使用 WPL 构造更小的周期。此时 .

若 ,那么,由于 是 的循环,因此我们可以找到一个距离第一匹配位距离比 更小的第二匹配位,与 的定义矛盾。

因此只有可能是 ,又因为 ,因此 ,所以匹配位在处理之后的 上,从位置 开始,每 个出现一次。还原到原来的 串上,匹配位就是公差为 的等差数列了。

长 border 等差匹配位
的长度达到 的 border 的长度构成等差序列。
设 为 的两个长度达到 的 border,且 是最大的 border,那么 为 的最小周期,且 均为 的周期,由于 ,因此 ,因此 也为 的周期,由于 是 的最小周期,因此 ,即 ,且 是最小周期,因此所有的 border 长度以 为公差构成等差序列。
不难发现,实际上 都是 的 border,因为既然 为周期,那么 均为周期,进而说明 均为 border.
长 border 大一统
设 为 的最大 border,如果 ,那么所有 的长度在 的 border 都是 的形式,并且不存在其他形式。
采用反证法,设 也是长度在 的 border,且不是 的形式。由于 也是周期,因此我们显然可以将这个 进行 来任意调整。
假设 ,显然我们可以找到一个 且 ,此时,如果 ,那么我们就可以使用 WPL 证明 为周期进而推出矛盾了。
如何达到 呢?注意前面,我们可以将 进行调整,显然可以将 对 取模,此时保证了 ,此时 了。
当然也可以用前面的等差匹配位来证明,显然可以找到一个 使得 ,且 也为 border,由等差匹配位, 应与其他 构成等差序列,此时公差会变小,与 的假设构成矛盾。
等差数列对数级
一个串 的所有 border 按长度排序后,可以被划分成 个等差序列。
把达到 的 border 取出来,就是一个等差序列。然后只需要考虑长度为 的前缀 ,对于 ,将达到 的 border 取出来,又是一个等差序列......因此,只会有 个等差序列。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通