当前位置:  开发笔记 > 运维 > 正文

C中的杜鹃哈希

如何解决《C中的杜鹃哈希》经验,为你挑选了3个好方法。

有人在C中实现了Cuckoo散列吗?如果有一个开源,非GPL版本,它将是完美的!

亚当在他的评论中提到它,任何人都知道它为什么用得不多?这只是一个实施问题还是在实践中没有实现好的理论属性?



1> Wesley Hill..:

正如其他答案所指出的那样,最简单的cuckoo哈希表确实要求表是半空的.然而,这一概念已经推广到d进制杜鹃散列,其中每个键ð可能的地方筑巢,如简单的版本而不是2位.

随着d增加,可接受的负载系数迅速增加.仅对于d = 3,您已经可以使用大约75%的全表.缺点是,你需要d独立的哈希函数.我是Bob Jenkins为此目的的哈希函数的粉丝(请参阅http://burtleburtle.net/bob/c/lookup3.c),您可能会发现它在布谷鸟哈希实现中很有用.



2> Adam Davis..:

杜鹃散列在学术界之外相对未被使用(除了硬件缓存,有时从中借鉴,但并未真正完全实现).它需要一个非常稀疏的哈希表来获得插入的好时间 - 你真的需要将51%的表空为空以获得良好的性能.因此它既快又占用大量空间,或者减速并有效利用空间 - 从来没有.其他算法既有时间和空间效率,但只考虑时间或空间时它们比杜鹃更差.

这是一个用于cuckoo哈希表的代码生成器.检查生成器的许可证以验证输出是非GPL.它应该是,但无论如何检查.

-亚当


51%仅在你只使用2个哈希值的情况下使用.拥有更多哈希的杜鹃更有效率.在8个哈希,你可以超过95%.它很好地用于硬件应用程序.(我知道有3家公司在使用它.)

3> plan9assembl..:

http://www.mpi-inf.mpg.de/~sanders/programs/cuckoo/

HTH

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有