2 球箱模型

472 阅读3分钟

本章研究球放入箱子的过程,一个是从随机视角切入的,另一个是从计数视角切入的。

随机视角

模型概述

mm个球扔进nn个盒子,每个球进入等可能独立地扔进任何一个盒子。我们关心如下问题:

  • 1 有两个球进入同一盒子的概率
  • 2 最大负荷(一个盒子最多几个球)
  • 3 一个箱子里有r个球的分布列

1 两个球进入同一盒子的概率

这就是著名的生日悖论。一个屋子里30人,至少有两个人生日在同一天的概率。 在这个问题中,mm就是30,nn是365。 计算过程就是把所有情况数出来。总情况是36530365^{30}。 有两个在同一天的数量不好算,考虑其反面,所有人都不在一天,这个数量是C3653030!C_{365}^{30} 30! 这样概率为C3653030!36530=Cnmm!nm\frac{C_{365}^{30} 30!}{365^{30}} = \frac{C_n^m m!}{n^m}

另外一种计算方法是分步决策。 1×(11365)×...×(1301365)1\times (1 - \frac{1}{365}) \times ... \times (1 - \frac{30 - 1}{365})(11n)(12n)...(1m1n)(1 - \frac{1}{n})(1 - \frac{2}{n})...(1 - \frac{m - 1}{n})

不难验证这两种方法计算的结果是一样的。

对于其具体数值,一种近似计算的方法是,当1n\frac{1}{n}特别小的时候,1inei/n1 - \frac{i}{n}\approx e^{-i/n}。这样算完可以发现这个值没有想象的小,大约是30%,这就是他悖论的地方。

2 最大负荷的概率分析

对于一个箱子,他得到MM个球的概率至多为CmM(1n)MC_{m}^M(\frac{1}{n})^M。 为啥是至多呢?因为这种计算可能有重复,因为在我关心我选中的MM个之外的球我没管。

CmM(1n)M=m!M!(mM)!1nM1M!(eM)MC_{m}^M(\frac{1}{n})^M = \frac{m!}{M!(m-M)!}\frac{1}{n^M} \le \frac{1}{M!} \le (\frac{e}{M})^M

最后一个不等关系是斯特林公式的小运用。

至此,我们得到了一个最大负荷的上界。不过这是某一个箱子的,如果是所有箱子,还要再进行一次放缩,设mim_i为第ii个箱子超过MM个球的概率。那么Pr[m1+m2+...+mn]Pr[mi]=nPr[m1]Pr[m_1 + m_2 + ... + m_n] \le \sum Pr[m_i] = nPr[m_1]。所以总的概率上界n(eM)Mn(\frac{e}{M})^M

可以看到随着MM先增大后减小,我们一般关心一直收敛的情况,说明超过多少最大负荷,概率上就基本不可能了。这个界是3lnn/lnlnn3\ln n / \ln \ln n。带入到MM,可以发现

n(eM)Mn(elnlnn3lnn)3lnnlnlnn1nn(\frac{e}{M})^M \le n(\frac{e \ln \ln n}{3\ln n})^{\frac{3 \ln n}{\ln\ln n}} \le \frac{1}{n}

两类拓展

  • 1 降低随机程度。每次随机选择dd个箱子,然后把球放置在dd个箱子中负载最小的箱子。此时可以有效降低负载。事实上,有1-O(1/n)O(1/n)的概率最大负载至多为lnlnn/lnd+Θ(1)\ln \ln n / \ln d + \Theta(1)
  • 2 允许移动。在1的基础上进一步拓展,现在强制每个盒子至多有一个,那么如果发现选择的dd个全都满了,就随机选一个移动到其他的位置,如果其他位置也有球就继续移动。这是布谷鸟哈希的思想。

3 某个盒子里球数量的分布列 Poisson

很明显,一个箱子有rr个球的概率为

pr=Cmr(1n)r(11n)mrem/n(m/n)rr!p_r = C_m^r (\frac{1}{n})^r(1 - \frac{1}{n})^{m-r} \approx \frac{e^{-m/n}(m/n)^r}{r!}

上面的极限过程若存在需要假设 m>>rm>>rnn充分大

μ=m/n\mu = m / n就是poisson分布。

  • 性质 P(μ1)+P(μ2)=P(μ1+μ2)P(\mu_1) + P(\mu_2) = P(\mu_1 + \mu_2)
  • 矩函数MX(t)=eμ(et1)M_X(t)=e^{\mu(e^t-1)}
  • 均值和方差:利用矩函数很容易求。E[X]=μ=Var[X]=μE[X]=\mu = Var[X]=\mu

poisson是一种近似,而其精确情况就是球盒模型,也就是那一串阶乘没有近似的情况,而他们的差别,其实是差在一个条件上。设YiY_i表示用poisson分布近似表示第ii个盒子的球的数量的随机变量,而XiX_i表示真实情况的随机变量

Pr[Y1=k1,Y2=k2,...,Yn=kn]Pr[Yi=k]=k!k1!k2!...kn!nk=Pr[X1=k1,...,Xn=kn]\frac{Pr[Y_1=k_1, Y_2=k_2, ..., Y_n=k_n]}{Pr[\sum Y_i = k]} = \frac{k!}{k_1!k_2!...k_n!n^k}=Pr[X_1=k_1, ...,X_n=k_n]。这里主要是因为poisson是把每个盒子看作独立的了,而球箱模型并不独立,因为球的总数是一定的,所以把这个条件考虑进去之后两者才相等。

从这个关系也可以看出来,poisson分布除以一个概率才和球箱模型概率一样,说明poisson这个近似是偏小的。更一般的,可以有如下结论

E[f(X1,...,Xn)]emE[f(Y1,...,Yn)]E[f(X_1, ..., X_n)] \le e\sqrt{m}E[f(Y_1, ..., Y_n)]

证明: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]E[f(Y_1, ..., Y_n)]=\sum_k E[f(Y_1, ..., Y_n)|\sum Y_i=k]Pr[\sum Y_i=k] \ge E[f(Y_1, ..., Y_n)|\sum Y_i=m]Pr[\sum Y_i=m] = E[f(X_1, ..., X_n)]Pr[\sum Y_i=m]
对于后面的概率项,Pr[Yi=m]=mmemm!<emPr[\sum Y_i=m] = \frac{m^m e^{-m}}{m!} < e\sqrt{m}

上面利用了n!en(ne)nn!\le e\sqrt{n}(\frac{n}{e})^n

计数视角

计数视角同样研究nn个球放入mm个盒子,但是目的是把所有情况计算出来。一般按照盒子和小球是否相同、是否允许有盒子是空的,分成了8个情况。

ball_box.png