二次探测:(f(k)+ a * j + b * j ^ 2)%M,如何选择a和b?

时间:2009-09-16 11:22:29

标签: math hash

如果M是素数,如何选择a和b来减少碰撞?

同样在书中写道,为了在(f(k)+ j ^ 2)%M中进行二次探测时找到空槽,哈希表必须至少为半空?有人能为我提供证明吗?

1 个答案:

答案 0 :(得分:2)

wikipedia上选择a和b有一些值:

  

对于素数M>如图2所示,a和b的大多数选择将使f(k,j)在[0,(M-1)/ 2]中与j不同。这样的选择包括a = b = 1/2,a = b = 1,a = 0,b = 1.因为给定元素只有大约M / 2个不同的探针,所以很难保证插入成功当负载系数> 1/2。

保证查找空广告位的证明是herehere