总结一下本身的心得体会,不讲算法。。html
AC自动机即Trie+KMP?是解决多模式串匹配的一种算法算法
它的构造方式以下:函数
注意:在通常的匹配问题中,咱们会把trie树补为trie图,虽然这样会极大的下降匹配时间,可是当利用的$fail$树中各节点相对位置(例如lca)的时候不建议这么作post
如无特殊说明,$x$表示从$root$到$x$节点造成的字符串url
1.$x$的$fail$指针指向的$y$为模式串中在$x$以前插入的串中与$x$有着最长公共后缀的前缀spa
2.$x$在$y$中出现的此处为$y$的路径中,$fail$指针指向$x$的节点的数量指针
3.点$x$与点$y$在$fail$树中$lca$处的到的字符串,为模式串中与$x,y$公共后缀最长的前缀字符串
AC自动机还常常与dp结合食用,套路通常为$f[i][j]$表示当前长度为$i$,在AC自动机上第$j$号节点时的答案,转移的时候枚举出边
Tire树暴跳fail的复杂度为$O(max(L(P_i))L(T))$其中L串的长度函数,P是模式串,T是目标串。
好比模式串为$aaaaaaaaaaaaaaaaaaaaa$
Trie图的时间复杂性为:$O(L(T))$
对于构造的代价是$O(sum(L(P_i)))$其中sum是求和函数。