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自动机总结的主要内容,如果未能解决你的问题,请参考以下文章