0

我在这里有一个关于双散列的作业,我总结了一点:

我有数组:17, 6, 5, 8, 11, 28, 14, 15 h1(k) = k mod 11, h2(k) = 1 + (k mod 9), Size of hash table = 11 The double哈希函数:dh(k) = k mod 11 + (j + (k mod 9)。

现在我计算哈希值:

h(17) = k mod 11 = 6 - OK
h( 6) = 6 = collision => 6 + (1 + (6 mod 9) = 12 = NOK 

=> 这超出了我的指数范围,而且指数越高,它也会越高。如果我将第二个 HashFuncion 的加法更改为减法,那么 HashValues 将变为负数 - 这也不好。

我究竟做错了什么?

谢谢祖萨娜

4

1 回答 1

0

我认为您误解了如何计算双哈希的索引。索引应该是

(h 1 (k) + j · h 2 (k)) mod TableSize

所以你应该使用这两个哈希函数的公式是

((k mod 11) + j · (1 + (k mod 9))) mod 11

于 2016-11-23T20:25:56.010 回答