首页 > 其他分享 >AC 自动机学习笔记

AC 自动机学习笔记

时间:2023-01-22 17:44:48浏览次数:58  
标签:AC trie 笔记 数组 KMP 自动机 失配

前置知识:KMP,trie。

一.自动机

这里的自动机都指有限状态自动机(DFA)。

一个 DFA 可以理解为一张有向图,由有限的状态(点),字母表,转移函数(边),开始状态与终止状态(起点,终点)组成。

AC 自动机就是一种在 trie 树的基础上,进行 KMP 算法中失配数组的计算,按照失配数组进一步建边,形成的有向图。也就是说,AC 自动机可以看成 trie 与 KMP 算法的结合体。

二.原理

首先看一下这么做的必要性:

首先学过KMP的都知道,我们可以对于每个模式串跑KMP,复杂度 \(O(n^2+nm)\)。

但处理多个串信息的特点也很容易想到 trie,但 trie 无法完成快速匹配,失配后只能从头比较,复杂度也不容乐观。那可不可以将 trie 加上失配数组呢?

假设我们有几个字符串:

bxwhl
lol
bxpb

我们先建出 trie:

pSJYPxO.png

标签:AC,trie,笔记,数组,KMP,自动机,失配
From: https://www.cnblogs.com/victoryang-not-found/p/17064463.html

相关文章