Lyndon words学习笔记

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:

  1. (u')(u)的子串;
  2. (u riangleright v)(u)严格比(v)小,且非前缀;
  3. (usqsubseteq v)(u)(v)的前缀;

(uv)的后缀(S)分为三种情况:

  1. (S=u'v)时,

因为 (u riangleright u');

所以 (uv riangleright u'v);

  1. (S=v) 时,

分为两种情况;

1)(u riangleright v), 那么显然 (uv<v);

2)(usqsubseteq v),则(v=uv')

​ 因为有(v<v')

​ 所以(uv<uv'Rightarrow uv<v) ;

  1. (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} ]

此分解唯一;

性质:

  1. (S_k)为最长的(Lyndon suffix)
  2. (S_1)为最长的(Lyndon prefix)
  3. (Sk=minsuf(S))

好的后面的就不怎么会了,(或者说我只会感性理解,不知道如何理性证明,口胡)

关于证明和求(Lyndon Faetorization)(Duval)算法请参考:Lyndon相关——newbielyx

发现我经常套他博客(滑稽

原文地址:https://www.cnblogs.com/Wednesday-zfz/p/13777557.html