有谁实现了Cuckoo hashing吗?在C?如果有一个开源的非 GPL 版本,那就太完美了!
既然 Adam 在他的评论中提到了它,有人知道为什么它没有被广泛使用吗?仅仅是实现的问题还是良好的理论性质在实践中没有实现?
最佳答案
正如其他答案所指出的那样,最简单的布谷鸟哈希表确实要求该表是半空的。然而,这个概念已经推广到 d 元布谷鸟哈希,其中每个键都有 d 个可能的嵌套位置,而不是简单版本中的 2 个位置。
随着 d 的增加,可接受的负载系数会迅速增加。对于仅 d=3,您已经可以使用大约 75% 的完整表。缺点是您需要 d 个独立的哈希函数。为此,我非常喜欢 Bob Jenkins 的哈希函数(请参阅 http://burtleburtle.net/bob/c/lookup3.c ),您可能会发现它在布谷鸟哈希实现中很有用。
关于C 中的布谷鸟哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/231438/