混淆在双重散列中计算探测序列

时间:2015-12-17 03:09:37

标签: java hash double-hashing

我知道在Double Hashing中,

h1(key) = key mod 11
h2(key) = 7 - (key mod 7)

h1表示从位置h1(键)开始,h2表示所采取步骤的大小。

但我不知道如何解决探测序列。

例如,如果密钥为14

你能解释一下为什么答案是3,10,6,2,9,5,1,8,4,0

1 个答案:

答案 0 :(得分:0)

在您的示例中,表的大小为11(编号为0到10的位置)。步长的大小是要添加到当前位置以获得下一个位置的数字(模数表的大小)。

h1 = 14 mod 11 = 3
h2 = 7 - (14 mod 7) = 7 - 0 = 7

因此,第一个位置,称为p,是h1给出的3。每个后续职位p'由 -

给出
p' = (p + h2) mod table_size

这个例子,

p' = (p + 7) mod 11

所以,第二个位置是 -

(3 + 7) mod 11 = 10 mod 11 = 10

,第三个是 -

(10 + 7) mod 11 = 17 mod 11 = 6

等等。