您的位置:首页 > 其它

《算法导论》第三版第5章 概率分析和随机算法 练习&思考题 个人答案

2019-01-03 10:40 591 查看

注:本章内容需要一定的《概率论与随机过程》课程基础。

5.1 雇用问题

5.1-1

以下翻译自https://ita.skanev.com/05/01/01.html
解:如果一个偏序关系同时又是一个全关系,则称为全序或线性序。一个偏序关系,要求满足自反性、反对称性和传递性。
假设这里的关系为 “是否一样好或更好于”,
自反性:每个应聘者都比自己好或更好。
反对称性:如果应聘者A与B一样好或更好于应聘者B,同时应聘者B又与A一样好或更好于应聘者A,则可知A和B一样好。
传递性:如果应聘者A与B一样好或更好于应聘者B,应聘者B又与C一样好或更好于应聘者C,则A与C一样好或更好于C。
所以该关系是一个偏序。又因为所有的应聘者出现的情况的关系,我们都可以判断,所以该关系又是一个全关系。因此,该关系是一个全序。

5.1-2

解:

RANDOM(a, b)
n = b - a
c = ceiling(lgn)
offset = 0
for i = 1 to c
offset = offset + b[i] * (2^i)
if offset > n
return RANDOM(a, b)
else return a + offset

O(ln⁡(b−a))O(\ln(b-a))O(ln(b−a))

5.1-3

思路:生成两次有偏随机数,两数相等的概率为0.5,不相等的概率也为0.5。
解:

RANDOM
if BIASED-RANDOM == BIASED-RANDOM
return 1
else return 0

运行时间Θ(1)\Theta(1)Θ(1)。

5.2 指示器随机变量

5.2-1

解:1n\frac{1}{n}n1​;1n!\frac{1}{n!}n!1​

5.2-2

提示:过程中的求和可用积分计算。
解:1n(ln⁡(n−1)+O(1))\frac{1}{n}(\ln(n-1)+O(1))n1​(ln(n−1)+O(1))

5.2-3

解:3.5n3.5n3.5n

5.2-4

解:1

5.2-5

解:12An2\frac{1}{2}A_n^221​An2​

5.3 随机算法

5.3-1

解:

RANDOMIZE-IN-PLACE(A)
n = A.length
swap A[1] with A[RANDOM(1, n)]
for i = 2 to n
swap A[i] with A[RANDOM(i, n)]

循环不变式的保持变为:我们假设在第i(i=2,…,n)次迭代之前,每种可能的(i-1)排列出现在子数组A[1…i-1]中的概率是(n-i+1)!/n!。

5.3-2

思路:没有实现教授的意图,当n=3时可验证。

5.3-3

思路:看似更“随机”了,但其实会产生不均匀的随机排列。均匀随机有n!n!n!种可能,而本题会产生nnn^nnn种可能,在n比较小时也可以通过实验验证,一个很好的参考

5.3-4

思路:其实很容易看出这是一个随机偏移量的循环右移,因此易证概率为1/n。

5.3-5

证明:
Pr⁡{1∩2∩3∩…}=Pr⁡{1}⋅Pr⁡{2∣1}⋅Pr⁡{3∣1∩2}⋯=1(1−1n3)(1−2n3)(1−3n3)⋯≥1(1−nn3)(1−nn3)(1−nn3)⋯≥(1−1n2)n≥1−1n\begin{aligned} \Pr\{1 \cap 2 \cap 3 \cap \ldots\} &= \Pr\{1\} \cdot \Pr\{2 | 1\} \cdot \Pr\{3 | 1 \cap 2\} \cdots \\ &= 1 \bigg(1 - \frac{1}{n^3}\bigg) \bigg(1 - \frac{2}{n^3}\bigg) \bigg(1 - \frac{3}{n^3}\bigg) \cdots \\ &\ge 1 \bigg(1 - \frac{n}{n^3}\bigg) \bigg(1 - \frac{n}{n^3}\bigg) \bigg(1 - \frac{n}{n^3}\bigg) \cdots \\ &\ge \bigg(1 - \frac{1}{n^2}\bigg)^n \\ &\ge 1 - \frac{1}{n} \\ \end{aligned}Pr{1∩2∩3∩…}​=Pr{1}⋅Pr{2∣1}⋅Pr{3∣1∩2}⋯=1(1−n31​)(1−n32​)(1−n33​)⋯≥1(1−n3n​)(1−n3n​)(1−n3n​)⋯≥(1−n21​)n≥1−n1​​

5.3-6

思路:可以对优先级相同的元素再生成一次新的优先级。

5.3-7

思路:该过程返回一个含有m个元素的随机样本。即一个均匀随机组合,每个组合出现概率为1Cnm\frac{1}{C_n^m}Cnm​1​。
使用归纳法证明,初始条件易证。假设在m-1时,RANDOM-SAMPLE(m-1, n-1) 依然成立。那么在m时,分两种情况:新随机样本中是否包含元素n。
(1)如果包含n:mn(1Cn−1m−1)=1Cnm\frac{m}{n}(\frac{1}{C_{n-1}^{m-1}}) = \frac{1}{C_n^m}nm​(Cn−1m−1​1​)=Cnm​1​
(2)如果不包含n:n−mn(1Cn−1m)=1Cnm\frac{n-m}{n}(\frac{1}{C_{n-1}^{m}}) = \frac{1}{C_n^m}nn−m​(Cn−1m​1​)=Cnm​1​

5.4 概率分析和指示器随机变量的进一步使用

5.4-1

解:1lg⁡365−lg⁡364≈263\frac{1}{\lg365-\lg364}\approx263lg365−lg3641​≈263;115115115

5.4-2

解:k(k−1)&lt;2bln⁡2k(k-1)&lt;2b\ln2k(k−1)<2bln2,最后结果k没算。

5.4-3

解:足够.

5.4-4

解:
k(k−1)(k−2)6n2≥1\frac{k(k-1)(k-2)}{6n^2}\geq16n2k(k−1)(k−2)​≥1
k≥94k\geq94k≥94

5.4-5

解:Anknk\frac{A_n^k}{n^k}nkAnk​​;相当于k个人生日都不相同

5.4-6

解:ne\frac{n}{e}en​;1e\frac{1}{e}e1​

5.4-7

思路:把k=⌈lg⁡n−2lg⁡lg⁡n⌉k=⌈\lg n−2\lg\lg n⌉k=⌈lgn−2lglgn⌉代入。

思考题

5-1 (概率计数)

a.

E[Xj]=o(1−1ni+1−ni)+1⋅((ni+1−ni)⋅1ni+1−ni)=1E[X_j] = o(1 - \frac{1}{n_{i+1}-n_i}) + 1 · ((n_{i+1}-n_i) · \frac{1}{n_{i+1}-n_i})=1E[Xj​]=o(1−ni+1​−ni​1​)+1⋅((ni+1​−ni​)⋅ni+1​−ni​1​)=1
nE[Xj]=nnE[X_j] = nnE[Xj​]=n

b.

Var[Xj]=E[Xj2]−E2[Xj]=99Var[X_j] = E[X_j^2] - E^2[X_j] = 99Var[Xj​]=E[Xj2​]−E2[Xj​]=99
nVar[Xj]=99nnVar[X_j] = 99nnVar[Xj​]=99n

5-2 (查找一个无序数组)

a.

解:

RANDOM-SEARCH(A, n, x)
let B(n)=0 be a new array
index = RANDOM(1, n)
while A[index] != x
B[index] = 1
if B.sum = n
return NIL
index = RANDOM(1, n)
return index

b.

解:nnn

c.

解:nk\frac{n}{k}kn​

d.

解:n(ln⁡n+O(1))n(\ln n + O(1))n(lnn+O(1))

e.

解:n+12\frac{n+1}{2}2n+1​;nnn

f.

解:(n+1)/(k+1)(n+1)/(k+1)(n+1)/(k+1);n−k+1n-k+1n−k+1

g.

解:nnn;nnn

h.

解:与DETERMINISTIC-SEARCH相同。

i.

解:SCRAMBLE-SEARCH;因为可避免特殊输入情况带来的影响 ;DETERMINISTIC-SEARCH,因为SCRAMBLE-SEARCH虽然可以有更好的期望结果,但重新排列数组的操作时间内已经可以扫描一遍数组了。。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: