哈希表预期插入

时间:2014-09-07 20:44:10

标签: math data-structures hash probability

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


假设我们有一个哈希表,结构化为列表向量,通过顺序搜索桶来解决冲突。在不对所使用的哈希函数做任何假设的情况下,显示以下内容,其中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)函数将项目均匀地分配到桶中,这可能不一定。

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

2 个答案:

答案 0 :(得分:0)

嗯......对我来说,你只需要说一个桶有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)

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

答案 1 :(得分:0)

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

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

给出
  

X 1,k + X 2,k + ... + X n,k

因此,e(k)由

给出
  

e(k)= E [X 1,k + X 2,k + ... + X n,k ]

通过期望的线性,我们有

  

e(k)= E [X 1,k ] + E [X 2,k ] + ... + E [X n, ķ

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

因此:

  

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

     

= Pr [bucket我确实有k个元素]

嘿!我们知道那个概率是什么 - 它是p(k)。因此,E [X i,k ] = p(k),所以我们有

  

e(k)= E [X 1,k ] + E [X 2,k ] + ... + E [X n, ķ

     

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

     

= np(k)

我们已经完成了!

希望这有帮助!