Coupon Collector's Problem高级算法设计

1 Geometric Distribution

用X表示n 次投掷coin(独立伯努力分布)中,首次出现正面时,投掷的次数,X可能的取值为1,2,3,。。。N,假设每次正面的概率为1/2(一般化可设为p)
Coupon Collector's Problem高级算法设计
具体参考

2 Coupon Collector’s Problem(CCP)

2.1关注点

CCP关注的是分散,与Balls of Bin 问题不同(其关注的是会不会集中,集中的程度有多少)

2.2 问题定义

设有采票 m张,需要集起n 种不同的类型,当集起n种类型的采票时,可以进行对奖或其它操作
当然可以抽象为Balls of Bin 问题形式,其中所用有的m张采票为m个球,要求集起的n张采票为n个不同的盒子,因此可以问题定义为m个球装在不同的n个盒子里,要求同一个盒子装同一种采票,且每个盒子都必须装满。

2.2.1 具体说

定义问题YY 为当m 是什么数量级时,使得n种采票ZiZ_i收集起
m=?minZi>0m=?\\ \min{Zi} >0

定义问题YKY_K 投入多少球(或采票(m的值)),才能使KK个不同的盒子装(或收集起nn张不同的采票以对奖)
m=?minZi>0(i=012K)(Kn)m=?\\ \min Z_i>0 \\(i=0,1,2\dots K)\\(K\in n)

3 解决YKY_K的求法

3.1 初始化

Y0Y_0=0,即不收集**,自然不需要采票,m=0
Y1Y_1=1

3.2 递推公式

定义YkYk1=ZkY_k-Y_{k-1}=Z_k,先思考如何由Yk1Y_{k-1}求得YkY_{k}?
Yk1Y_{k-1}表示需要多少个球,才能使得n 个盒子中有k1k-1个盒子被装;
YkY_{k}表示需要多少个球,才能使得n 个盒子中有kk个盒子被装;
Coupon Collector's Problem高级算法设计
如图红色表示需要Yk1Y_{k-1}个球装在了n个盒子中的k1k-1个,那么计算需要YkY_k个球,装下n 个盒子中的k个盒子时,只需将第k个球装在剩下的n-k+1个盒子中。
定义pkp_k表示第k个球恰好装入n-k+1(黑色盒子)的概率,1pk1-p_k表示进入k-1 个 盒子中的概率,即有如下表达:
pk=nk+1n1pk=k1np_k=\frac{n-k+1}{n}\\ \quad \\ 1-p_k=\frac{k-1}{n}\\

那么上面定义的ZkZ_k便有了具体的物理意义,即是第一节提到的几何分布,表示需要新增ZkZ_k个球(可以理解为重复ZkZ_k次投掷coin )才能使得有一个球不落入红色部分的盒子中。

={pk 1pk  伯努力分布 :掷硬币=\left\{ \begin{aligned} p_k & & \ 正面,落入黑色部分\\ 1-p_k & & \ 反面 ,即落入红色的部分\\ \end{aligned} \right.
因此重复Zk=zZ_k=z次投掷"coins"首次落入黑色的部分可以根据二项分布来计算:Pr(Zk=z)=(1pk)z1pkPr(Z_k=z)=(1-p_k)^{z-1}p_k
而首次落入黑色部分平均需要投郑几次,即E(Zk)=1pkE{(Z_k)}=\frac{1}{p_k},其方差Var(Zk)=1pkpk2Var{(Z_k)}=\frac{1-p_k}{p_k^2}

3.3 求问题Y

由具体的物理意义可知

Y=Yn=(Y1Y0)+(Y2Y1)+(Y3Y2)+(Y4Y3)++(YnYn1)=Z1+Z2+Z3+Z4++ZnY=Y_n=(Y_1-Y_0)+(Y_2-Y_1)+(Y_3-Y2)+(Y_4-Y_3)+\dots+(Y_n-Y_{n-1})\\ =Z_1+Z_2+Z_3+Z_4+ \dots+Z_n

求Y的均值
E(Y)=E(Z1)+E(Z2)+E(Z3)+E(Z4)++E(Zn)=k=1n1pk=k=1nnnk+1=nk=1n1nk+1=nk=1n1k=nHn(HnHarmonicserieslnn+c)=nlnn+cnE(Y) =E(Z_1)+E(Z_2)+E(Z_3)+E(Z_4)+ \dots+E(Z_n)\\=\sum_{k=1}^n \frac{1}{p_k}\\=\sum_{k=1}^n\frac{n}{n-k+1}\\=n\sum_{k=1}^n\frac{1}{n-k+1}\\=n\sum_{k=1}^n\frac{1}{k}=nH_n(H_n为调和级数Harmonic series,lnn+c)\\=nlnn+cn
Ynlnn±θ(n)Y \sim nlnn \pm\theta(n)
我们如果Y 的访差较小,即可以将Y的界限定在bound E(Y)附近。
Var(Y)=Var(Z1+Z2+Z3+Z4++Zn)Var(Y)=Var(Z_1+Z_2+Z_3+Z_4+ \dots+Z_n)
ZkZ_k服从独立分布
Var(Y)=Var(Z1+Z2+Z3+Z4++Zn)=k=1n1pkpk2=k=1n1pk21pk=k=1n(n2(nk+1)2nnk+1)==k=1nn2(nk+1)2k=1nnnk+1==n2k=1n(nk+1)2nk=1n1nk+1=n2k=1n1k2nk=1n1k=π26n2nlnnVar(Y)=Var(Z_1+Z_2+Z_3+Z_4+ \dots+Z_n)\\ =\sum_{k=1}^n \frac{1-p_k}{p_k^2}=\sum_{k=1}^n \frac{1}{p_k^2}- \frac{1}{p_k}\\=\sum_{k=1}^n( \frac{n^2}{(n-k+1)^2}- \frac{n}{n-k+1})=\\=\sum_{k=1}^n\frac{n^2}{(n-k+1)^2}- \sum_{k=1}^n\frac{n}{n-k+1}=\\ =n^2\sum_{k=1}^n\frac{}{(n-k+1)^2}-n \sum_{k=1}^n\frac{1}{n-k+1}=\\ n^2\sum_{k=1}^n\frac{1}{k^2}-n \sum_{k=1}^n\frac{1}{k}=\\ \frac{\pi^2}{6}n^2-nlnn
Var(Y)θ(n2)Var(Y)\sim \theta(n^2)