目录:
AC自动机简介:
正所谓 AC自动机,就是能自动 AC 的算法。
AC自动机全称:Aho-Corasick automaton,该算法于1975年产生于贝尔实验室,是著名的多模匹配算法。
实际上,AC自动机就是在 Trie 树上实现KMP,来达到完成多模式串匹配的效果。
要学会AC自动机,先得有字典树 Trie 和 KMP模式匹配算法的基础知识。
典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。
给大家一张 AC自动机 的图片:
如何构造 AC自动机:
构造一个 AC自动机并用于匹配,主要有三个步骤:
1、建树:将所有模式串构成一颗 Trie树。
2、预处理失配指针 nex:对 Trie树的所有节点构造失配指针。
3、匹配:利用 Trie树和失配指针对主串进行匹配。
算法实现:
1、建树:
就是将所有的主串 S 依次插入,构成一颗 Trie树(还不会 Trie树的OIers可以去C++ Trie树算法的相关知识看看)。
2、预处理失配指针 nex:
先详细讲一下什么是失配指针:设 root(Trie树的根节点) 到 i