关于哈希表中的辅助群集

时间:2011-09-14 12:53:22

标签: algorithm

  

虽然二次探测消除了主要聚类,但元素   散列到相同位置将探测相同的备用单元格。   这称为辅助群集。仿真结果表明   它通常会导致每次搜索少于额外的探测。

以上是来自Mark Allen Wessis书籍的algorihms书中的文字片段。

我的问题可以通过一些例子解释什么是次要的clustring以及作者的意思是什么?“模拟结果表明它通常会导致每次搜索不到额外的探测”。

谢谢!

2 个答案:

答案 0 :(得分:4)

辅助群集在您引用的文本中定义:探针将在其他点附近聚集,而不是在插入点附近。

“模拟结果表明,每次搜索通常会导致少于额外的探测”意味着有人试图在二次探测的哈希表中插入或查找大量数据,并发现平均 ,在哈希表中找到正确的位置需要不到两个探测器。 (一个探测当然是在哈希表中插入或查找任何内容所需的最小值。)

答案 1 :(得分:1)

术语主要和次要聚类可能是相当标准的,因为它们也在Knuth Vol 3第6.4节中。在这里,他考虑密钥上的哈希函数来获得第一个哈希值h(K),然后考虑如果h(K)建议的表中的槽已满的各种方法来计算去哪里。问题是 - 当桌子足够接近表格的某些部分正在满员时会发生什么。

如果备用插槽依赖于完全独立的函数g(K),那么您可以获得相当好的行为,没有聚类,但是您需要计算g(K)的成本。

如果备用插槽是h(K)+ i,对于某些i,则哈希表的连续部分恰好会获得大量的命中,形成完全填满插槽的连续区域。事实上,附近的区域会扩散并相互碰撞。 Knuth将其描述为主要群集。

如果备用插槽类似于h(K)+ i ^ 2,那么你不会让附近的区域碰撞形成大的全满连续部分(主要集群),但是你没有得到像你使用两个完全独立的哈希函数,因为在这种情况下,如果h(K1)= h(K2),那么两个键的可能时隙集完全相同,因此它们会在某种程度上相互冲突。

PS如果你对哈希的细节感兴趣,你可能想知道最近有更多的工作 - http://en.wikipedia.org/wiki/Cuckoo_hashing