什么是"新的哈希函数"在杜鹃哈希?

时间:2015-05-31 15:24:32

标签: performance algorithm dictionary hash hashtable

我正在阅读Pagh和Rodle的杜鹃散文,我无法理解这一段的含义:

  

可能会发生此过程循环,如图1(b)所示。   因此,迭代次数由值“MaxLoop”限定   在2.3节中规定。如果达到此迭代次数,   我们使用新的哈希函数重新表达表中的键,然后尝试   再一次容纳无巢的钥匙。没有必要   为重新分配分配新表:我们可能只是通过   要删除所有键并执行常用插入过程的表   发现不在表中的预定位置。

使用新的哈希函数是什么意思?
在插入算法中,调整表的大小。我们应该有一个"游泳池"哈希函数以某种方式使用?我们如何创建这个池?

1 个答案:

答案 0 :(得分:3)

是的,他们正在期待新的哈希函数,就像他们说的那样。幸运的是,他们不需要一堆新的算法,只是在当前数据集上略有不同的散列行为。

看看论文的第2.1节,然后是附录A.它讨论了随机universal hash functions的构造。

一个简单的,有希望的说明性示例,假设您已经获得了一些正常的哈希函数,它可以在字节块上运行。我们称之为H(x)。您希望使用它来生成一系列新的,略有不同的散列函数H_n(x)。好吧,如果H(x)是好的,并且您的要求很弱,那么您可以定义H_n(x) = H(concat(n,x))。你对H_n(x)的行为没有很好的保证,但是你期望它们中的大部分是不同的。