2012-10-23 102 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