Border理论
简单的是真简单,难的几乎到天花板。
约定一般
定义
字符串的一段前缀能和一段后缀完全匹配(非原串),则称这个前缀/后缀为原串的一个Border。
对任意合法
各种性质
或许叫不上定理,但很有用。
Border和周期
树
-
KMP的
边连起来形成一棵树,这是显然的。这里一个前缀在 树上对应着一个点。 -
一个前缀的所有Border在
树对应着一条根链。两个前缀的最长公共Border就是LCA。
各种定理
不按重要程度排序。当然那几个证明
定理 1:
原串的最长Border和最长Border的所有Border构成了原串的所有Border。
证明显然。可以证明左包含于右并且右包含于左来证明相等。
原串的所有Border就是
定理 2:弱周期引理
若
证明用更相减损术。不妨
还有强化版周期引理:若
定理 3:
若
仔细想想就挺显然的。
定理 4:
一个串用自己的前缀匹配后缀后并起来(有交的部分是一个Border),那么这个并有长度为
很显然。
定理 5:
如果
来证明。因为
匹配次数
设
由定理 4和定理 3可知前两次并起来也有最小周期
又
不难发现匹配位置必为等差序列。
定理 6:
长度
来证明。假设有最长Border长度为
定理 7:
一个串的所有Border按长度排序后可以划分成
首先将所有长度
考虑长度达到
-
若
,那么从最长Border不断减去 得到 ,此时 。 -
若
,那么最长Border的长度 。
由定理 1,可知剩下的原串的Border都是
一个更紧的上界是
从过程中可以看到公差成倍增长,于是有推论:公差
Significant suffix
定义
定理 8:
对于任意两个
如果
这样
定理 9:
如果有两个
假设
设周期为
假设在原串后加上字符串
推论:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】