《算法导论》第五章-第1节_练习(参考答案)

来源:互联网 发布:美食纪录片 知乎 编辑:程序博客网 时间:2024/05/18 03:18

算法导论(第三版)参考答案:练习5.1-1,练习5.1-2,练习5.1-3

Exercise 5.1-1

Show that the assumption that we are always able to determine which candidate is best, in line 4 of procedure HIRE-ASSISTANT, implies that we know a total order of the ranks of the candidates.

如果一个偏序关系同时又是一个全关系,则称为全序或线性序。一个偏序关系,要求满足自反性、反对称性和传递性。

假设这里的关系为 “是否好或更好于”,

  • 自反性:每个应聘者都比自己好或更好。满足
  • 反对称性:如果应聘者A好或更好于应聘者B,同时应聘者B又好或更好于应聘者A,则可知A和B一样好。满足
  • 传递性:如果应聘者A好或更好于应聘者B,应聘者B又好或更好于应聘者C,则A好或更好于C。满足

所以该关系是一个偏序。又因为所有的应聘者出现的情况的关系,我们都可以判断,所以该关系又是一个全关系。因此,该关系是一个全序。

Exercise 5.1-2

⋆ Describe an implementation of the procedure RANDOM(a,b) that only makes calls to RANDOM(0,1). What is the expected running time of your procedure as a function of a and b?

RANDOM(a,b) 要求等概率出现,其中有 (a,a+1,...,b)ba+1个数。利用二进制编码来表示这些数。

Pseudocode

RANDOM(a,b)  n = [lg(b-a+1)] //向上取整  x = 0 // line 2  for i = 0 to n-1    x += pow(2, i)*RANDOW(0, 1)  if x > b-a+1    back to line 2  return a+x

for循环每次需要跑 nRANDOM(0,1)。同时需要经过多少次”back to line 2”后最终return,这其实服从几何分布 G(ba+12n)。则所以期望运行时间:

T(ba+1)=O(n1ba+12n)=O(lg(ba+1))

Exercise 5.1-3

⋆ Suppose that you want to output 0 with probability 1/2 and 1 with probability 1/2. At your disposal is a procedure BIASED-RANDOM that outputs either 0 or 1. It outputs 1 with some probability p and 0 with probability 1p, where 0<p<1, but you don’t now what p is. Give an algorithm that uses BIASED-RANDOM as a subroutine, and returns an unbiased answer, returning 0 with probability 1/2 and 1 with probability 1/2. What is the expected running time of your algorithm as a function of p?

分析题目发现,用有偏随机数生成器有序地生成两个数,两个数不同的两种情况的概率是相同的。所以

Pseudocode

UNBIASED_RANDOM(0,1)  h = BIASED_RANDOM(0, 1)  //line 1  l = BIASED_RANDOM(0, 1)  if h is not equal l    return h  else    back to line 1

同样服从几何分布,多少次后成功return的期望是 12p(1p)。所以算法期望运行时间为 T=O(12p(1p))

网上看到过实现了 BIASED-RANDOM 的算法,大家可以学习一下。思路为:假设以概率0.7输出1,以概率0.3输出0。则转化为 unbiased -RANDOM(1,10),小于等于7输出1,否则输出0。 参考链接

阅读全文
0 0
原创粉丝点击