【发布时间】:2013-11-14 05:56:46
【问题描述】:
一个哈希表有 m 个槽,使用开放寻址和线性探测来解决冲突。表最初是空的。密钥 k1 被插入到表中,然后是 k2,然后是 k3。解释插入这些键时有 4 个探针的条件?得到 4 次探测的概率是多少?
【问题讨论】:
-
这不是家庭作业帮助的地方。
-
这个问题似乎是题外话,因为它是关于计算机科学,而不是编程。
一个哈希表有 m 个槽,使用开放寻址和线性探测来解决冲突。表最初是空的。密钥 k1 被插入到表中,然后是 k2,然后是 k3。解释插入这些键时有 4 个探针的条件?得到 4 次探测的概率是多少?
【问题讨论】:
其实这里不是你家工作的地方,下次你发问题的时候,分析一下,请专注于研究型问题
但是我创建了一些图表,希望它会有所帮助,
这里有图表的完整问答: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
【讨论】: