在 Cormen 的“算法简介”一书中,我读到双散列(在开放寻址中)函数的形式为:
h(k, i) = (h1(k) + i * h2(k)) mod m
其中k是键,i是冲突情况下的下一个索引,m是表长度,hX是哈希函数。
他说双重哈希的主要问题是利用表中的所有索引。为了解决这个问题,我们应该将m设置为 2 的幂,并且h2函数应该返回奇数值。为什么(我看不到他解释)?
在 Cormen 的“算法简介”一书中,我读到双散列(在开放寻址中)函数的形式为:
h(k, i) = (h1(k) + i * h2(k)) mod m
其中k是键,i是冲突情况下的下一个索引,m是表长度,hX是哈希函数。
他说双重哈希的主要问题是利用表中的所有索引。为了解决这个问题,我们应该将m设置为 2 的幂,并且h2函数应该返回奇数值。为什么(我看不到他解释)?