题目:
《算法导论》Exercise 11.5-1
假设采用了开放寻址法和均匀散列计数将n个关键字插入到一个大小为m的散列表中。设
p
(
n
,
m
)
p(n,m)
p(n,m),为没有冲突发生的概率。试证明:
p
(
n
,
m
)
≤
e
−
n
(
n
−
1
)
/
2
m
p(n,m) \le e^{-n(n-1)/2m}
p(n,m)≤e−n(n−1)/2m。(提示:见式(3.12)。)论证当
n
n
n超过
m
\sqrt{m}
m时,不发生冲突的概率快速趋于0。
式(3.12): e x ≥ x + 1 e^x \ge x+1 ex≥x+1
Answer:
在开放寻址法中,当采用了均匀散列时,默认关键字插入是完全随机的,那么
p
(
n
,
m
)
p(n,m)
p(n,m)就是一个很常见的概率问题:
p
(
n
,
m
)
=
∏
i
=
1
n
m
−
(
i
−
1
)
m
p(n,m) = \prod_{i=1}^{n}\frac{m-(i-1)}{m}
p(n,m)=i=1∏nmm−(i−1)
显然乘积的各项都大于
0
0
0,使用均值不等式:
∑
i
=
1
n
a
i
n
≥
∏
i
=
1
n
a
i
n
\frac{\sum_{i=1}^{n}a_i}{n} \ge \sqrt[n]{\prod_{i=1}^{n}a_i}
n∑i=1nai≥ni=1∏nai
得到:
p
(
n
,
m
)
≤
(
∑
i
=
1
n
m
−
(
i
−
1
)
m
n
)
n
=
(
n
(
m
+
m
−
(
n
−
1
)
)
2
m
n
)
n
=
(
1
−
n
−
1
2
m
)
n
p(n,m) \le \left(\frac{\sum_{i=1}^{n}\frac{m-(i-1)}{m}}{n}\right)^n = \left(\frac{n(m+m-(n-1))}{2mn}\right)^n = \left(1-\frac{n-1}{2m}\right)^n
p(n,m)≤(n∑i=1nmm−(i−1))n=(2mnn(m+m−(n−1)))n=(1−2mn−1)n
进一步变形:
p
(
n
,
m
)
≤
e
n
ln
(
1
−
n
−
1
2
m
)
p(n,m) \le e^{n\ln(1-\frac{n-1}{2m})}
p(n,m)≤enln(1−2mn−1)
令
I
=
n
ln
(
1
−
n
−
1
2
m
)
I = n\ln(1-\frac{n-1}{2m})
I=nln(1−2mn−1),分析
I
I
I:
I
=
n
(
1
−
n
2
m
−
1
2
(
n
−
2
2
m
)
2
+
o
(
(
n
−
2
2
m
)
2
)
)
≤
n
(
1
−
n
2
m
)
=
−
n
(
n
−
1
)
2
m
I = n\left(\frac{1-n}{2m}-\frac{1}{2}\left(\frac{n-2}{2m}\right)^2+o(\left(\frac{n-2}{2m}\right)^2) \right) \le n\left(\frac{1-n}{2m}\right) = \frac{-n(n-1)}{2m}
I=n(2m1−n−21(2mn−2)2+o((2mn−2)2))≤n(2m1−n)=2m−n(n−1)
已知
e
x
e^x
ex为单调递增函数,故:
p
(
n
,
m
)
≤
e
n
ln
(
1
−
n
−
1
2
m
)
≤
e
−
n
(
n
−
1
)
/
2
m
p(n,m) \le e^{n\ln(1-\frac{n-1}{2m})} \le e^{-n(n-1)/2m}
p(n,m)≤enln(1−2mn−1)≤e−n(n−1)/2m
证毕。下论证当 n n n超过 m \sqrt{m} m时,不发生冲突的概率快速趋于0。\
显然,当
n
n
n等于
m
\sqrt{m}
m时有:
−
n
(
n
−
1
)
2
m
=
−
m
(
m
−
1
)
2
m
=
1
2
(
1
m
−
1
)
≈
−
1
2
\frac{-n(n-1)}{2m} = \frac{-\sqrt{m}(\sqrt{m}-1)}{2m} = \frac{1}{2}\left(\frac{1}{\sqrt{m}} - 1\right) \approx -\frac{1}{2}
2m−n(n−1)=2m−m(m−1)=21(m1−1)≈−21
即:
p
(
n
,
m
)
≤
e
−
n
(
n
−
1
)
/
2
m
=
e
1
2
(
1
m
−
1
)
≈
e
−
0.5
≈
0.6065
p(n,m) \le e^{-n(n-1)/2m} = e^{\frac{1}{2}\left(\frac{1}{\sqrt{m}} - 1\right)} \approx e^{-0.5} \approx 0.6065
p(n,m)≤e−n(n−1)/2m=e21(m1−1)≈e−0.5≈0.6065
同理可得,当
n
n
n等于
2
m
2\sqrt{m}
2m时:
p
(
n
,
m
)
≤
e
−
n
(
n
−
1
)
/
2
m
=
e
1
m
−
2
≈
e
−
2
≈
0.1353
p(n,m) \le e^{-n(n-1)/2m} = e^{\frac{1}{\sqrt{m}}-2} \approx e^{-2} \approx 0.1353
p(n,m)≤e−n(n−1)/2m=em1−2≈e−2≈0.1353
当
n
n
n等于
3
m
3\sqrt{m}
3m时:
p
(
n
,
m
)
≤
e
−
n
(
n
−
1
)
/
2
m
=
e
3
2
m
−
4.5
≈
e
−
4.5
≈
0.0111
p(n,m) \le e^{-n(n-1)/2m} = e^{\frac{3}{2\sqrt{m}}-4.5} \approx e^{-4.5} \approx 0.0111
p(n,m)≤e−n(n−1)/2m=e2m3−4.5≈e−4.5≈0.0111
从上述计算中可以看出,当 n n n小于 m \sqrt{m} m时,不发生冲突的概率大于 0.6 0.6 0.6,当 n n n超过 m \sqrt{m} m时,不发生冲突的概率快速下降,在 n n n等于 3 m 3\sqrt{m} 3m时概率已经下降到 0.0111 0.0111 0.0111以下。
如果有关于这道习题的看法,欢迎讨论!