1.一些定义
Lyndon Word:对于任意字符串 \(s\) 如果对任意后缀 \(S\),有$ S>s$,那么称 \(s\) 为Lyndon Word。
举个例子:\(\texttt{abcdefg}\) 是 Lyndon Word,而 \(\texttt{gfedcba}\) 不是。
定义 \(\mathbb L\) 表示 Lyndon Word 构成的集合。
Lyndon 分解:对于任意字符串 \(s\),如果存在一组字符串 \(w_1,w_2,\cdots,w_k\),满足:
- \(w_1w_2\cdots w_k=s\);
- \(\forall i,w_i\) 是 Lyndon Word;
- \(w_1\ge w_2\ge w_3\cdots w_k\);
则称 \(\{w_i|1\le i\le k\}\) 为 \(s\) 的 Lyndon 分解,并记 \(\text{CFL}(s)=\{w_i|1\le i\le k\}\) 。
2.一些性质
(以下定理证明可以康zght's blog)
- 若 \(a,b\in \mathbb L\) ,且 \(a<b\) ,则 \(ab\in \mathbb L\)。
- Lyndon 分解存在且唯一。
- \(w_1\) 是最长的 Lyndon 前缀, \(w_k\) 是最长的 Lyndon 后缀。
- \(s\) 的最小后缀是 \(w_k\) 。
3. Duval's Algorithm
下记 \((s)^k\) 表示 \(s\) 重复 \(k\) 次的结果,例如 \((\texttt{ab})^5=\texttt{ababababab}\) 。
来源:oschina
链接:https://my.oschina.net/u/4370783/blog/4486215