MAD方法压缩功能

时间:2010-06-10 18:01:49

标签: hashtable hash

我在旧考试中遇到了以下问题。我的答案感觉有点短暂和不足。我可以研究的任何额外想法或我忽略的原因都会很棒。感谢名单

考虑MAD方法压缩函数,将具有哈希码i的对象映射到6000元素桶阵列的元素[(3i + 7)mod9027] mod6000。解释为什么这是压缩函数的不良选择,以及如何改进它。

我基本上只是说通过将p(或9027)的值更改为素数来改进函数,为(或3)选择其他常量也可以提供帮助。

2 个答案:

答案 0 :(得分:3)

Rup的评论基本上是正确答案。 3和9027都可被3整除,因此3i + 7仅映射到范围0-9026的1/3。然后映射mod 6000将2/3的值映射到下半部分。因此,桶1将包含大约1/1500的值[如果我已经完成数学权利]而不是您想要的1/6000。 Bucket 0将为空。

答案 1 :(得分:0)

如果i均匀分布在足够大的范围内,那么(3i + 7)mod9027将均匀分布在0-9026之间,但是接着mod 6000意味着三分之二的哈希值将在上半部分范围(0至3026和6000至9026,包括0和3026),以及下半年的三分之一(包括3037至5999)。