加载中...
Lyndon 分解将一个字符串唯一地拆成若干个字典序非递增的 Lyndon 串。Duval 算法能在线性时间、常数额外空间内求出该分解,是字符串最小表示、最小后缀等问题的基础工具。

| 类别 | 字符串算法 |
| 提出者 | Jean-Pierre Duval |
| 时间复杂度 | O(n) |
| 额外空间 | O(1) |
| 核心概念 | Lyndon 串 |
Lyndon 分解是字符串理论中的一个基本定理:任意非空字符串都可以唯一地分解为若干个 Lyndon 串的连接,且这些 Lyndon 串按字典序非递增排列。Duval 算法则是求解这一分解的经典线性算法。
所谓 Lyndon 串,是指严格小于自身所有真后缀(等价地,严格小于其所有循环移位)的字符串。Lyndon 分解定理保证这种分解存在且唯一,记作字符串等于 w1 w2 … wk,其中每个 wi 是 Lyndon 串且字典序满足 w1 大于等于 w2 大于等于 … 大于等于 wk。Duval 算法由 Jean-Pierre Duval 于 1983 年提出,可在线性时间内完成分解。
Duval 算法维护三个指针,通过比较字符逐步确定每个 Lyndon 段:
由于每个字符至多被比较常数次,算法总时间为线性,且只需常数额外空间。
Lyndon 分解及 Duval 算法可用于求字符串的最小循环表示、求最小和最大后缀、构造 Chen-Fox-Lyndon 定理相关结构,也与后缀数组、Runs 结构等字符串问题密切相关,是竞赛与文本处理中的实用工具。
问:Lyndon 分解一定唯一吗?答:是的。Lyndon 分解定理保证任意字符串的 Lyndon 分解存在且唯一,这也是许多应用能成立的前提。
问:如何用它求最小表示?答:将字符串复制一份接在自身后面再做 Duval 分解,过程中跨越原串长度中点的 Lyndon 段起点即对应最小循环表示的起始位置。

| 类别 | 字符串算法 |
| 提出者 | Jean-Pierre Duval |
| 时间复杂度 | O(n) |
| 额外空间 | O(1) |
| 核心概念 | Lyndon 串 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧