算法

什么是Manacher算法?

本篇讲解manacher算法,大家在学习之前,提前了解一下两个字符串相算法——kmp和拓展kmp,这些算法都是字符串算法。相对于前面介绍的两个算法,Manacher算法的应用范围要狭窄得多,但是它的思想和拓展kmp算法有很多共通支出,所以在这里介绍一下。

序列自动机概述

在学习和了解序列自动机前,我们要熟悉自动机,“自动机”一般都指“确定有限状态自动机”。自动机是计算机科学中被广泛使用的一个数学模型,其思想在许多字符串算法中都有涉及,因此推荐在学习一些字符串算法(KMP、AC自动机、SAM)前先完成自动机的学习。

广义后缀自动机概述

广义后缀自动机的前置知识点是后缀自动机和字典树(Trie树)的相关内容,因为这两个知识点穿插在一起更容易理解和构建知识框架。当我们的是动机如何储存一个字符串的所有子串?该怎么办?怎么做?后缀自动机的作用就展现出来了。首先,后缀自动机起源于刘研绎在其2015国家队论文《后缀自动机在字典树上的拓展》上提出

后缀自动机(单词的有向无环图)简介

在我们学习后缀自动机之前,一定要先了解什么是自动机?自动机(确定有限状态自动机)是由一个非空有限状态的集合Q、一个输入字母表Σ(非空有限字符的集合)、一个转移函数(单值映射)、一个开始状态、一个接受状态(终结状态)的集合所组成的5-元组。历史上,

后缀平衡树简介

在我们学习认识后缀平衡树之前,一定要先了解什么是重量平衡树?所谓的重量平衡树是保证操作影响的最大子树大小是最坏的或均摊的或期望的O(logn)。那什么是后缀平衡树?后缀平衡树是一种动态维护后缀排序的数据结构。具体而言,它支持在串S的开头添加/删除一个字符。

什么是后缀树?

说到后缀树,我相信很多人通过名字看出来树是一种结构形态,后缀树就是带后缀的结构,后缀,顾名思义,甚至通俗点来说,就是所谓后缀就是后面尾巴的意思。比如说给定一长度为n的字符串S=S1S2..Si..Sn,和整数i,1≤i≤n,子串SiSi+1...Sn便都是字符串S的后缀。

什么是AC自动机?

AC自动机,我知道很多人看到这个会十分好奇,不过这个自动机它又叫做Automaton。我相信大家在初学自动机相关内容时,许多人难以建立对自动机的初步印象,尤其是在自学的时侯。让我们切入正题,通过这段时间对自动机的研究,然后制作若干的gif,已经可以呈现出一个相对直观的自动机形态,

自动机(确定有限状态自动机)

这里的“自动机”指的是”确定有限状态自动机”。而自动机是信息学奥林匹克竞赛、计算机科学中被广泛使用的一个数学模型,其思想在许多字符串算法中都有涉及,学习自动机有助于理解上述算法,但是学习自动机前一定要先了解基础图论的相关知识,这样才更好理解自动机。

KMP和Z函数

KMP和Z函数,首先要先了解什么是KMP,把KMP了解了,使用Z函数就能更加顺手。很多人初次接触KMP的时候,思路很容易混乱,导致写出来的程序也很混乱。Knuth-Morris-Pratt字符串查找算法,简称为“KMP算法”,常用于在一个文本串S内查找一个模式串P的出现位置,

Boyer-Moore算法图文讲解

说到Boyer-Moore算法,它是一个字符串算法,这个算法追求的就是每次匹配,一般发现失败了,要往前移动尽可能多的距离,少算一点是一点。为了实现这个目标,首先算法选择的就是从pattern的尾部开始算。这个时候就会出现若干种情况。Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。