AC 自动机
从功能上来说,AC 自动机是可以求解多个小串 在多个长串 的中是否出现过、出现的次数和每一次出现的位置。从具体实现上来说,AC 自动机就是在 trie 树上跑 KMP。其时间复杂度为线性的,是 。
AC 自动机的失配指针与 KMP 的 数组极为相似,可以参考理解。如果节点 的失配指针为 ,那么从根节点到 的边上的字符形成的字符串应该与从 出发向根节点行进 步到达的点 再从 走到 边上的字符形成的字符串一样,在满足 的前提下,应该使 尽可能的大。
对于上图, 号节点的失配指针之所以是 是因为从根节点到 好节点边上的字符串 与从 号节点到 好节点边上的字符串 是一样的。