• 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

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

  • 相关阅读:
    Git命令branch-分支
    Git基础命令(二)
    Git基础命令(一)
    【转载】Android状态栏微技巧,带你真正理解沉浸式模式
    Android性能分析工具
    【转载】Android卡顿检测方案
    WebView loadData中文乱码
    【Cocos2dx】新建场景、场景的切换、设置启动场景与菜单的新建
    Cocos2d-JS切换场景与切换特效
    COCOS2DX场景切换特效
  • 原文地址:https://www.cnblogs.com/Wednesday-zfz/p/13777557.html
Copyright © 2020-2023  润新知