Aho-Corasick 多模式匹配算法

来源:互联网 发布:手机淘宝登录首页 编辑:程序博客网 时间:2024/05/23 01:18

核心思想简介
KMP算法一样, AC自动机在匹配时如果当前字符匹配失败,那么利用fail指针进行跳转。由此可知如果跳转,跳转到的串的前缀,必为跳转前的模式串的后缀。由此可知,跳转的新位置的深度一定小于跳之前的节点。所以我们可以利用 bfs在 Trie上面进行 fail指针的求解。

设这个节点上的字母为x,沿着他父亲的失败指针走,直到走到一个节点,他的儿子中也有字母为x的节点。然后把当前节点的失败指针指向那个字符也为x的儿子。如果一直走到了root都没找到,那就把失败指针指向root。

给两个经典的图:


计算Trie的失败指针


参考博客:http://www.cnblogs.com/xudong-bupt/p/3433506.html

题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=16403

code:

0 0
原创粉丝点击