完美散列·当完美散列的冲突概率小于1/2时,二级散列表的大小的期望值
**问题:**将N个元素放入两级散列表中,其中主散列表大小为N,当冲突概率小于1/2时,二级散列表的大小的期望值是多少?
欲计算完美散列中二级散列表的大小的期望值,我们需要先求解在普通散列表(即仅有一张表的散列表)中,当冲突概率小于1/2时,该散列表的大小
在普通散列表中,当冲突概率小于1/2时,该散列表的大小
设普通散列表的大小为M,需要放入该散列表的元素个数为N
原问题可转换为:将N个球放入M个盒中,M为多少时,可以使得多个球放入同一个盒的概率小于1/2
马尔科夫不等式
P { X ≥ a } ≤ E ( X ) / a P\{X\geq a\}\leq E(X)/a P{ X≥a}≤E(X)/a
其中P为冲突概率,E为冲突期望,X为球的个数N,明显 N ≥ 1 N\geq1 N≥1,所以a=1
由马尔科夫不等式可知,当E(x)<1/2时, P ( X ) ≤ E ( X ) < 1 / 2 P(X)\leq E(X)<1/2 P(X)≤E(X)<1/2
那么问题转化为:将N个球放入M个盒中,多个球放入同一个盒的期望小于1/2时,M的值
M的值
多个球放入同一个盒可以理解为若干对两两组合的冲突,例如三个球A、B、C放入同一个盒,即是产生了(A,B)(A,C)(B,C)三个冲突
那么问题转化为:将N个球放入M个盒中,产生冲突的期望小于1/2时,M的值
任意一球落入盒中有M种情形,两球落入盒中则有 M 2 M^2 M2种情形,其中两球落入同一盒有M种情形,因此两球落入同一盒的概率为
M / M 2 = 1 / M (1) M/M^2=1/M \tag 1 M/M2=1/M(1)
N个球两两组合的可能情形有
C N 2 = N ( N − 1 ) / 2 (2) C_N^2=N(N-1)/2 \tag 2 CN2=N(N−1)/2(2)
那么N球中任意两球落入同一盒(即产生冲突)的期望小于1/2时,结合(1)(2)可得
C N 2 × 1 / M < 1 / 2 N ( N − 1 ) / 2 M < 1 / 2 N ( N − 1 ) < M (3) C_N^2\times 1/M<1/2 \\ N(N-1)/2M<1/2 \\ N(N-1)<M \tag 3 CN2×1/M<1/2N(N−1)/2M<1/2N(N−1)<M(3)
一般我们取 M = N 2 M=N^2 M=N2
完美散列
设一级散列表第i个位置分配到 b i b_i