信息检索——初识Trie树
1、概述
Trie树( /tri:/ ),又称前缀树、字典树,是种快速检索的多叉树结构,
Trie树的基本性质可以归纳为:
(1)根节点不包含字符,除根节点意外每个节点只包含一个字符。
(2)从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。
(3)每个节点的所有子节点包含的字符串不相同。
2、Trie基本实现
基本操作包括插入、删除、查找等。
考虑到通常用于字典等内存较大的情况,应该加入序列化,分割等操作。
3、应用
接触这一数据结构是因为分词处理中的字典存储问题,对这一问题Trie无意是一个足够高效的数据结构,采用以空间换时间的方式,提供了良好的查找性能。此外还有一下应用:
1)字符串最长公共前缀
2)排序
先序遍历整棵树就是字典序的排序输出。
3)作为其他数据结构或算法的辅助结构
如AC自动机、后缀树等
4、优化
基本结构的插入、查找时间复杂度为O(N),N为字符串长度
空间复杂度为和字典中字符种类的多少,串的长度有关。
主要优化方法有二分法、基数树、双数组等。具体性能可以参见《几种Trie树性能比较》
参考资料
(1)博客 《数据结构之Trie树》http://dongxicheng.org/structure/trietree/
(2)博客 《几种Trie树性能比较》http://www.hankcs.com/nlp/performance-comparison-of-several-trie-tree.html
(3)wiki Trie https://en.wikipedia.org/wiki/Trie