本章研究球放入箱子的过程,一个是从随机视角切入的,另一个是从计数视角切入的。
随机视角
模型概述
m个球扔进n个盒子,每个球进入等可能独立地扔进任何一个盒子。我们关心如下问题:
- 1 有两个球进入同一盒子的概率
- 2 最大负荷(一个盒子最多几个球)
- 3 一个箱子里有r个球的分布列
1 两个球进入同一盒子的概率
这就是著名的生日悖论。一个屋子里30人,至少有两个人生日在同一天的概率。
在这个问题中,m就是30,n是365。
计算过程就是把所有情况数出来。总情况是36530。
有两个在同一天的数量不好算,考虑其反面,所有人都不在一天,这个数量是C3653030!
这样概率为36530C3653030!=nmCnmm!
另外一种计算方法是分步决策。
1×(1−3651)×...×(1−36530−1)
即(1−n1)(1−n2)...(1−nm−1)
不难验证这两种方法计算的结果是一样的。
对于其具体数值,一种近似计算的方法是,当n1特别小的时候,1−ni≈e−i/n。这样算完可以发现这个值没有想象的小,大约是30%,这就是他悖论的地方。
2 最大负荷的概率分析
对于一个箱子,他得到M个球的概率至多为CmM(n1)M。 为啥是至多呢?因为这种计算可能有重复,因为在我关心我选中的M个之外的球我没管。
CmM(n1)M=M!(m−M)!m!nM1≤M!1≤(Me)M
最后一个不等关系是斯特林公式的小运用。
至此,我们得到了一个最大负荷的上界。不过这是某一个箱子的,如果是所有箱子,还要再进行一次放缩,设mi为第i个箱子超过M个球的概率。那么Pr[m1+m2+...+mn]≤∑Pr[mi]=nPr[m1]。所以总的概率上界n(Me)M
可以看到随着M先增大后减小,我们一般关心一直收敛的情况,说明超过多少最大负荷,概率上就基本不可能了。这个界是3lnn/lnlnn。带入到M,可以发现
n(Me)M≤n(3lnnelnlnn)lnlnn3lnn≤n1
两类拓展
- 1 降低随机程度。每次随机选择d个箱子,然后把球放置在d个箱子中负载最小的箱子。此时可以有效降低负载。事实上,有1-O(1/n)的概率最大负载至多为lnlnn/lnd+Θ(1)
- 2 允许移动。在1的基础上进一步拓展,现在强制每个盒子至多有一个,那么如果发现选择的d个全都满了,就随机选一个移动到其他的位置,如果其他位置也有球就继续移动。这是布谷鸟哈希的思想。
3 某个盒子里球数量的分布列 Poisson
很明显,一个箱子有r个球的概率为
pr=Cmr(n1)r(1−n1)m−r≈r!e−m/n(m/n)r
上面的极限过程若存在需要假设 m>>r且n充分大
μ=m/n就是poisson分布。
- 性质 P(μ1)+P(μ2)=P(μ1+μ2)
- 矩函数MX(t)=eμ(et−1)
- 均值和方差:利用矩函数很容易求。E[X]=μ=Var[X]=μ
poisson是一种近似,而其精确情况就是球盒模型,也就是那一串阶乘没有近似的情况,而他们的差别,其实是差在一个条件上。设Yi表示用poisson分布近似表示第i个盒子的球的数量的随机变量,而Xi表示真实情况的随机变量
Pr[∑Yi=k]Pr[Y1=k1,Y2=k2,...,Yn=kn]=k1!k2!...kn!nkk!=Pr[X1=k1,...,Xn=kn]。这里主要是因为poisson是把每个盒子看作独立的了,而球箱模型并不独立,因为球的总数是一定的,所以把这个条件考虑进去之后两者才相等。
从这个关系也可以看出来,poisson分布除以一个概率才和球箱模型概率一样,说明poisson这个近似是偏小的。更一般的,可以有如下结论
E[f(X1,...,Xn)]≤emE[f(Y1,...,Yn)]
证明:E[f(Y1,...,Yn)]=∑kE[f(Y1,...,Yn)∣∑Yi=k]Pr[∑Yi=k]≥E[f(Y1,...,Yn)∣∑Yi=m]Pr[∑Yi=m]=E[f(X1,...,Xn)]Pr[∑Yi=m]
对于后面的概率项,Pr[∑Yi=m]=m!mme−m<em
上面利用了n!≤en(en)n
计数视角
计数视角同样研究n个球放入m个盒子,但是目的是把所有情况计算出来。一般按照盒子和小球是否相同、是否允许有盒子是空的,分成了8个情况。
