2012-06-09 75 views
1

我試圖理解並使用這個Double-Array Trie implementation。但是,我似乎理解他們提出的理論實現和代碼之間的類比。
準確地說,以下是使用的主要線索結構:雙陣列Trie的實現

struct _Trie { 
AlphaMap *alpha_map; 
DArray  *da; 
Tail  *tail; 

Bool  is_dirty; 
}; 

如果有人使用此實施,可以請你提供用以下結構的一個高層次的解釋和相對於雙有關基本和校驗數組的數組概念。特別是AlphaMap。

由於提前,

回答

0

libdatrie轉換Unicode字符以緊湊的內部表示;你必須在創建一個trie時定義一個允許範圍的列表。 alpha_map是一個字符範圍的鏈表。

da是一個Double-Array結構。它包含basecheck陣列。

tail是用於存儲非分支後綴的數據結構(請參閱「後綴壓縮」)。

is_dirty是一個標誌,如果trie尚未存儲到磁盤或者從磁盤加載後更改,則該標誌設置爲TRUE。