【发布时间】:2019-05-17 05:35:26
【问题描述】:
我试图了解通用散列相对于普通散列的有用性,除了函数每次都是随机生成的,阅读 Cormen 的书。
根据我对通用散列的理解,我们选择要使用的函数
H(x)=[(ax+b)mod p]mod m
其中 p 是大于所有键的素数,m 是数据表的大小,a,b 是随机数。
例如,如果我想读取 80 个人的 ID,并且每个 ID 的值介于 [0,200] 之间,那么 m 将是 80,p 将是 211(下一个素数)。正确的? 我可以使用这个功能让我们说
H(x)=[(100x+50)mod 211]mod 80
但这为什么会有帮助呢?我很有可能最终会在桌子上有很多空位,无缘无故地占用空间。降低数字 m 以获得更小的表不是更有用吗?这样就不会无缘无故地使用空间?
任何帮助表示赞赏
【问题讨论】:
标签: data-structures hash universal-hashing