Skip to content

定义Definition

Lyndon 词

Lyndon word · Lyndon字 · 林登词

在固定字母序下严格小于每个非零循环移位的非空词,等价于严格小于每个非空真后缀的词。

bbaa 的四种旋转是 bbaa,baab,aabb,abba。若规定 a<b,其中最小的是 aabb。选择它作为代表,便不必记住原来从圆环的哪一个位置开始读。

不过 abab 和它移动两格后的表示相同,不能说它“严格小于所有其他起点”。Lyndon 词把这类周期平局排除:它既是一个本原循环类的最小代表,也是一块能够用于唯一分解的字符串基本材料。

形式陈述 ​

先把字典序的边界说清 ​

字母表带有固定全序。比较两个有限词时,从左到右找到第一对不同字符,按字符序决定大小;若直到较短词结束都相同,则较短词更小。所以

a<aa<aab<ab<b.

空词小于每个非空词。字符排序和词排序不是同一层对象:例如 ab 小于 b,虽然前者更长,因为第一位已经决定结果。

非空词 w 称为 Lyndon 词,若对每个 1≤k<|w| 都有

w<rot(w,k).

长度一时没有需要比较的非零起点,因此每个单字母词都是 Lyndon 词。空词则按定义排除。

aabb 的三个其他旋转是 abba,bbaa,baab,都更大,所以它是 Lyndon 词。abab 在位移二处与自己相等,不是 Lyndon 词。aba 虽然本原,却有更小旋转 aab,也不是。

直觉

为什么每个本原循环类恰有一个 ​

如果 w=um、m≥2,移动 |u| 个位置不改变内容,严格不等式失败。因此 Lyndon 词必是本原词。

反过来,一个本原词的全部 n 个旋转都不同,这已由旋转的计数规则证明。有限个互异词在全序中恰有一个最小者;它严格小于其余旋转,所以是 Lyndon 词。

因此“本原”与“类中最小”合在一起才等价于 Lyndon 条件。非本原循环类仍然有最小的内容,但多个切口得到该内容,不能满足严格比较。这一细节在随后最小旋转算法的并列输出中会重新出现。

不绕圈也能判定:与全部真后缀比较 ​

一个非空词 w 是 Lyndon 词,当且仅当

w<v对每个非空真后缀 v成立.

例如 aabb 的真后缀为 abb,bb,b。和 abb 比较时,首位同为 a,第二位 a<b;另外两个后缀都以 b 开头。三次比较全部通过,不必真的拼接循环移位。

先证明后缀条件足够。写 w=uv,其中 u,v 非空。既然 w<v,决定大小的差异必发生在 v 结束之前:w 更长,不可能是 v 的真前缀,而若 v 是 w 的前缀又会有 v<w。旋转 vu 以 v 开始,保留这个决定性差异,所以 w<vu。

再证明必要性,需要先排除 border。假设一个严格最小旋转 w 有非空真 border v,则同时可写成

w=uv=vz,|u|=|z|.

由在切口 |u| 处的严格最小性,有 vz=w<vu,消去共同前缀 v 得 z<u。因为 z,u 等长,后面各接 v 不会改变这个严格比较,于是 zv<uv=w。但 zv 也是 w=vz 的一个旋转,矛盾。所以 Lyndon 词无非空真 border。

现在取任意非空真后缀 v。它不可能同时是前缀;比较 w 和 v 必在 v 结束前出现字符差异。如果该差异给出 v<w,旋转 vu 也会小于 w,再次矛盾。因此只能有 w<v。两向证明完成。

这个判据也解释了 aba 为什么失败:真后缀 a 是它的真前缀,所以 a<aba。无 border 是必要条件,却仍不是充分条件;ba 无非空 border,但真后缀 a 更小。

例子与边界

如何检查一张小证书 ​

对于教学实例,直接比较每个真后缀即可。最多 n−1 次比较,每次最多查看 n 个字符,因此最坏 O(n2)。只存切片边界可用常数个索引;若语言的切片会复制,需把临时复制成本和空间计入。不能说“比较了 n 个后缀”就算成 O(n) 时间。

Duval 算法能在线性时间把任意词分成非增的 Lyndon 因子。若分解只有一个因子且它就是整串,那么整串是 Lyndon 词。这是一种高效识别途径,依据的是下一页唯一分解定理;定义本身并不要求先运行它。

字母序必须在整个任务中固定。若把 a<b 改为 b<a,aabb 不再是本原循环类的最小代表。大小写折叠、Unicode 规范化和语言排序规则属于输入解释,不能在算法中途更换比较器。这里的字符可以是编号事件,只要比较确定且形成全序即可。

手算终点 ​

判断 aab、aba、baa。三者同属一个本原循环类,最小的 aab 是唯一 Lyndon 代表;它小于真后缀 ab,b。另外两个分别被真后缀 a 和 aa 否定。

再判断 aabaabab。可以先尝试切成 aab|aabab:两块都是 Lyndon 词且前者小于后者,所以连接规则直接给出肯定答案,不必逐一列出七个旋转。这个方法展示了结构性证据如何代替重复比较。下一页将反过来把任意字符串拆成有唯一顺序的 Lyndon 块。

推论与应用

两个递增 Lyndon 块可以接成一个 ​

下面这个连接规则是下一页分解定理的关键:若 u,v 都是 Lyndon 词,并且 u<v,那么 uv 也是 Lyndon 词。[1]

先证明 uv<v。若 u,v 在较短者结束前已有差异,u<v 的决定性字符在连接后仍存在。剩下的情形是 u 为 v 的真前缀,写 v=uz。由于 v 是 Lyndon 词,有 v<z,两侧接上相同前缀 u 得 uv<uz=v。

再检查 uv 的所有非空真后缀。完全位于 v 内的后缀 t 满足 v≤t,所以 uv<v≤t。从 u 内部开始的后缀形如 tv,其中 t 是 u 的非空真后缀;u<t 的决定性字符在 t 结束前出现,因此接上后续内容仍有 uv<tv。所有后缀都通过判据,故 uv 是 Lyndon 词。

取 u=ab,v=abb,有 u<v,于是 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 性质与分解定义。
关系图谱10 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
分类位置

上位 / 更一般

下位 / 直接特例

暂未标注直接特例。