免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8385 | 回复: 3
打印 上一主题 下一主题

[算法] 为什么搜索引擎用这个Trie树存储词组而不是Hash容器? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-05 17:52 |显示全部楼层 |倒序浏览
10可用积分
Trie和其他的树形结构一样,查找需要O(lgN)时间,为什么搜索引擎用这个存储而不是Hash容器? cpu和内存消耗Hash都低啊。Trie是O(lgN)吧

Hash的搜索是O(1)。除了大数据情况下,hash冲突的概率会升高以外,例如我的hash函数(fnv1.a)冲突概率大概是13万分之一,那么如果1亿个数据,那么相当于每10个hash bucket里面有一个key冲突的,需要比较两次,但是这样还是O(1)啊。

为什么不同Hash容器呢?

请高手指点!

论坛徽章:
0
2 [报告]
发表于 2012-09-05 18:12 |显示全部楼层
hbmhalley 发表于 2012-09-05 17:59
回复 1# weichuang02


Hash都是O(1),这个有疑问吗?
树形结构搜索是lgN,这个有疑问吗?

论坛徽章:
0
3 [报告]
发表于 2012-09-06 09:27 |显示全部楼层
_Rayx 发表于 2012-09-05 20:54
呵呵,乱说。
复杂度全算错。


那大侠说,这两个复杂度应该是什么样子的?

论坛徽章:
0
4 [报告]
发表于 2012-09-16 17:33 |显示全部楼层
edshea 发表于 2012-09-14 08:57
回复 19# hijzhang

查找串的长度是多少?一般的单词长度有限,即可认为是常量,就是O(1)


随着树越来越大,查找一个单词需要的时间也在增长.

而Hash是不增长的。怎么能说trie的查找性能更好呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP