关于\(LCP\)有如下两个公式:

  • \(LCP~Lemma:\) 对任意 \(1\le i<j<k\le n\) ,存在 \(LCP(i,k)=min\{LCP(i,j),LCP(j,k)\}\) 成立。
  • \(LCP~Theorem:\) 对任意 \(i<j\),存在 \(LCP(i,j)=^{~~~~~min}_{i+1 \le k \le j}\{LCP(k-1,k)\}\) 成立。

\(LCP~Lemma\) 的证明:

设 \[p=min\{LCP(i,j),LCP(j,k)\}\]
则有 \[LCP(i,j) \ge p,LCP(j,k) \ge p\]
可得 \[LCP(i,k) \ge p\]
又设 \[LCP(i,k)=q>p\]
则\(Suffix_i\)与\(Suffix_k\)前\(q\)个字符相同。即:\[Suffix_{i,1}=Suffix_{k,1}\] \[Suffix_{i,2}=Suffix_{k,2}\] \[…\] \[Suffix_{i,q}=Suffix_{k,q}\]
而 \[min{LCP(i,j),LCP(j,k)}=p\]
说明 \[Suffix_{i,p+1}!=Suffix_{j,p+1}~~\text{或}~~Suffix_{j,p+1}!=Suffix_{k,p+1}\]
那么一定有如下式子成立 \[Suffix_{i,p+1}!=Suffix_{k,p+1}\]
于是,\(q>p\)不成立,即\[LCP(i,k) \le p\]
于是\[LCP(i,k)=p=min\{LCP(i,j),LCP(j,k)\}~~\text{得证。}\]

\(LCP~Theorem\) 的证明:

由\(LCP~Lemma\)得:\[LCP(i,j)=min\{LCP(i,i+1),LCP(i+1,j)\}\]
又:\[LCP(i+1,j)=min\{LCP(i+1,i+2),LCP(i+2,j)\}\]
经归纳得:\[LCP(i,j)=^{min}_{i<k \le j}\{LCP(k-1,k)\}\text{得证。}\]

关于后缀间$LCP$的一些公式的证明的更多相关文章

  1. hdu 3518 Boring counting 后缀数组LCP

    题目链接 题意:给定长度为n(n <= 1000)的只含小写字母的字符串,问字符串子串不重叠出现最少两次的不同子串个数; input: aaaa ababcabb aaaaaa # output ...

  2. UVA 11107 Life Forms——(多字符串的最长公共子序列,后缀数组+LCP)

    题意: 输入n个序列,求出一个最大长度的字符串,使得它在超过一半的DNA序列中连续出现.如果有多解,按照字典序从小到大输出所有解. 分析:这道题的关键是将多个字符串连接成一个串,方法是用不同的分隔符把 ...

  3. 一个形式较精细的Strling公式的证明

    近日整理书稿,在整理至Strling公式处时,发现当时数学老师所讲的是形式比较精细的一种: Strling公式:\(n!=\sqrt{2\pi n}\left(\dfrac{n}{\mathrm{e} ...

  4. Cauchy-Binet公式的证明 及 对Denton et al. (2019)的个人注(1)

    ------------恢复内容开始------------ 据新闻报道数学天才陶哲轩和3个物理学家研究出一个只用特征值就可以计算矩阵特征向量的公式, 我感觉很有趣, 这应该能够应用在很多领域中, 所 ...

  5. RSA算法原理——(3)RSA加解密过程及公式论证

    上期(RSA简介及基础数论知识)为大家介绍了:互质.欧拉函数.欧拉定理.模反元素 这四个数论的知识点,而这四个知识点是理解RSA加密算法的基石,忘了的同学可以快速的回顾一遍. 一.目前常见加密算法简介 ...

  6. 【bzoj2882】工艺 后缀自动机+STL-map

    题目描述 小敏和小燕是一对好朋友. 他们正在玩一种神奇的游戏,叫Minecraft. 他们现在要做一个由方块构成的长条工艺品.但是方块现在是乱的,而且由于机器的要求,他们只能做到把这个工艺品最左边的方 ...

  7. 一文读懂后缀自动机 Suffix_Automata

    原论文(俄文)地址:suffix_automata 原翻译(中文)地址:后缀自动机详解(DZYO的博客) Upd:强推浅显易懂(?)的SAM讲解 后缀自动机 后缀自动机(单词的有向无环图)--是一种强 ...

  8. 后缀自动机&回文自动机学习笔记

    在学了一天其实是边学边摆之后我终于大概$get$后缀自动机了,,,就很感动,于是时隔多年我终于决定再写篇学习笔记辽$QwQ$ $umm$和$FFT$学习笔记一样,这是一篇单纯的$gql$的知识总结博, ...

  9. 用积分方法求K次方和数列公式

    这是我很早以前在高中时发现的一个通用计算K次方和数列公式的方法,很特别的地方是用了微积分中的积分方法.目前我还没有发现有谁提出和我一样的方法,如果哪位读者有相关发现,麻烦告知我. 大家很多人都知道高斯 ...

随机推荐

  1. vue-cli起项目步骤

    1.全局安装 vue-cli 老版本:npm install -g vue-cli  (npm uninstall vue-cli -g 卸载) 新版本:npm install -g @vue/cli ...

  2. The call() and apply() Mtheods

    Example 6-4function classof(o) {     if (o === null) return "Null";     if (o ===undefined ...

  3. H3C TFTP操作示例

  4. 2018-11-13-WPF-禁用实时触摸

    title author date CreateTime categories WPF 禁用实时触摸 lindexi 2018-11-13 10:45:37 +0800 2018-5-4 21:0:3 ...

  5. Eclipse GlassFish Server 配置

    一.下载GlassFish Server    通过如下地址下载合适版本:    http://glassfish.java.net/public/downloadsindex.html    htt ...

  6. codeforces 1217E E. Sum Queries? (线段树

    codeforces 1217E E. Sum Queries? (线段树 传送门:https://codeforces.com/contest/1217/problem/E 题意: n个数,m次询问 ...

  7. 超简单!pytorch入门教程(五):训练和测试CNN

    我们按照超简单!pytorch入门教程(四):准备图片数据集准备好了图片数据以后,就来训练一下识别这10类图片的cnn神经网络吧. 按照超简单!pytorch入门教程(三):构造一个小型CNN构建好一 ...

  8. 【算法随记七】巧用SIMD指令实现急速的字节流按位反转算法。

    字节按位反转算法,在有些算法加密或者一些特殊的场合有着较为重要的应用,其速度也是一个非常关键的应用,比如一个byte变量a = 3,其二进制表示为00000011,进行按位反转后的结果即为110000 ...

  9. java xml的读取与写入(dom)

    首先,先获取到文档对象 private static Document getDocument(String path) { //1.创建DocumentBuilderFactory对象 Docume ...

  10. 基础之Lamada和Stream的邂逅

    show me the code and take to me,做的出来更要说的明白 GitHub项目JavaHouse同步收录 喜欢就点个赞呗! 你的支持是我分享的动力! 引入 是否有遇到看不懂身边 ...