用雜湊演算法優化字典樹空間結構

2022-05-06 19:48:11 字數 551 閱讀 5433

字典樹是字首匹配問題中常用的資料結構,查詢速度可以達到o(len),len為待查序列的長度,但是字典樹的空間消耗非常大,對於基於字母表的英文單詞,每個節點要儲存26個指標指向下一節點,很有可能有不少空的,很浪費。

考慮在節點中用雜湊表來儲存子節點指標,鍵值為單個字母,這樣對於模式中沒有的字母就省掉了空指標的空間,同樣可以達到o(1)的選擇分支速度。

1

//用map作雜湊表

2class

node313

}14void insert(const

string

_word)

15);23}

24 p = p->children[curr];25}

26 p->is_word = true;27

}28bool has_prefix(const

string &_word)

2940

else

4144}45

return

false;46

}47 };

空間優化的字典樹

字典樹空間優化 如果字典樹要儲存的字串的字符集比較大,比如全部的字元 甚至可能有多位元組字元。這是我們給每個節點256個子節點嗎?用平衡樹 或map 犧牲時間來換取空間嗎?不,可以進行這樣的優化 我們考慮把乙個8位的char,拆開變成2個4位的資料,依次加入字典樹。顯然4位最大值也只是2 4 1 1...

資料結構與演算法 字典樹

字典樹又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較,查詢效率比雜湊樹高。字典樹 桀驁 2018 8 3 in...

資料結構與演算法系列 字典樹

一 背景 什麼是字典樹?trie樹,即字典樹,又稱單詞查詢樹或鍵樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計和排序大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 最大限度地減少無謂的字串比較,查詢效率比雜湊表高。trie的核心思想是空間換時間。利用字串的...