1

我正在学习 Double Hash,但我很难理解它是如何工作的。我做了一个例子,但我不知道它是对还是错。如果有人可以帮助我,那就太好了。这是输入:


米 = 13


k = { 5, 14, 29, 25, 17, 21, 18, 32, 20, 9, 15, 27 }


h1(k) = k mod 13


h2(k) = 1 + (k mod 11)

我的结果

4

1 回答 1

3

只要m是素数,它就会起作用。

否则h2(x)可能会评估为 的非相对素数m这可能会使算法在仍有空间容纳更多项目时失败。

例如:

  • m = 36
  • h1(x) = 1
  • h2(x) = 30
  • 如果table[1], table[31], table[19], table[13],table[7]都用过;然后将table[1]再次检查下一个插槽。

如果h2(x)与 互质m,则循环将始终在返回起点之前访问所有槽。如果m是素数,则所有数字都是互素的。

于 2013-06-03T12:47:21.900 回答