Lyndon words
定义:
对于一个字符串(S),若(S)的最小后缀是其本身,则(S)为一个(lyndon)串;
记为(Sin L);
即:
[S in L
egin{cases}
minsuf(S)=S\
S为其本身的mathbf{严格}最小循环
end{cases}
]
所以对于(lyndon words)有一个性质:
[Border(S)=varnothing
]
否则就不满足定义;
推论:
(ifquad u,vin Lquad andquad u<v)
(quad then quad uvin L)
证明:理性证明很难受,还是感性理解比较好,
ps:
- (u')为(u)的子串;
- (u riangleright v) :(u)严格比(v)小,且非前缀;
- (usqsubseteq v) :(u)为(v)的前缀;
按(uv)的后缀(S)分为三种情况:
- 当(S=u'v)时,
因为 (u riangleright u');
所以 (uv riangleright u'v);
- (S=v) 时,
分为两种情况;
1)(u riangleright v), 那么显然 (uv<v);
2)(usqsubseteq v),则(v=uv')
因为有(v<v')
所以(uv<uv'Rightarrow uv<v) ;
- (S=v')时,
有(uv<v<v');
综上,对于三种情况都有(uv<S);
故(uvin L);
证毕.
这样的话,就可以再推导出(u^av^bin L);
(ps:(u^a otin L))
(Lyndon)分解((Lyndon Faetorization))
定义:
对于一个串的(Lyndon Faetorization)记为(CFL(S));
则
[CFL(S)=S_1,S_2...S_k
egin{cases}
1. quad S_iin L\
2. quad S_1ge S_2 ge ...ge S_k
end{cases}
]
此分解唯一;
性质:
- (S_k)为最长的(Lyndon suffix)
- (S_1)为最长的(Lyndon prefix)
- (Sk=minsuf(S))
好的后面的就不怎么会了,(或者说我只会感性理解,不知道如何理性证明,口胡)
关于证明和求(Lyndon Faetorization)的(Duval)算法请参考:Lyndon相关——newbielyx
发现我经常套他博客(滑稽