我的问题是根据我的理解,Cuckoo Hashing 通常需要 0(1) 时间来插入删除和查找。最坏的情况是 O(1)(摊销)。我的问题是为什么不更频繁地使用此算法。为什么我们要使用不同的算法来查找插入或删除的内容,而不是像 Cuckoo Hashing 这样的算法?
最佳答案
布谷鸟哈希需要无限数量的不同的独立哈希函数,这与我们通常实现通用哈希表的方式不兼容,因为它只需要指定一个哈希函数。
如果您正在为特定数据类型编写哈希表实现,则可以将哈希函数构建到表实现中,布谷鸟哈希可能是合理的。
但是,即使在那种情况下,您也可能无法证明您可以支持任何元素集,因为您的哈希函数并不是真正随机和独立的,因此布谷鸟哈希实现具有 O(1 ) 预期 插入时间,但在实际实现中可能会出现一两个情况,其中它将进入无限循环或失败。
您可以为这种情况设计后备方案,但布谷鸟哈希值得额外的复杂性吗?
布谷鸟哈希可能是完美哈希的一个很好的替代方法,当哈希表是预先计算的...但是如果你提前计算,那么插入通常不必那么快,所以你可以使用完美哈希代替。
关于algorithm - 为什么我们不使用布谷鸟哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53199889/