2012-10-23 100 views
14

創建單詞列表trie的複雜性是多少?在該單詞樹中搜索其他單詞集的複雜程度是多少? 我應該使用trie進行字符串搜索,當我有散列表嗎?複雜性和搜索

回答

14

的創建特里結構的複雜性是O(W*L),其中W是單詞的數目,並L是字的平均長度:你需要平均進行L查找針對每個所述組中的W字。

查找單詞後也是一樣:您對每個W單詞執行L步驟。

散列插入和查找具有相同的複雜性:對於每個單詞,您需要檢查相等性,其中需要O(L),整體複雜度爲O(W*L)

如果您需要查找整個單詞,散列表更容易。但是,你不能用哈希表的前綴來查找單詞;如果基於前綴的查找對您不感興趣,請使用哈希表;否則,使用一個trie。

+0

如果我在哈希表中查找整個單詞,我需要一些很好的哈希函數,在定義哈希函數時我們應該小心。糾正我,如果我錯了... – Varun

+1

@var由於廣泛使用字符串作爲哈希表的鍵,已經發明瞭非常好的字符串哈希函數。在互聯網上快速搜索會給你六個極好的建議。我會選擇微軟使用的或者Java字符串中內置的,因爲它們已經被優化了很多。 – dasblinkenlight