算法导论习题11-1
(散列最长探索的界) 采用开放寻址法,用一个大小为 m m m的散列表来储存 n n n( n ≤ m / 2 n \le m/2 n≤m/2)个数据项目。
a. 假设采用均匀散列,证明:对于 i = 1 , 2 , ⋯ , n i=1,2,\cdots,n i=1,2,⋯,n,第 i i i次插入需要严格多于 k k k次探查的概率至多为 2 − k 2^{-k} 2−k
Answer:
第
i
i
i次插入时,已经有
i
−
1
i-1
i−1个桶中有元素,则
k
k
k次探查都命中有元素的桶的概率为:
p
(
k
)
=
∏
j
=
1
k
i
−
j
m
p(k) = \prod_{j=1}^{k}\frac{i-j}{m}
p(k)=j=1∏kmi−j
已知
n
≤
m
/
2
n \le m/2
n≤m/2,则有:
p
(
k
)
=
∏
j
=
1
k
i
−
j
m
≤
∏
j
=
1
k
m
/
2
m
=
2
−
k
p(k) = \prod_{j=1}^{k}\frac{i-j}{m} \le \prod_{j=1}^{k}\frac{m/2}{m} = 2^{-k}
p(k)=j=1∏kmi−j≤j=1∏kmm/2=2−k
证毕。
b. 证明:对于 i = 1 , 2 , ⋯ , n i=1,2,\cdots,n i=1,2,⋯,n,第 i i i次插入需要多于 2 lg n 2\lg n 2lgn次探查的概率为 O ( 1 / n 2 ) O(1/n^2) O(1/n2)。
Answer:
第
i
i
i次插入时,已经有
i
−
1
i-1
i−1个桶中有元素,则
2
lg
n
2\lg n
2lgn次探查都命中有元素的桶的概率为:
p
(
k
)
=
∏
j
=
1
2
lg
n
i
−
j
m
p(k) = \prod_{j=1}^{2\lg n}\frac{i-j}{m}
p(k)=j=1∏2lgnmi−j
已知
n
≤
m
/
2
n \le m/2
n≤m/2,则有:
p
(
2
lg
n
)
=
∏
j
=
1
2
lg
n
i
−
j
m
≤
∏
j
=
1
2
lg
n
m
/
2
m
=
2
−
2
lg
n
=
1
n
2
=
O
(
1
/
n
2
)
p(2\lg n) = \prod_{j=1}^{2\lg n}\frac{i-j}{m} \le \prod_{j=1}^{2\lg n}\frac{m/2}{m} = 2^{-2\lg n} = \frac{1}{n^2} = O(1/n^2)
p(2lgn)=j=1∏2lgnmi−j≤j=1∏2lgnmm/2=2−2lgn=n21=O(1/n2)
证毕。
c. 设随机变量 X i X_i Xi表示第 i i i次插入所需的探查次数。上面(b)中已证明 P r { X i > 2 lg n } = O ( 1 / n 2 ) Pr\{X_i>2\lg n\}=O(1/n^2) Pr{Xi>2lgn}=O(1/n2)。设随机变量 X = max 1 ≤ i ≤ n X i X = \max_{1\le i \le n}X_i X=max1≤i≤nXi表示 n n n次插入中所需探查术的最大值。证明: P r { X > 2 lg n } = O ( 1 / n ) Pr\{X>2\lg n\} = O(1/n) Pr{X>2lgn}=O(1/n)。
Answer:
由(b)可知
P
r
{
X
i
>
2
lg
n
}
≤
1
n
2
Pr\{X_i>2\lg n\} \le \frac{1}{n^2}
Pr{Xi>2lgn}≤n21,那么:
P
r
{
X
i
≤
2
lg
n
}
≥
1
−
1
n
2
Pr\{X_i\le2\lg n\} \ge 1 - \frac{1}{n^2}
Pr{Xi≤2lgn}≥1−n21
则有:
P
r
{
X
1
≤
2
lg
n
,
X
2
≤
2
lg
n
,
⋯
,
X
n
≤
2
lg
n
}
≥
(
1
−
1
n
2
)
n
Pr\{X_1\le2\lg n,X_2\le2\lg n,\cdots,X_n\le2\lg n\} \ge \left(1-\frac{1}{n^2}\right)^n
Pr{X1≤2lgn,X2≤2lgn,⋯,Xn≤2lgn}≥(1−n21)n
又有:
P
r
{
X
>
2
lg
n
}
=
1
−
P
r
{
X
1
≤
2
lg
n
,
X
2
≤
2
lg
n
,
⋯
,
X
n
≤
2
lg
n
}
Pr\{X > 2\lg n\} = 1 - Pr\{X_1\le2\lg n,X_2\le2\lg n,\cdots,X_n\le2\lg n\}
Pr{X>2lgn}=1−Pr{X1≤2lgn,X2≤2lgn,⋯,Xn≤2lgn}
故:
P
r
{
X
>
2
lg
n
}
≤
1
−
(
1
−
1
n
2
)
n
=
1
−
e
I
(
n
)
Pr\{X > 2\lg n\} \le 1 - \left(1-\frac{1}{n^2}\right)^n = 1 - e^{I(n)}
Pr{X>2lgn}≤1−(1−n21)n=1−eI(n)
其中
I
(
n
)
=
n
ln
(
1
−
1
/
n
2
)
I(n) = n\ln(1-1/n^2)
I(n)=nln(1−1/n2),将
I
(
n
)
I(n)
I(n)展开:
I
(
n
)
=
n
(
−
1
n
2
−
1
2
(
1
n
2
)
2
+
o
(
1
n
2
)
)
=
−
1
n
+
o
(
1
n
)
I(n) = n\left(\frac{-1}{n^2}-\frac{1}{2}\left(\frac{1}{n^2}\right)^2 + o(\frac{1}{n^2})\right) = \frac{-1}{n} + o(\frac{1}{n})
I(n)=n(n2−1−21(n21)2+o(n21))=n−1+o(n1)
且有:
e
I
(
n
)
=
1
+
I
(
n
)
+
o
(
I
(
n
)
)
e^{I(n)} = 1 + I(n) + o(I(n))
eI(n)=1+I(n)+o(I(n))
故:
P
r
{
X
>
2
lg
n
}
≤
1
−
e
I
(
n
)
=
1
−
(
1
+
(
−
1
n
+
o
(
1
n
)
)
)
=
1
n
+
o
(
1
n
)
Pr\{X > 2\lg n\} \le 1 - e^{I(n)} = 1 - \left(1 + \left(\frac{-1}{n} + o(\frac{1}{n})\right)\right) = \frac{1}{n} + o(\frac{1}{n})
Pr{X>2lgn}≤1−eI(n)=1−(1+(n−1+o(n1)))=n1+o(n1)
因此:
P
r
{
X
>
2
lg
n
}
=
O
(
1
/
n
)
Pr\{X > 2\lg n\} = O(1/n)
Pr{X>2lgn}=O(1/n)
证毕。
d.证明:最长探查序列的期望长度为 E [ x ] = O ( lg n ) E[x]=O(\lg n) E[x]=O(lgn)。
Answer:
根据定义,有:
证毕。