设有 n 个待编码对象,构成的集合为 S。
S={s1,⋯,sn}
现对其编码,允许使用的编码空间为集合 C={c1,⋯,ck}, 大小为 k,估计重码的数量。
独立随机编码近似
假设每个对象的编码是随机且独立的,则在编码每个对象时,某码 c 可能被使用的概率是 1/k。在对集合 S 中的每个字编码时,相当于重复执行 n 次概率为 1/k 的试验,最终 c 被使用的次数 X 满足 B(n,1/k) 的二项分布,即
P(X=x)=(xn)(k1)x(1−k1)n−x
若 X=0 或 X=1,则 c 上不发生重码。若 X≥2,则 c 上发生重码,需要选重的数量为 X−1. 因此,在这个编码上产生的选重数为 Y=max(X−1,0)
E(Y)=x=0∑+∞P(X=x)max(X−1,0)=x=1∑+∞P(X=x)(X−1)=P(X=0)+x=0∑+∞P(X=x)(X−1)=P(X=0)+E(X−1)=P(X=0)+n/k−1
这意味着我们只需要计算 P(X=0) 即可。根据二项式展开:
P(X=0)=(1−k1)n=1−kn+2k2n(n−1)−6k3n(n−1)(n−2)+⋯
注意到,前两项恰和 n/k−1 抵消,因此在 1≪n≪k 的情况下我们只需要取第三项即可,若要更精确,可取第四项。
E(Y)≈2k2n(n−1)−6k3n(n−1)(n−2)≈2k2n2(1−3kn)
而发生重码的总数是全部编码上产生的选重数之和,因此需要乘以 k,即 n2/2k。
另外,如果统计的标准不是选重数,而是涉及的重码总数,则可以表示为 Z=X×I(X≥2) 的期望,
E(Z)=x=2∑+∞P(X=x)X=E(X)−P(X=1)
P(X=1)=kn(1−k1)n−1=kn(1−kn−1+⋯)
因此
E(Z)≈k2n2