勉强看了一遍飘过的小牛的博客,稍微对AC自动机有了点理解。
看完博客,第一感觉就是想要理解他是怎么做的非常难,可以说比学习KMP的时候还要难(我已经学了KMP,trie树,trie树模版真心简单),但是能感觉到,实现非常复杂,但是看懂了AC自动机是什么意思之后,就非常简单了。(我只是对模版的理解)
整体来讲,AC自动机可以说用的是trie树这个数据结构,KMP算法的思想。
首先,构造一个trie树:包含三个指针:p,p->fail, temp。
分别是已经匹配的序列(若p为root,则没有已经匹配好的序列),失配指针,temp:在建立fail指针时有寻找与p字符匹配的结点的作用
构造的例子博客里说的很清楚。
我现在还是在理解的阶段(20170529-19:47)