“其中每个 $\ell i$ 是非空Lyndon 词。空词对应唯一的空因子序列。[1]”
bbaa 的四种旋转是 bbaa,baab,aabb,abba。若规定 a<b,其中最小的是 aabb。选择它作为代表,便不必记住原来从圆环的哪一个位置开始读。
不过 abab 和它移动两格后的表示相同,不能说它“严格小于所有其他起点”。Lyndon 词把这类周期平局排除:它既是一个本原循环类的最小代表,也是一块能够用于唯一分解的字符串基本材料。
形式陈述
先把字典序的边界说清
字母表带有固定全序。比较两个有限词时,从左到右找到第一对不同字符,按字符序决定大小;若直到较短词结束都相同,则较短词更小。所以
空词小于每个非空词。字符排序和词排序不是同一层对象:例如 ab 小于 b,虽然前者更长,因为第一位已经决定结果。
非空词
长度一时没有需要比较的非零起点,因此每个单字母词都是 Lyndon 词。空词则按定义排除。
aabb 的三个其他旋转是 abba,bbaa,baab,都更大,所以它是 Lyndon 词。abab 在位移二处与自己相等,不是 Lyndon 词。aba 虽然本原,却有更小旋转 aab,也不是。
直觉
为什么每个本原循环类恰有一个
如果
反过来,一个本原词的全部
因此“本原”与“类中最小”合在一起才等价于 Lyndon 条件。非本原循环类仍然有最小的内容,但多个切口得到该内容,不能满足严格比较。这一细节在随后最小旋转算法的并列输出中会重新出现。
不绕圈也能判定:与全部真后缀比较
一个非空词
例如 aabb 的真后缀为 abb,bb,b。和 abb 比较时,首位同为 a,第二位 a<b;另外两个后缀都以 b 开头。三次比较全部通过,不必真的拼接循环移位。
先证明后缀条件足够。写
再证明必要性,需要先排除 border。假设一个严格最小旋转
由在切口
现在取任意非空真后缀
这个判据也解释了 aba 为什么失败:真后缀 a 是它的真前缀,所以 a<aba。无 border 是必要条件,却仍不是充分条件;ba 无非空 border,但真后缀 a 更小。
例子与边界
如何检查一张小证书
对于教学实例,直接比较每个真后缀即可。最多
Duval 算法能在线性时间把任意词分成非增的 Lyndon 因子。若分解只有一个因子且它就是整串,那么整串是 Lyndon 词。这是一种高效识别途径,依据的是下一页唯一分解定理;定义本身并不要求先运行它。
字母序必须在整个任务中固定。若把 a<b 改为 b<a,aabb 不再是本原循环类的最小代表。大小写折叠、Unicode 规范化和语言排序规则属于输入解释,不能在算法中途更换比较器。这里的字符可以是编号事件,只要比较确定且形成全序即可。
手算终点
判断 aab、aba、baa。三者同属一个本原循环类,最小的 aab 是唯一 Lyndon 代表;它小于真后缀 ab,b。另外两个分别被真后缀 a 和 aa 否定。
再判断 aabaabab。可以先尝试切成 aab|aabab:两块都是 Lyndon 词且前者小于后者,所以连接规则直接给出肯定答案,不必逐一列出七个旋转。这个方法展示了结构性证据如何代替重复比较。下一页将反过来把任意字符串拆成有唯一顺序的 Lyndon 块。
推论与应用
两个递增 Lyndon 块可以接成一个
下面这个连接规则是下一页分解定理的关键:若
先证明
再检查
取 ababb 是 Lyndon 词。如果把两个块颠倒成 abbab,结论不再适用,它确有更小后缀 ab。如果取相等块 ab,ab,连接成 abab 也不是 Lyndon 词。因此这里必须是严格递增,不能把
参考资料
- [1] M. Lothaire, Combinatorics on Words, Cambridge University Press, 1997,第5章,特别是 §5.1 的 Lyndon 词后缀刻画、连接性质及分解定理。
- Štěpán Holub and Štěpán Starosta, Lyndon Words, Archive of Formal Proofs, 2021;“Lyndon Words Formalized in Isabelle/HOL”, DLT 2021, pp. 217–228:基本刻画及唯一分解的形式化核验。
- Sukhpal Singh Ghuman, Emanuele Giaquinta and Jorma Tarhio, “Alternative Algorithms for Lyndon Factorization”, 2014,§2:零下标词序、无 border 性质与分解定义。