首页 > 代码库 > 信息检索——初识Trie树

信息检索——初识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

信息检索——初识Trie树