我正在学习 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)

我正在学习 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)

只要m是素数,它就会起作用。
否则h2(x)可能会评估为 的非相对素数,m这可能会使算法在仍有空间容纳更多项目时失败。
例如:
m = 36h1(x) = 1h2(x) = 30table[1], table[31], table[19], table[13],table[7]都用过;然后将table[1]再次检查下一个插槽。如果h2(x)与 互质m,则循环将始终在返回起点之前访问所有槽。如果m是素数,则所有数字都是互素的。