布谷鸟哈希比动态完美哈希有什么优势?


12

动态完美哈希表布谷鸟哈希表是两个不同的数据结构,它们支持最坏情况下的O(1)查找和预期的O(1)时间插入和删除。两者都需要O(n)辅助空间,并需要访问散列函数系列才能进行操作。

我认为这两个数据结构本身都是美丽而辉煌的,但是我不确定我如何,何时将其中一个比另一个更好。

这些数据结构中的一个结构是否具有明显的优势,是否存在特定的环境?还是它们大多数都可以互换?


我不确定在实践中是否真的使用了这两种技术。通常,这类提供最佳渐近边界的数据结构主要具有研究兴趣,因为它们通常具有隐藏在标记中的大常数。在实践中,相对于常数较大的O 1 ,您可能更喜欢使用常数较小的O log n 技术更简单,更容易实现。OO(logn)O(1)
汤姆·范德赞丹

@TomvanderZanden确实是这样。我也对一种方法相对于另一种方法的理论优势感兴趣-每种方法相对于另一种方法是否具有良好的理论特性?
templatetypedef

@templatetypedef,那么我建议您将其添加到问题中。人们不必阅读评论即可了解您的问题-评论是暂时的,可以随时消失。
DW

是的,这些技术通常在特定领域中实际使用。
别名

1
杜鹃哈希的优点之一是易于理解和实现。而且,恕我直言,它比动态完美哈希更容易分析。
A.Schulz

Answers:


3

Dietzfelbinger等人的意义上是动态完美哈希。只需要2个独立的哈希。尽管在布谷鸟哈希表的简单哈希上有一些结果,例如扭曲的制表哈希和“使用隐藏项进行杜鹃哈希的显式且有效的哈希家庭就足够了”,但是从某种意义上讲,原始的动态完美哈希更健壮。


参见OP的明确评论:“我也对一种方法相对于另一种方法的理论优势感兴趣-每种方法相对于另一种方法是否具有良好的理论特性?”
jbapple

3

在布谷鸟哈希中,查询可以并行执行,而在Dietzfelbinger等人的原始动态完美哈希方案中,查询需要两个链接的内存访问,其中第二个访问使用从第一个访问的信息。


1

通过允许每个插槽容纳多个项目,相对容易提高杜鹃哈希的空间效率。对于大小为4的插槽,空间效率约为95%。也就是说,可以插入项目,直到表中95%的空间用于容纳项目为止,而不仅仅是用于放置项目的地方。

另一方面,Dietzfelbinger等人的界限。关于动态完美哈希的论文仅证明,只要表未满3%,插入操作就可以继续进行。


您可能需要将两个答案结合在一起。:-)
templatetypedef

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.