相关链接:http://en.wikipedia.org/wiki/Hopscotch_hashing
Hopscotch哈希表看起来很棒,但我没有在文献中找到这个问题的答案:如果我的邻居大小是N并且(由于渎职或运气极差)会发生什么?我插入所有N + 1个元素哈希到相同的确切值?
答案 0 :(得分:2)
在原始article中写道需要调整表的大小:
最后,请注意,如果通过h将多个常数项目进行哈希处理 在给定的存储桶中,需要调整表的大小。幸运的是,正如我们所展示的那样,一个普遍的 哈希函数h,给定H = 32时发生此类调整大小的概率是 1/32!
答案 1 :(得分:1)
有两种情况我们需要调整hopscotch hash的大小
鉴于通用哈希函数,你只有1/32!有机会进入案例#1,换句话说,如果你连续插入2 ^ 35个元素,那么你有一次机会因碰撞而调整大小。
案例#2是在实践中调整大小的更受欢迎的原因,你可以参考一些二次实现来决定他们如何决定调整大小[C#hashmap和Google稀疏hashmap],因为它的集群没有真正的线性探测实现缺点,即不能保证不断查找。