Lyndon words

定义:

对于一个字符串\(S\),若\(S\)的最小后缀是其本身,则\(S\)为一个\(lyndon\)串;

记为\(S\in L\);

即:

\[S \in L
\begin{cases}
minsuf(S)=S\\
S为其本身的\mathbf{严格}最小循环
\end{cases}
\]

所以对于\(lyndon\ words\)有一个性质:

\[Border(S)=\varnothing
\]

否则就不满足定义;

推论:

\(if\quad u,v\in L\quad and\quad u<v\)

\(\quad then \quad uv\in L\)

证明:理性证明很难受,还是感性理解比较好,

ps:

  1. \(u'\)为\(u\)的子串;
  2. \(u\triangleright v\) :\(u\)严格比\(v\)小,且非前缀;
  3. \(u\sqsubseteq v\) :\(u\)为\(v\)的前缀;

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

  1. 当\(S=u'v\)时,

因为 \(u \triangleright u'\);

所以 \(uv\triangleright u'v\);

  1. \(S=v\) 时,

分为两种情况;

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

2)\(u\sqsubseteq v\),则\(v=uv'\)

​ 因为有\(v<v'\)

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

  1. \(S=v'\)时,

有\(uv<v<v'\);

综上,对于三种情况都有\(uv<S\);

故\(uv\in L\);

证毕.

这样的话,就可以再推导出\(u^av^b\in L\);

(ps:\(u^a\not\in L\))


\(Lyndon\)分解(\(Lyndon\ Faetorization\))

定义:

对于一个串的\(Lyndon\ Faetorization\)记为\(CFL(S)\);

\[CFL(S)=S_1,S_2...S_k
\begin{cases}
1. \quad S_i\in L\\
2. \quad S_1\ge 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

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

Lyndon words学习笔记的更多相关文章

  1. Lyndon Word学习笔记

    Lyndon Word 定义:对于字符串\(s\),若\(s\)的最小后缀为其本身,那么称\(s\)为Lyndon串 等价性:\(s\)为Lyndon串等价于\(s\)本身是其循环移位中最小的一个 性 ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  4. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  5. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  6. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  7. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  8. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  9. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

随机推荐

  1. go语言之抛出异常

    一: panic和recover 作用:panic 用来主动抛出错误: recover 用来捕获 panic 抛出的错误. 概述: ,引发panic有两种情况 )程序主动调用panic函数 )程序产生 ...

  2. linux字符终端(控制台)的字体更改

    查看已安装的终端字体 ls /usr/share/consolefonts/ 设置终端字体 sudo dpkg-reconfigure console-setup 或者 sudo vim /etc/d ...

  3. 点击穿透事件-----CSS新属性

    面试被问,一脸懵,被提示,还蒙,好丢脸的感觉....赶紧百度了解 .noclick{ pointer-events: none; /* 上层加上这句样式可以实现点击穿透 */ } 就是说重叠在一起的两 ...

  4. Android开发之常用框架WebView详解代码。超详细,送给初学者,完全掌握此控件

    这是我特意为新手小白写的一个代码,教大家完完全全掌握WebView, 我感觉,你看懂这个,基本上可以满足以后工作中的需要了,(只针对Webview的使用),但是其实它还有好多功能,比如真正的设计到和H ...

  5. 轮廓线DP

    轮廓线DP ​ 刚刚学了轮廓线DP,想了好久才懂. ​ 我的理解就是用一条线的状态去更新另一条线的状态,然后将格子填满. ​ 图中正方形即是要填东西(根据题意)的格子,红线的状态是由黑线转移过来的. ...

  6. Istio 的配置分析

    Istio 的配置分析 目录 Istio 的配置分析 Analyzer 的消息格式 ConflictingMeshGatewayVirtualServiceHosts 问题解决 举例 Conflict ...

  7. 搭建一个低配版的Mock Server

    mock翻译过来是模仿的意思,Server是服务器.粗暴点直译就是模仿服务器. 写在前面 通过阅读本文,你将对Mock的使用有一定的了解,对前后端分离的概念有了更深一步的认识,对Koa的使用有一定的了 ...

  8. Linux:用tar解压文件出现错误Not found in archive

    问题:用tar解压文件出现错误Not found in archive 解决办法:加上-C参数  tar -zxvf ZenTaoPMS.8.1.3.zbox_64.gz -C /usr 因为压缩文件 ...

  9. 你准备好开始DevOps了吗?

    前面一章节我们已经了解了Agile,CI/CD,DevOps,作为DevOps的起点,对于一个团队,如何开始自己的持续集成?根据我的经验,列出了一下需要考虑的点 1. 代码管理/分支策略 代码托管在哪 ...

  10. oracle之三存储库及顾问框架

    AWR存储库及顾问框架(PPT-I-349-360) 14.1 Oracle数据库采样ASH和AWR. 1) ASH(Active Session History) ASH收集的是活动会话的样本数据, ...