证明二次探测功能

时间:2016-10-25 12:52:00

标签: algorithm hash hashtable probing quadratic-probing

如果有人可以帮助解决这个问题我真的很感激。问题是: 考虑以下散列函数:h(k,i)=(h'(k)+(1/2)(i + i ^ 2))mod m,其中对于某些正整数p,m = 2 ^ p。证明或反驳对于任何k,探针序列是<0,1,2,...,m - 1的排列

1 个答案:

答案 0 :(得分:1)

是的,是的。

我们假设h(k, i) = h(k, j)
然后h'(k) + 1/2 * i * (i + 1) = h'(k) + 1/2 * j * (j + 1) (mod m)&lt; =&gt;
1/2 * i * (i + 1) = 1/2 * j * (j + 1) (mod m) =&gt;
i * (i + 1) = j * (j + 1) (mod 2m)&lt; =&gt; i * i - j * j + i - j = 0 (mod 2m)&lt; =&gt;
(i - j) * (i + j + 1) = 0 (mod 2m)。第二项是奇数2m = 2^(p + 1),因此i = j (mod 2m) =&gt; i = j (mod m)