AC自动机总结
大工程啊,先放个视频理解一下吧。
从视频里可以看出,这是一个可以实现多个字符串匹配的算法,复杂度大约为每次 \(O(n)\) 。
首先,我们做出一个 Trie (字典树),然后在树上连边。
视频中的虚线就是虚边,\(fail[i]\) 指已经匹配到了点 i ,然后失配,可以直接到的点。
就拿视频中的例子来说:(把5,6之间的字符改为P)

显然,当我们匹配 his 时,我们会走到5,然后失配,这时候通过虚边跳到7,就可以匹配到 is 了。
每个单词结尾时在点上打个标记,就可以统计了。
接下来比较重要的就是,怎么找出虚点?
首先,一个点的虚点肯定是和这个点所对应的字符相同。
所以,我们找一个点的虚点,只需要找到其父亲对应的虚电的儿子即可,非常简单。
可以自由转载

浙公网安备 33010602011771号