算法导论习题11.5-1

题目:

《算法导论》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)en(n1)/2m。(提示:见式(3.12)。)论证当 n n n超过 m \sqrt{m} m 时,不发生冲突的概率快速趋于0。

式(3.12): e x ≥ x + 1 e^x \ge x+1 exx+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=1nmm(i1)

显然乘积的各项都大于 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} ni=1naini=1nai

得到:
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)(ni=1nmm(i1))n=(2mnn(m+m(n1)))n=(12mn1)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(12mn1)

I = n ln ⁡ ( 1 − n − 1 2 m ) I = n\ln(1-\frac{n-1}{2m}) I=nln(12mn1),分析 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(2m1n21(2mn2)2+o((2mn2)2))n(2m1n)=2mn(n1)

已知 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(12mn1)en(n1)/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} 2mn(n1)=2mm (m 1)=21(m 11)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)en(n1)/2m=e21(m 11)e0.50.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)en(n1)/2m=em 12e20.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)en(n1)/2m=e2m 34.5e4.50.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以下。

如果有关于这道习题的看法,欢迎讨论!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值