Lyndon 分解 小记

参考:IOI2021 国家集训队论文 胡昊

以下表示字符串的下标都是 \([0,|S|-1]\),设 \(n\) 为最后一项下标也就是 \(|S|-1\)

定义

  • 定义简单串 \(S\)\(\forall i\in [1,|S|-1],S[i,n]>S\),也即 任意真后缀大于 \(S\)
  • 定义串 \(S\) 的 lyndon 分解为 \(S=w_1w_2…w_m\),其中满足 \(w_i\ge w_{i+1}\) 且所有的 \(w_i\) 均为简单串

性质

  1. \(S\) 是简单串,当且仅当小于所有与它循环同构的串

    1. \(S\) 是简单串,破环成链之后 \(i\ge 1,S[i,n]>S\implies S[i,n+i-1]>S\)

    2. \(S\) 小于与它循环同构的所有串,则不妨考虑反证法,设:

    \(S=A+B\),其中 \(B\) 是最短的 \(S\ge B\) 的后缀,则根据假设,\(BA>S\),也即 \(BA>AB\ge B\)

    这可以导出 \(A,B\) 存在前缀关系

    1. \(A\)\(B\) 的前缀,不妨设 \(B=AC\),那么有 \(ACA>AAC\ge AC\implies CA>AC\ge C\)

      又因为 \(B\) 是所有串里面最短的,所以这个 \(C\) 应当满足 \(S<C\) 也就是 \(AC\le AAC<C\)

      所以可以得到 \(C\le AC<C\),显然不成立

    2. \(B\)\(A\) 的前缀,不妨设 \(A=BC\),那么有

      \(BBC>BCB\ge B\),也就有 \(BC>CB\)

      又因为 \(S=BCB<CBB\),这是矛盾的。

  2. \(S+a\) 是简单串,则 \(b> a\)\(S+b\) 也是简单串

    对于每个真后缀 \(T\),有 \(Tb>Ta>Sa,|Tb|<|Sa|\),所以对于 \(S\) 的每个真后缀与 \(S\) 比较的不同位置涉及不到最后一个位置,所以 \(Tb>Sb\)

  3. Lyndon 分解是唯一的

    不妨假设 \(S\) 存在两个 Lyndon 分解,我们删去两个分解开头相同的部分,只剩下 \(w_1w_2…w_m,w'_1w'_2…w'_{m'}\)

    那么不妨设 \(|w_1|<|w'_1|\),则设 \(w_1=A,w'_1=AB,w_2=BC\),根据 \(w_2\le w_1\),以及循环同构最小,可以有:

    \(BC\le A<AB<B\)

    这显然矛盾

后缀 Lyndon 分解

考虑使用后缀数组对所有后缀进行排序,设 \(a_i=\min_{j>i,S[j,n]<S[i,n]}j\) 如果不存在设置 \(j=n+1=|S|\),这个可以利用数据结构轻松求出。

那么可以给出 Lyndon 分解为 \([0,a_0-1][a_0,a_{a_0}-1]…\)

证明感性?其实 \(w_i\ge w_{i+1}\) 是容易看出的,我们只需要证明 \(w_i\) 是简单串即可。这也是简单的,根据后缀排序可得。

前缀 Lyndon 分解-Duval 算法

定义近似简单串 \(S=w^kw_0\),其中 \(w^k\)\(w\) 重复 \(k\) 次所得,且 \(w_0\)\(w\) 的前缀。

显然简单串也是近似简单串。

考虑使用三个指针 \(i,j,k\) 表示:\([0,i-1]\) 已经处理,\([i,j-1]\) 是一个近似简单串 \(w^kw_0\),而 \(k\)\(j-|w|\)

分类讨论:

  • \(S_j=S_k\),显然直接扩展即可,\(j\leftarrow j+1,k\leftarrow k+1\)

  • \(S_j>S_k\),可以发现此时 \([i,j]\) 是一个简单串,可以看成近似简单串,也就是 \(j\leftarrow j+1,k\leftarrow i\)

  • \(S_j<S_k\),可以发现此时 \(w_0S_j\) 已经小于 \(w\) 了,直接把 \(w^x\) 划出来变成一个新的 \(w\)

    也就是不断填入 \(w,|w|=j-k\),直到 \(i'> k\)

    \(i\leftarrow i',j\leftarrow i+1,k\leftarrow i\),因为单个字符也算近似简单串

咕了

题目应用

最小表示法

最小划分

前缀最小后缀

JSOI2019 节日庆典

EC Final 2022 Minimum Suffix

posted @ 2024-10-22 21:47  spdarkle  阅读(4)  评论(0编辑  收藏  举报