AC自动机小结
AC自动机的思想 = trie树 + KMP
AC自动机是用来干什么的呢 多模式串匹配一个文本串
建成一个AC自动机需要三步
1. 构建trie树 2. 构建fail指针 3. 模式串匹配
首先用模式串建成一颗trie树 在每个模式串末尾打上标记 表示这是一个模式串的末尾
树上的每一个节点都对应一个fail指针 作用和KMP中的nex差不多
如果我可以通过fail指针走向一个节点 那么就表明新的这个节点到根节点的前缀字符串是我这个字符串中出现过的
可以直接从这个fail指针的节点继续匹配 大大节省了再匹配的时间
所以怎么建fail指针呢
首先fail指针指向的节点肯定与我当前节点代表的字符是一样的 (要不然怎么可以直接继续匹配呢)
其次要保证fail指向串的前缀在前一个模式串中出现过 要做到这一点 当前点的fail指针就要用到他父亲的fail指针来进行构建
具体看图
我现在有三个模式串 abcd bce cf 第一层的fail指针指向的都是root节点 那么从