字典树学习指南
前置芝士
字典树思想
01字典树
AC自动机
- 对所有的关键词构建Trie前缀树。
- 为Trie树上的所有节点构建fail失配指针。
第一步,对所有的关键词构建Trie前缀树。这一步利用Trie的特点构建快速前缀查找结构,trie树的特点是可以从字符串头部开始匹配,并且相同前缀的词共用前面的节点,因此它可以避免相同前缀pattern的重复匹配,但是对于相同的后缀无能为力。
第二步,为Trie树上的所有节点构建fail失配指针节点,某个节点的失配指针节点即表示当前节点匹配失败后应该跳往的继续匹配的节点。fail失配指针是AC自动机能够匹配多个关键词的关键。
所谓节点的失配指针节点,就是当前节点表示的路径字符串中的最长真后缀位置的指针节点。这里需要理解KMP的next数组以及最长匹配长度的前缀和后缀概念,这一步就是利用KMP前后缀匹配的思想,实现利用相同的后缀信息快速跳转到另一个关键词继续前缀匹配,不会出现关键词遗漏的现象。