码迷,mamicode.com
首页 > 其他好文 > 详细

Lyndon相关

时间:2020-01-06 19:25:40      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:word   字母   case   class   border   triangle   矛盾   val   定义   

Lyndon Words

定义

对于字符串 \(S\),若 \(S\) 的最小后缀为其本身,那么称 \(S\)\(\text{Lyndon}\) 串(\(\text{Lyndon Words}\)

\(S \in L\)\(\begin{cases} S是严格最小循环 \\ minsuf(s)=s \end{cases}\)

性质

\(Border(S)=\varnothing\)

推论

如果 \(u,v \in L, u \prec v\Rightarrow uv \in L\)

\(\mathcal{Proof.}\)

\(1) s=u'v,u\triangleleft u' \Rightarrow uv < u'v\)

\(2) \text{to prove uv<v}\)

? \(2.1) u \triangleleft v \Rightarrow uv<v\)

? \(2.2) u \sqsubseteq v \Rightarrow v=uv',v<v' \Leftrightarrow uv<uv' \Leftrightarrow uv<v\)

\(3) S=v',uv<v<v'\)

\(Q.E.D.\)

PS: \(\triangleleft\):严格小于,且不是前缀,必有一个字母不同,\(\sqsubseteq\):前缀

\(ex.\) 如果 \(u,v\in L,u<v \Rightarrow u^av^b\in L\)

显然。

Lyndon 分解 (Lyndon Factorization)

任意字符串 \(s\) 可以分解为 \(s=s_1s_2s_3\dots s_k\),其中 \(s_i\)\(\text{Lyndon}\) 串,\(s_i \ge s_{i+1}\),且这种分解方法是唯一的。

\(\mathcal{Proof.}\)

先证存在性

初始时每段一个字符,然后不断地将相邻两段 \(s_i<s_{i+1}\) 合并。

再证唯一性

若有两种方案,取第一次不同的位置,设 \(|s_i| > |s_i'|\),令 \(s_i=s_i's_{i+1}' \dots s_k'pre(s_{k+1}',l)\),则
\[ s_i<pre(s_{k+1}',l)\le s_{k+1}' \le s_i' < s_i,矛盾 \]

性质

  1. \(s_k\) 是最长的 \(\text{Lyndon suffix}\)
  2. \(s_1\) 是最长的 \(\text{Lyndon prefix}\)
  3. \(s_k=minsuf(s)\)

Duval 算法

\(\text{Duval}\)

Lyndon相关

标签:word   字母   case   class   border   triangle   矛盾   val   定义   

原文地址:https://www.cnblogs.com/newbielyx/p/12157972.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!