我对我正在考虑的算法分析课程中提出的一个猜想感到有点困惑。这是问题所在。
假设我们有一个哈希表,结构化为列表向量,通过顺序搜索桶来解决冲突。在不对所使用的哈希函数做任何假设的情况下,显示以下内容,其中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)函数将项目均匀地分配到桶中,这可能不一定。
我不确定如何用如此少的信息来解决这个问题。 非常感谢帮助。
答案 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)
我们已经完成了!
希望这有帮助!