二次探测

时间:2013-03-27 22:26:06

标签: computer-science

用于解决散列冲突的二次探测方法 H(k)= h(k)+ c1 * i ^ 2 + c2 * i。

我需要一些帮助来弄清楚如何决定c1&的值。 c2是如何确保访问哈希表的所有插槽的。

1 个答案:

答案 0 :(得分:0)

设ht_size =哈希表槽的数量。我猜你的意思是

h(k) + c1*i^2 + c2*i % ht_size

c1 = 0且c2 = 1将起作用;)

c1 = 0且c2共同素数到ht_size也有效。 1是任何数字的共同素数。如果ht_size不是意外相同的素数,素数也是很好的候选者。

为什么这样的设置会访问所有插槽? 如果c1 = 0且c2与ht_size互质,那么ggt(c2,ht_size)== 1。 换句话说,在组(代数群论)中,c2是一个生成器。 这意味着c2**i将生成从0到ht_size - 1的所有数字。 到**我的意思是幂运算符,即应用组的运算符i次。该组的运算符为+,因此组理论符号中的c2**i对应于正常表示法中的c2*i

我希望这能让你知道如何开始搜索c1和c2的组合,其中c1!= 0。