AC自动机总结

大工程啊,先放个视频理解一下吧。

从视频里可以看出,这是一个可以实现多个字符串匹配的算法,复杂度大约为每次 \(O(n)\)

首先,我们做出一个 Trie (字典树),然后在树上连边。

视频中的虚线就是虚边,\(fail[i]\) 指已经匹配到了点 i ,然后失配,可以直接到的点。

就拿视频中的例子来说:(把5,6之间的字符改为P)

1561

显然,当我们匹配 his 时,我们会走到5,然后失配,这时候通过虚边跳到7,就可以匹配到 is 了。

每个单词结尾时在点上打个标记,就可以统计了。

接下来比较重要的就是,怎么找出虚点?

首先,一个点的虚点肯定是和这个点所对应的字符相同。

所以,我们找一个点的虚点,只需要找到其父亲对应的虚电的儿子即可,非常简单。

posted @ 2025-07-08 16:20  MistyPost  阅读(11)  评论(0)    收藏  举报