首页 > 其他分享 >回文树(回文自动机)学习笔记

回文树(回文自动机)学习笔记

时间:2024-02-01 13:12:44浏览次数:35  
标签:匹配 后缀 笔记 sim 自动机 节点 次长 回文

用途

可以储存所有的回文串,也可用于向末尾插入新节点时动态维护最长回文串。


思维过程

观察可以发现,如果 \(x \sim i\) 形成回文串,那么 \(x+1 \sim i-1\) 必须为回文串。

对于任意一个已经确定是回文串的 \(x+1 \sim i-1\) 进行单次匹配,只需要比较 \(s[x]\) 和 \(s[i]\) 是否相等即可。

对于新插入的节点 \(i\),找到 \(1 \sim i\) 的后缀的最长回文,模仿 KMP 的方式,进行如下操作:先试着和 \(1 \sim i-1\) 后缀的最长回文匹配。如果已经成功匹配了那不用说;如果失败了,就试着与 \(1 \sim i-1\) 后缀的次长回文匹配,还不行就与 \(1 \sim i-1\) 后缀的次次长回文匹配,直到匹配成功或后缀已经是空串了。

那么,是不是可以像 KMP 那样,对于每一个节点 \(i\),记录一下它后缀的最长、次长回文分别的位置,就可以快速在这些后缀间跳跃了?可以发现,这其实是不能直接实现的。最主要的问题是“次长的次长”的位置并没有在先前被计算过,更本质的原因是,它似乎并不是任何节点的最长后缀回文

但是来观察一下这幅图:

标签:匹配,后缀,笔记,sim,自动机,节点,次长,回文
From: https://www.cnblogs.com/David-Mercury/p/18000985

相关文章

  • 学习笔记
    机器学习基础环境安装与使用库的安装miniconda3安装教程https://blog.csdn.net/HowieXue/article/details/118442904requirements.txt文件matplotlib==2.2.2numpy==1.14.2pandas==0.20.3tables==3.4.2jupyter==1.0.0各版本Anaconda的下载、安装和卸载(适用于Windows/......
  • GPU学习笔记
    GPU相比CPU更适合连续的同质的运算。原因:  GPU有更多算术运算单元(ALU)  支持多线程处理分支  wrap独占寄存器  ...单指令多数据(SIMD):每次取一条指令,应用到多个不同数据计算的计算上。单指令多线程(SIMT):会把程序分支分布到不同线程上,线程组执行每执行指令会更新掩码告......
  • 字符串算法学习笔记
    \(\text{Pt.}1\)基础一、进制哈希二、Manacher三、Trie\(\text{Pt.}2\)自动机自动机是什么?它是一个对“信息序列”进行判定的数学模型。“信息序列”可以很随意,比如一个二进制数,比如一个字符串。而“判定”也可以很随意,比如判定一个二进制数是不是奇数,判定当前字符串是......
  • 程序是怎样跑起来的第二章读书笔记
    根据本章内容知道了8位=1字节,了解了用二进制数表示计算机信息的原因。只要掌握了使用二进制数来表示信息的方法及其运算机制也就自然能够了解程序的运行机制,理解了为什么计算机处理的信息要用二进制数来表示的,近一步知道用二进制数表示计算机信息的原因。计算机内部是由IC”这种......
  • 蒻苟的第一篇学习笔记(快速排序)
    快速排序是一个非常经典也非常常用的排序算法。在平均状况下,排序n个项目需要Ο(nlogn)次比较,在最坏状况下则需要Ο(n2)次比较,但这种状况其实并不常见。快速排序是分而治之思想在排序算法上的典型应用。算法步骤:1.从数列中挑出一个元素,称为"基准"。2。设置两个"哨兵",利用......
  • 《程序是怎样跑起来的》阅读笔记 - 第一、二章
    简介:《程序是怎样跑起来的》是一本介绍计算机程序工作原理的畅销书籍。本文将对该书的前两章进行阅读笔记,主要涵盖了计算机基础知识和程序执行过程的基本原理。第一章:计算机基础知识本章主要讲解了计算机的基本组成部分以及它们之间的关系。作者通过引入一个简单的模型,描述了计......
  • 欧拉函数学习笔记
    前言本人能力有限,有错误欢迎指出。定义\(\varphi(n)\)表示的是小于等于\(n\)和\(n\)互质的数的个数。公式设\(n=\prod\limits_{i=1}^{s}p_i^{k_i}\),有\[\begin{aligned}\varphi(n)&=\prod_{i=1}^s\varphi(p_i^{k_i})\\&=\prod_{i=1}^sp_i^{k_i}-p_i^{k_i-1}\\&=\prod......
  • 《程序是怎样跑起来的》阅读笔记 - 第三、四章
    简介:继续探索《程序是怎样跑起来的》,本文将对该书的第三、四章进行阅读笔记,重点关注计算机程序的存储和数据处理。第三章:计算机的存储器本章主要讲解了计算机的存储器,包括随机存取存储器(RAM)和只读存储器(ROM)。作者首先介绍了这两种存储器的基本概念和特点,然后深入讨论了它们在计......
  • 标题:《程序是怎样跑起来的》阅读笔记 - 第五、六章
    简介:本文将继续探索《程序是怎样跑起来的》,对该书的第五、六章进行阅读笔记,重点关注计算机程序的运行流程和输入输出操作。第五章:程序的执行本章主要讲解了程序的执行过程,包括指令的抓取、解码和执行等步骤。作者详细介绍了计算机中指令的编码方式和指令集体系结构,并解释了控制......
  • 笔记_现实
    认识自己别人很少去关心你想什么,需要什么,更多是批判你做的对不对,最不容易让我们意识到的是,我们可能也是这样评判自己的。在这样的批判下,我们会生出大量的羞耻感,以及对自己真实生活的掩饰和防御。如果你也有这样的感触和困惑,可以试着跟自己说:我的选择一定有自己的理由。对自己......