【问题标题】:How to find the answer to following hash table based on open addressing?如何根据开放寻址找到以下哈希表的答案?
【发布时间】:2013-11-14 05:56:46
【问题描述】:

一个哈希表有 m 个槽,使用开放寻址和线性探测来解决冲突。表最初是空的。密钥 k1 被插入到表中,然后是 k2,然后是 k3。解释插入这些键时有 4 个探针的条件?得到 4 次探测的概率是多少?

【问题讨论】:

  • 这不是家庭作业帮助的地方。
  • 这个问题似乎是题外话,因为它是关于计算机科学,而不是编程。

标签: hash chaining


【解决方案1】:

其实这里不是你家工作的地方,下次你发问题的时候,分析一下,请专注于研究型问题

但是我创建了一些图表,希望它会有所帮助,

这里有图表的完整问答:kelums.wordpress.com

如果第一个 2 键碰撞则为 1

图表_1:www.kelums.files.wordpress.com/2014/01/1.png

2 如果 1st 2 key 不碰撞,1st key 3rd key 碰撞

图表_2:www.kelums.files.wordpress.com/2014/01/2.png

3 如果 1st 2 key 不碰撞,2nd key 3rd key 碰撞:

图表_3:www.kelums.files.wordpress.com/2014/01/3.png

资源:MIT Handout

由于每个元素的插入至少需要一个(本术语中只有一个)探针,因此 如果是 4 个探针,则至少需要发生一次碰撞。

如果前两个键发生冲突,我们会这样做 甚至不需要知道第三个密钥散列到哪里——已经发生了冲突。 这 前两个键碰撞的概率是1/m。

如果前两个键没有碰撞, 然后第三个键需要散列到前两个键散列到的两个插槽之一 为了发生碰撞。 这种情况发生的概率是 前两个键不碰撞的概率和第三个键的概率 进入前两个键散列到的两个插槽之一: (m-1)/m *2/m

至少有4个探针的总概率是1/m + (m-1)/m *2/m

【讨论】:

  • @rumesh 我们分析了它,一个和我的答案是不同的,如果你能仔细阅读那个 PDF,你会看到变化
猜你喜欢
  • 2011-02-03
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 2017-05-11
  • 2016-01-29
  • 1970-01-01
  • 2011-11-17
  • 2018-09-17
相关资源
最近更新 更多