将n个小球放入n个桶中,球最多的桶的期望球个数。

文章讨论了在n元素哈希表中插入n个项时,最长哈希链长度的期望值,证明了其期望为O(lnn/lnlnn)。通过定义事件A_k和X_k,利用概率论中的方法逐步推导,结合斯特林公式进行证明,并给出了关键常数c和K_0的定义,最终得出期望复杂度。
摘要由CSDN通过智能技术生成

本质来讲,这也可以看做对于一个n元素哈希表插入n个项的最长哈希链长度期望的计算。
先说结论:
O ( ln ⁡ n ln ⁡ ln ⁡ n ) \Large O(\frac{\ln n}{\ln\ln n}) O(lnlnnlnn)
证明分四步走:

1. 定义事件 A k A_k Ak为对于特定一个桶,刚好放有k个球的概率。

P [ A k ] = ( n k ) ⋅ ( 1 n ) k ⋅ ( 1 − 1 n ) n − k \large P[A_k] = \binom{n}{k} \cdot (\frac{1}{n})^k \cdot (1-\frac{1}{n})^{n-k} P[Ak]=(kn)(n1)k(1n1)nk

2. 定义事件 X k X_k Xk为球最多的桶的球个数恰好为k、事件 B i , k B_{i,k} Bi,k为恰好为i号桶球最多,并且球有k个。

可知:
X k = ⋃ i B i , k \large X_k = \bigcup_{i}{B_{i,k}} Xk=iBi,k
显然,可以推得:
P [ X k ] ≤ ∑ i P [ B i , k ] \large P[X_k] \le \sum_{i}P[B_{i,k}] P[Xk]iP[Bi,k]
这是因为等号只会发生在事件B两两互斥时,其余情况概率会更小。
由此有:
P [ X k ] ≤ n ⋅ P [ B 1 , k ] \large P[X_k] \le n\cdot P[B_{1,k}] P[Xk]nP[B1,k]
注意到:
P [ B 1 , k ] ≤ P [ A k ] \large P[B_{1,k}]\le P[A_k] P[B1,k]P[Ak]
这是因为事件 A k A_k Ak仅满足特定桶有k个,但不保证其余桶少于k个,所以概率更大。
由此得到重要结论:
P [ X k ] ≤ n ⋅ P [ A k ] \large P[X_k]\le n\cdot P[A_k] P[Xk]nP[Ak]

3. 证明 ( n k ) < ( e n ) k k \binom{n}{k} < \frac{(en)}{k}^k (kn)<k(en)k

这个是斯特林公式的二级结论,此处不再多加赘述。回代本公式到上方结论可以得到:
P [ X k ] < n ⋅ ( e k ) k \large P[X_k] < n\cdot (\frac{e}{k})^k P[Xk]<n(ke)k
由于 ( 1 − 1 n ) n − k < 1 (1-\frac{1}{n})^{n-k} < 1 (1n1)nk<1,所以略去。
此时构造:
c = 3 ln ⁡ ln ⁡ n ln ⁡ ln ⁡ n − ln ⁡ ln ⁡ ln ⁡ n , K 0 = c ln ⁡ n ln ⁡ ln ⁡ n c=\frac{3\ln\ln n}{\ln\ln n-\ln\ln\ln n}, K_0 = \frac{c\ln n}{\ln\ln n} c=lnlnnlnlnlnn3lnlnn,K0=lnlnnclnn
注意到当 ∀ k > K 0 \forall k>K_0 k>K0
( e k ) k < 1 n 3 \large (\frac{e}{k})^k<\frac{1}{n^3} (ke)k<n31

4. 证明 E [ X k ] ≤ ( K 0 ⋅ P [ X ≤ K 0 ] + n ⋅ P [ X > K 0 ] ) E[X_k] \le (K_0 \cdot P[X\le K_0] + n\cdot P[X>K_0]) E[Xk](K0P[XK0]+nP[X>K0])

这不难证明,因为 E [ X k ] = ∑ i ⋅ P [ X i ] E[X_k] = \sum_i \cdot P[X_i] E[Xk]=iP[Xi] 这就是把前面小于 K 0 K_0 K0的乘上最大的 K 0 K_0 K0,后面的乘上范围最大的值n。
再次放缩: P [ X ≤ K 0 ] < 1 P[X\le K_0]<1 P[XK0]<1 P [ X > K 0 ] < ( n − K 0 ) ⋅ n ⋅ ( e k ) k < 1 n P[X>K_0]<(n-K_0)\cdot n\cdot (\frac{e}{k})^k<\frac{1}{n} P[X>K0]<(nK0)n(ke)k<n1
带回有:
E [ X k ] < K 0 + 1 \large E[X_k] < K_0 + 1 E[Xk]<K0+1
E [ X k ] < c ln ⁡ n ln ⁡ ln ⁡ n + 1 \large E[X_k] < \frac{c\ln n}{\ln\ln n} + 1 E[Xk]<lnlnnclnn+1
E [ X k ] = O ( ln ⁡ n ln ⁡ ln ⁡ n ) \large E[X_k] = O(\frac{\ln n}{\ln\ln n}) E[Xk]=O(lnlnnlnn)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值