AC算法,主要用于字符串的匹配,其主要思想是通过模式串构建Trie树,再在Trie上构建fail指针,这样的Trie树就是一个AC自动机,最后则通过AC自动机搜索待处理的文本。
关于AC算法的原理就不讲了,网上一搜多的是,这里直接上Python代码吧,注释都有。
class Node(object):
def __init__(self):
self.next = {}
self.fail = None # 失败指针
self.isWord = False
class Ahocorasick(object):
def __init__(self):
self.__root = Node() # trie树,也可看作根节点
def addWord(self, word): # 4行建立trie树
tmp = self.__root