1. 程式人生 > >信息檢索——初識Trie樹

信息檢索——初識Trie樹

操作 font -c 字符 get 排序 span strong trietree

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樹