Lyndon 分解 小记
参考:IOI2021 国家集训队论文 胡昊
以下表示字符串的下标都是
定义
- 定义简单串
指 ,也即 任意真后缀大于 - 定义串
的 lyndon 分解为 ,其中满足 且所有的 均为简单串
性质
-
串
是简单串,当且仅当它小于所有与它循环同构的串-
若
是简单串,破环成链之后 -
若
小于与它循环同构的所有串,则不妨考虑反证法,设:
,其中 是最短的 的后缀,则根据假设, ,也即这可以导出
存在前缀关系-
是 的前缀,不妨设 ,那么有 。又因为
是所有串里面最短的,所以这个 应当满足 也就是所以可以得到
,显然不成立 -
是 的前缀,不妨设 ,那么有 ,也就有 。又因为
,这是矛盾的。
-
-
若
是简单串,则 , 也是简单串对于每个真后缀
,有 ,所以对于 的每个真后缀与 比较的不同位置涉及不到最后一个位置,所以 -
Lyndon 分解是唯一的
不妨假设
存在两个 Lyndon 分解,我们删去两个分解开头相同的部分,只剩下那么不妨设
,则设 ,根据 ,以及循环同构最小,可以有:这显然矛盾
后缀 Lyndon 分解
考虑使用后缀数组对所有后缀进行排序,设
那么可以给出 Lyndon 分解为
证明感性?其实
前缀 Lyndon 分解-Duval 算法
定义近似简单串
显然简单串也是近似简单串。
考虑使用三个指针
分类讨论:
-
,显然直接扩展即可, -
,可以发现此时 是一个简单串,可以看成近似简单串,也就是 -
,可以发现此时 已经小于 了,直接把 划出来变成一个新的也就是不断填入
,直到 ,因为单个字符也算近似简单串
咕了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!