AC自动机总结

Posted reverymoon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AC自动机总结相关的知识,希望对你有一定的参考价值。

AC自动机

简单谈谈。

图懒得放了。

 

其实就是一个\(Trie\)树+\(fail\)树的结合体。

\(fail\)指针可以视为指向自己在\(Trie\)树上存在的最长严格后缀(不是本身)

为了方便转移,可以将AC自动机改造

 if(!son[e][i]) son[e][i] = son[fail[e]][i]

(市面上都是这种,不过挺好用的,没必要改)

如果要打标记,可以在确定\(fail\)的时候写上

if(son[e][i]) {

  fail[son[e][i]] = son[fail[e]][i];

       mark[son[e][i]] |= mark[fail[son[e][i]]];

}

 

常用DP:

dp(i,j)表示构造到了第i位,AC自动机状态为j

 

要和数据结构套一般都是跟\(fail\)树有关,可以考虑建出\(fail\)树

 

在AC自动机上,到了j号节点匹配到的字符串是:

j, fail[j], fail[fail[j]], ...... , 0号节点代表的字符串

 

能够求出不包含多少串,但是无法求出包含串的个数。

 

上面的话都挺水的,能不能看懂就看你了。。。

以上是关于AC自动机总结的主要内容,如果未能解决你的问题,请参考以下文章

AC自动机总结

AC自动机总结

AC自动机总结

学时总结&模板时间◆学时·10 & 模板·3◆ AC自动机

AC自动机基础

AC 自动机 - 算法与应用小结