首页 > 其他分享 >Border理论

Border理论

时间:2024-12-25 20:09:17浏览次数:3  
标签:le gcd 理论 原串 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+p}=s_{i+p-q}\),当\(i\ge q\)时\(s_i=s_{i-q}=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:

长度\(\le \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|)\)。

标签:le,gcd,理论,原串,Border,定理,周期
From: https://www.cnblogs.com/EmilyDavid/p/18631325

相关文章

  • 【深度学习基础|知识概述】基础数学和理论知识中的线性知识:矩阵与向量运算、特征值与
    【深度学习基础|知识概述】基础数学和理论知识中的线性知识:矩阵与向量运算、特征值与特征向量、张量,附代码。【深度学习基础|知识概述】基础数学和理论知识中的线性知识:矩阵与向量运算、特征值与特征向量、张量,附代码。文章目录【深度学习基础|知识概述】基础数学和理......
  • 说说你对border-collapse属性的理解
    border-collapse属性在前端开发中主要用于控制表格边框的显示方式。以下是对border-collapse属性的详细理解:作用:border-collapse属性用于指定表格的边框是否合并为一个单一的边框。在HTML标准中,表格的每个单元格默认都有自己的边框,这可能会导致边框重叠和视觉上的混乱。通过设......
  • 跟着问题学23番外——反向传播算法理论及pytorch自动求导详解
    前向传播与反向传播在单层神经网络的优化算法里,我们讲到优化算法是为了寻找模型参数使得网络的损失值最小,这里详细介绍一下应用的基础——反向传播算法。在神经网络中,梯度计算是通过反向传播算法来实现的。反向传播算法用于计算损失函数相对于网络参数(如权重和偏置)的梯度,从而......
  • 今年读过最绝的一本书!仅仅449页,学透大模型技术—《自然语言处理:大模型理论与实践》NLP
    《自然语言处理:大模型理论与实践》是一本由赵宇教授和任福继教授主编的书籍,专注于自然语言处理(NLP)技术,尤其是在大模型技术方面的理论与实践。这本书详细介绍了大模型技术在自然语言处理中的应用,包括语言模型的基础知识、大模型的关键技术,以及如何在实际中应用这些模型。......
  • 基于覆盖选址理论的两阶段随机规划模型
    基于覆盖选址理论的两阶段随机规划模型是一种结合了覆盖选址理论与随机规划方法的选址决策模型。以下是对该模型的详细解析:一、覆盖选址理论覆盖选址问题主要分为集覆盖问题和最大覆盖问题两类:集覆盖问题:研究在满足覆盖所有需求点的条件下,寻求所建设施个数或建设成本最小化的......
  • 2 升力线理论
    2升力线理论2.1减阻阻力什么是阻力?阻力是阻止主要运动(位移向量)的力。可以用一个简单的公式描述阻力:\[\begin{equation}\overrightarrow{R_2}-\overrightarrow{R_1}\propto\vec{T}-\vec{D}\end{equation}\]这里的R是反作用力(reactiveforce),T是推力(thrust),D是阻力(drag)......
  • 代码随想录算法训练营第五十五天|并查集理论基础、寻找存在的路径
    前言打卡代码随想录算法训练营第49期第五十五天(~ ̄▽ ̄)~首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。学习今天的课程前,先看并......
  • 【多源数据融合】基于Dempster-Shafer理论的信念对数相似度测量及其在多源数据融合中
     ......
  • 方案设计三驾马车:理论计算、仿真分析与实验测试,相辅相成,互相印证。
     ......
  • PID:从理论到实践
    在PID_learning1中,对控制系统的进行了概要,并对经典算法PID进行介绍与公式理解。作为号称可以解决95%的工程问题的PID,浅尝辄止不是显然我们的目标。本文将结合经典控制理论的相关内容,从校正装置的角度对PID进行理解讨论,并使用MATLAB/Simulink工具进行建模实践。最后,在相同的......