Border理论

简单的是真简单,难的几乎到天花板。

约定一般\(n\)表示原串长度,\(\Sigma\)为字符集。

定义

字符串的一段前缀能和一段后缀完全匹配(非原串),则称这个前缀/后缀为原串的一个Border。

对任意合法\(i\)\(s_i=s_{i+p}\),则称\(p\)为原串的一个周期。\(p\mid n\)时称之整周期。

各种性质

或许叫不上定理,但很有用。

Border和周期

\(s_{1\dots p}\)为Border当且仅当\(|s|-p\)为原串的一个周期。

\(fail\)

  • KMP的\(fail\)边连起来形成一棵树,这是显然的。这里一个前缀在\(fail\)树上对应着一个点。

  • 一个前缀的所有Border在\(fail\)树对应着一条根链。两个前缀的最长公共Border就是LCA。

各种定理

不按重要程度排序。当然那几个证明\(O(\log n)\)的都挺重要的。

定理 1:

原串的最长Border和最长Border的所有Border构成了原串的所有Border。

证明显然。可以证明左包含于右并且右包含于左来证明相等。

原串的所有Border就是\(\{fail_n,fail_{fail_n},\dots\}\)

定理 2:弱周期引理

\(p,q\)\(s\)的周期,且\(p+q\le n\),那么\(\gcd(p,q)\)也是\(s\)的周期。

证明用更相减损术。不妨\(p>q\),当\(i\le p\)\(s_i=s_{i+q}=s_{i+q-p}\),当\(i\ge p\)\(s_i=s_{i-p}=s_{i-p+q}\)。两种情况包含所有\(i\),于是\(p-q\)也是周期,于是推出\(\gcd(p,q)\)\(s\)的周期。

还有强化版周期引理:若\(p,q\)\(s\)的周期,且\(p+q-\gcd(p,q)\le n\),那么\(\gcd(p,q)\)也是\(s\)的周期。不会证明。

定理 3:

\(t\)与周期\(a\)\(s\)\(t\)的一段前缀且有周期\(b\)\(b\mid a\)\(|s|\ge a\),那么\(b\)也是\(t\)的周期。

仔细想想就挺显然的。

定理 4:

一个串用自己的前缀匹配后缀后并起来(有交的部分是一个Border),那么这个并有长度为\(|s|-|\texttt{Border}|\)的周期。

很显然。

定理 5:

如果\(2|s|\ge |t|\),那么\(s\)\(t\)中的匹配位置必定为等差数列。

来证明。因为\(2|s|\ge |t|\)\(s\)\(t\)中的匹配位置一定有交。不妨将\(t\)中没有被\(s\)的匹配位置覆盖到的地方去掉(肯定是首尾的位置)。

匹配次数\(\le 2\)时一定等差,于是来看匹配次数达到\(3\)的情况。不妨设前两次差为\(p\),后两次差为\(q\)。现在\(p+q+|s|=|t|\),那么\(p+q\le |s|\),于是\(r=\gcd(p,q)\)也是\(s\)的周期。

\(s\)的最小周期为\(x\),那么一定有\(x\mid r\mid p\),否则可以用弱周期引理继续构造更小的周期。

由定理 4和定理 3可知前两次并起来也有最小周期\(x\),并且\(p=x\)否则可以有更靠前的匹配。又\(x\le r\le p\),于是\(x=r=p\)

\(p=r=\gcd(p,q)\),所以所有匹配的循环节都是重合的,于是\(t\)也有\(x\)的最小周期。

不难发现匹配位置必为等差序列。

定理 6:

长度\(\ge \dfrac{n}{2}\)的Border的长度构成一个等差序列。

来证明。假设有最长Border长度为\(n-p\),另一个Border长度为\(n-q\),那么\(p,q\)都为周期,且\(p+q\le n\)。由弱周期引理得\(\gcd(p,q)\)为周期,于是存在一个Border的长度为\(n-\gcd(p,q)\),并且\(p\le \gcd(p,q)\)。所以\(p=\gcd(p,q)\)\(p\mid q\),这就构成等差了,公差为\(p\)

定理 7:

一个串的所有Border按长度排序后可以划分成\(O(\log n)\)个等差序列。

首先将所有长度\(\ge \dfrac{n}{2}\)的Border划分到一个等差序列中。

考虑长度达到\(\dfrac{n}{2}\)的最短的Border\(T\)。设最小周期为\(d\),那么讨论:

  • \(d\le \dfrac{n}{4}\),那么从最长Border不断减去\(d\)得到\(T\),此时\(|T|\le \dfrac{3}{4}n\)

  • \(d>\dfrac{n}{4}\),那么最长Border的长度\(\le \dfrac{3}{4}n\)

由定理 1,可知剩下的原串的Border都是\(T\)的Border,于是问题规模缩减到了原来的\(\dfrac{3}{4}\)。所以是\(O(\log n)\)

一个更紧的上界是\(\lceil \log_2 n\rceil\)

从过程中可以看到公差成倍增长,于是有推论:公差\(\ge d\)的Border等差序列的总大小是\(O(\dfrac{n}{d})\)的。

Significant suffix

定义\(\texttt{minsuf}\)表示最小后缀,\(\texttt{ssuf}\)是在原串后面接上一个串后可能成为最小后缀的后缀集合。

定理 8:

对于任意两个\(\texttt{ssuf}\ U,V\)\(|U|<|V|\)\(U\)\(V\)的前缀。

如果\(U\)不是\(V\)的前缀,那么\(UT\)\(VT\)的大小关系只会由\(U,V\)的大小关系决定,二者只有其一是\(\texttt{ssuf}\),矛盾。得证。

这样\(U\)还是\(V\)的Border。

定理 9:

如果有两个\(\texttt{ssuf}\)\(U\)\(V\),满足\(|U|<|V|\),那么\(2|U|<|V|\)

假设\(|U|<|V|<2|U|\),由定理 8知\(U\)\(V\)的Border。于是\(V\)有长度为\(|V|-|U|\)的周期。

设周期为\(T\)\(|T|=|V|-|U|\),那么设\(U=TC\)\(V=TTC\)

假设在原串后加上字符串\(R\),若\(UR>VR\)那么\(U\)不会是\(\texttt{minsuf}\)。若\(UR<VR\),那么\(TCR<TTCR\iff CR<TCR=UR\),注意到\(C\)也是后缀,所以\(U\)不会是\(\texttt{minsuf}\)。综上\(U\)不会是\(\texttt{ssuf}\),这与假设矛盾。得证。

推论:\(|\texttt{ssuf(s)}|=O(\log |s|)\)

posted @ 2024-12-25 20:01  RandomShuffle  阅读(152)  评论(0)    收藏  举报