通俗易懂のAC自动机小结

本文介绍了AC自动机的基本思想,结合Trie树和KMP算法实现多模式串匹配。通过构建fail指针,实现快速匹配,降低时间复杂度。在构建过程中,详细解释了如何建立fail指针,并通过实例展示了优化成Trie图的过程,确保在文本串匹配时高效运行。
摘要由CSDN通过智能技术生成

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节点 那么从

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值