網易筆試題搜索引擎筆試

來源:巧巧簡歷站 9.66K

Trie樹查詢

網易筆試題搜索引擎筆試

基於三數組Trie索引樹原理的漢語詞典查詢機制,並用遞歸算法實現構詞狀態表的自動構建.

Trie樹是搜索樹的一種,來自英文單詞"Retrieval"的簡寫,可以建立有效的數據檢索組織結構,是中文匹配分詞算法中詞典的一種常見實現。它本質上是一個確定的有限狀態自動機(DFA),每個節點代表自動機的一個狀態。在詞典中這此狀態包括"詞前綴","已成詞"等。Trie樹就是字典樹,其核心思想就是空間換時間.字典樹有如下簡單的性質:

(1) 根節點不包含字符信息;

(2) 一棵m度的Trie或者為空,或者由m棵m度的Trie組成。

搜索字典項目的方法為:

(1) 從根結點開始一次搜索;

(2) 取得要查找關鍵詞的第一個字母,並根據該字母選擇對應的子樹,轉到該子樹繼續進行檢索;

(3) 在相應的子樹上,取得要查找關鍵詞的第二個字母,並進一步選擇對應的子樹進行檢索。

(4) 迭代過程……

(5) 在某個結點處,關鍵詞的所有字母已被取出,則讀取附在該結點上的信息,即完成查找。

雙數組Trie(Double-Array Trie)是trie樹的一個簡單而有效的實現,由兩個整數數組構成,一個是base[],另一個是check[]。設數組下標為i ,如果base,check均為0,表示該位置為空。如果base為負值,表示該狀態為詞語。Check表示該狀態的前一狀態,t=base+a, check[t]=i 。

熱門標籤