您是否会通过双哈希算法和二次哈希算法获得相同的哈希图?

问题描述 投票:-1回答:1

假设使用双重哈希算法,

 h(k) = k mod 29  & h'(k) = 13 - k mod 13

并且用于二次哈希算法

 h(k) = k mod 29  & h'(k) = h(k) + (j * j)

[如果数组的大小相同(两种算法都为29)。

您是否能够分别使用这两种算法来构造相同的哈希表?

如果要从存储桶阵列中输出每个单独的键(及其各自的值),这些键(来自两种算法)是否会在存储桶阵列中位于同一位置?还是将键排序不同?

c++ algorithm hash double-hashing
1个回答
0
投票

如果j为常数,则为否。没有常数j可以满足等式:

13 - k mod 13 == (k mod 29 + (j * j)) mod 29

对于k的所有值。

顺便说一下,13 - (k mod 13)是一个糟糕的辅助哈希函数。这会将您的辅助哈希限制在0到12之间。与第13到28个存储桶相比,前13个存储桶的键数更多。

© www.soinside.com 2019 - 2024. All rights reserved.