【问题标题】:Hash Table Expected Insertions哈希表预期插入
【发布时间】:2014-11-01 02:28:49
【问题描述】:

我对我正在学习的算法分析课程中提出的一个猜想感到有些困惑。这是问题。


假设我们有一个结构为列表向量的哈希表,通过顺序搜索桶来解决冲突。在不对使用的哈希函数做任何假设的情况下,显示以下内容,其中 n 是表中的项目数,b 是表实现中的桶(或槽)数。 e(k) 表示大小为 k 的桶的预期数量,p(k) 表示给定桶正好有 k 个项目的概率。


我将上述描述解释为基本上描述了将 n 个项目插入 b 个桶中的任何一个的情况。一个桶可以包含 n 到 0 个项目。它可以是空的,也可以包含所有 n 个项目。我们不能对表示任何一项将被插入任何桶的概率的 p(k) 函数做任何假设。

我需要证明的猜想是.....


证明 e(k) = bp(k)


也就是说,证明大小为 k 的桶的预期数量等于任何给定桶有 k 个项目的概率乘以 b 个桶。

我想通过说任何一个桶接收到一个项目的概率只是 p(1) = 1/b 来开始这个问题。但这不起作用,因为我必须假设 p(k) 函数将项目均匀地分配到存储桶中,这可能不一定会这样做。

我不确定如何用这么少的信息解决这个问题。 非常感谢您的帮助。

【问题讨论】:

    标签: math data-structures hash probability


    【解决方案1】:

    嗯...对我来说,你只需要说一个桶有 k 个元素的概率与任何其他桶有 k 个元素的概率无关。 因此

    e(k) = probability of bucket 1 having k elements
         + probability of bucket 2 having k elements
         + ...
         + probability of bucket b having k elements
         = b*p(k)
    

    我不确定你在等待什么。结果对我来说似乎很简单。对不起,如果它没有帮助。

    【讨论】:

      【解决方案2】:

      我认为这是使用线性期望的好地方。

      让我们定义一些新的随机变量。对于任何桶 i 和容量 k,如果桶 i 中有 k 个元素,则 Xi, k 为 1,否则为 0。这意味着容量为 k 的桶的总数由下式给出

      X1, k + X2, k + ... + Xn, k

      因此,e(k) 由下式给出

      e(k) = E[X1, k + X2, k + ... + Xn, k]

      通过期望的线性,我们有

      e(k) = E[X1, k] + E[X2, k] + ... + E[Xn, k]

      现在,让我们看看 Xi, k 变量中的任何一个。请注意,如果桶 i 恰好有 k 个元素,则 Xi, k 为 1,否则为 0。

      因此:

      E[Xi, k] = 0 · Pr[bucket i 没有 k 个元素] + 1 · Pr[bucket i 有 k 个元素]

      = Pr[桶 i 确实有 k 个元素]

      嘿!我们知道那个概率是多少——它是 p(k)。因此,E[Xi, k] = p(k),所以我们有这个

      e(k) = E[X1, k] + E[X2, k] + ... + E[Xn, k]

      = p(k) + p(k) + ... + p(k)

      = np(k)

      我们完成了!

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2015-06-25
        • 2017-03-28
        • 1970-01-01
        • 2015-06-10
        • 2023-03-04
        • 2015-11-08
        • 2015-03-07
        • 2015-04-11
        相关资源
        最近更新 更多