AC自动机

什么是AC自动机?
AC自动机是一种经典的多模式串匹配算法,它能够在文本中同时查找多个模式串的出现位置,时间复杂度为O(n + m + z),其中n是文本长度,m是所有模式串总长度,z是匹配到的模式串数量。
为什么需要AC自动机?
假设要在一篇文章中查找1000个词,如果用传统的KMP算法,需要对每个敏感词单独扫描文章,时间复杂度为O(1000 × n)。AC自动机只需要扫描文章一次就能找到所有敏感词
AC自动机的核心思想
AC自动机 = Trie树 + KMP思想 + 失配指针
1.构建Trie树
首先将所有模式串构建成一棵Trie树,每个节点代表一个字符,从根节点到某个节点的路径构成一个模式串的前缀。
2.构建失配指针(Fail指针)
这是AC自动机的核心,Fail指针指向当前节点匹配失败时应该跳转的位置。
根节点的所有子节点的fail指向根节点
对于其他节点u,假设其父节点为p,通过字符c到达u
如果p->fail有通过c的子节点,则u->fail指向该子节点
3.匹配过程
匹配时,AC自动机在文本串上移动,使用Trie树进行匹配,匹配失败时通过fail指针跳转。
ac acwing1282代码
https://www.acwing.com/activity/content/code/content/9780312/
附一张图片https://cn.bing.com/images/search?q=&view=detailv2&id=C02A25C733C48B35865E54D9F0D186DB9F3B6C84&ccid=SNDt/en3&iss=fav&FORM=SVIM01&idpview=singleimage&mediaurl=https%253a%252f%252fpic2.zhimg.com%252fv2-f2bd8b51e6c966ae6806a2124325c281_b.jpg&expw=520&exph=602&thid=OIP.SNDt_en3Sd6EaNKZGoifUgHaIk&idpbck=1

posted @ 2025-12-27 15:55  jms23002  阅读(0)  评论(0)    收藏  举报