为什么我们不使用杜鹃哈希

时间:2018-11-08 00:23:37

标签: algorithm hash

我的问题是,据我了解,杜鹃哈希通常需要0(1)时间进行插入删除和查找。最坏的情况是O(1)(摊销)。我的问题是为什么这种算法不经常使用。为什么我们要使用其他算法查找要插入或删除的内容,而不是像杜鹃哈希那样查找内容?

1 个答案:

答案 0 :(得分:1)

Cuckoo哈希需要无限多个不同的独立哈希函数,这与我们通常实现 generic 哈希表的方式不兼容,因为这仅需要指定一个哈希函数。

>

如果您要为特定的数据类型编写哈希表实现,则可以将哈希函数内置到表实现中,而布谷鸟哈希可能是合理的。

但是,即使在那种情况下,您也可能无法证明可以支持任何元素集,因为您的哈希函数实际上并不是随机的和独立的,因此杜鹃哈希实现具有O(1 )预计的插入时间,但在实际的实现中,可能会出现一两种情况,这种情况会导致无限循环或失败。

您可以为此类情况设计后备方案,但是杜鹃哈希值得额外的复杂性吗?

当预先计算哈希表时,布谷鸟哈希可能是完美哈希的一个很好的选择...但是,如果您事先进行了计算,则插入通常不必那么快,因此您可以使用完美哈希代替。