【问题标题】:MIT Lecture WRONG? Analysis of open addressing in hashing麻省理工学院的讲座错了吗?哈希中的开放寻址分析
【发布时间】:2015-08-01 10:27:58
【问题描述】:

在以下 MIT 讲座中: https://www.youtube.com/watch?v=JZHBa-rLrBA 1:07:00,教授教计算搜索不成功的探针数。

但我的计算方法与他的不符。 我的回答是:

探测数=

m= 没有。哈希表中的槽数

n= 没有。元素(键)

解释:

1.哈希函数可以命中一个空槽的概率为 m-n/m。

2.或者它可以以 n/m 的概率命中一个被占用的键槽。

3.现在情况2,我们将不得不再次调用哈希函数,有两种机会: (i) 我们得到一个没有密钥的槽,概率为 (m-n)/(m-1)。 (ii) 我们得到一个带有概率 (n-1)/(m-1) 的密钥槽。

4.现在重复案例 3,但概率不同,如图所示

为什么我得到不同的答案。它有什么问题?

【问题讨论】:

  • 与编程无关。可能更适合Math.SE

标签: algorithm hash hashtable probability clrs


【解决方案1】:

问题要求我们在哈希表中找到需要完成的预期探测次数。

无论如何你都必须做一个,所以你必须从 1 开始。然后,n / m 有可能发生碰撞。你的解释是对的。

如果发生碰撞,则必须进行另一次探测(甚至更多)。以此类推,所以答案就是教授得到的答案:

1 + (n / m)(1 + ((n - 1) / (m - 1))(1 + ...))

你不会乘以你得到一个空槽的概率。您将 获得空插槽的概率乘以如果您没有获得空插槽则必须执行的操作数(1,因为您必须至少再进行一次探测案例)。

将获得空位的概率与未获得空位的概率相乘是没有意义的,就像您正在做的那样。请记住,我们想要找到我们需要进行的预期探测次数。所以你将每一步的操作(探测)的数量乘以你没有得到你想要得到的东西的概率(一个空槽),因为如果这个事件发生,那么我们将不得不做更多操作(探测),否则我们就完成了。

如果你仔细观察到最后,这在你链接的讲座中得到了很好的解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多