Aho-Corasick 算法 AC自动机实现:https://www.cnblogs.com/vipsoft/p/17722761.html
双数组Trie树 (Double-array Trie):https://www.cnblogs.com/vipsoft/p/17759850.html
Trie树,又叫字典树,前缀树(Prefix Tree),单词查找树,是一种多叉树的结构.
{"a","apple","appeal","appear","bee","beef","cat"}
深色表示接受态
关键字集合{"pool", "prize", "prepare", "preview", "produce", "progress"}.
Trie 树举例
原字符串集合:{ abcde 、aced 、bcdf 、bcff }
插入字符串:aced 、cdaa
新字符串集合:{ abcde 、abde、aced 、bcdf 、bcff 、cdaa }
字典树的基本性质如下:
Trie 树的优缺点
Trie 树是一种 以空间换时间 的数据结构。
公共前缀:例如字符串 abcdef 与 abcghi 有公共前缀 abc 。
在本模板采用子结点默认包含 所有字符集 的连接方式,
对于少量的字符串存储来说,大量的结点的儿子是空闲的,造成了 空间的浪费 。
当我们在浏览器的搜索框中打出一个字符串的前缀时,它便实时的显示出了以这个输入为前缀的一些字符串,也就是说,它帮我们搜索到了以这个输入为前缀的所有字符串,并且显示出了搜索频率较高的一些,这就是字典树的一个应用场景:单词自动补齐.
输入“人工” 自动带出人工开头的关键字
应用场景