算法导论5-1

读书笔记

本小节并没有讲太多东西,但是最后一句话有一些意义;

一般而言,当概率分布实在算法的输入上时,我们讨论的是平均情况运行时间;当算法本身做出随机选择时,我们讨论其期望时间。

课后习题

5.1-1

证明:假设在过程HIRE-ASSISTANT的第4行中,我们总能决定哪一个应聘者最佳,则意味着我们知道应聘者排名的全部次序;

HIRE-ASSISTANT算法如下:

best = 0
for i = 1 to n
    interview candidate i
    if candidate i is better than candidate best
        best = i
        hire candidate i

事实上这是显而易见的,这个过程和插入排序是一致的,当只有一个人来应聘时,无需排序;当有两个人时,两者的次序是显然的;当有三人时,从best开始比较,得到他应有的名次,......以此类推,得到所有的次序;

5.1-2

请描述RANDOM(a, b)过程的一种实现,它只调用RANDOM(0, 1)。作为\(a\)\(b\)的函数,你的过程期望时间是多少?

连续调用RANDOM(0, 1 )函数\((b -a +1)\)次,多次函数之和就是RANDOM(a, b)的结果;

期望时间:\((b -a +1)\) * RANDOM(0, 1)

5.1-3

假设你希望以\(1/2\)的概率输出0与1。你可以自由使用一个输出0或1的过程BIASED-RANDOM。它以某概率\(p\)输出1,概率\(1-p\)输出0,其中\(0<p<1\),但是\(p\)的值未知。请给出一个利用BIASED-RANDOM作为子程序的算法,返回一个无偏的结果,能以概率\(1/2\)返回0,以\(1/2\)概率返回1。作为\(p\)的函数,你的算法期望时间是多少?

也就是使用\(p\)\(1-p\)构造两个相等的值,其实两个数也没有太多花样,先是最简单的加减乘除,最后确认\(p(1-p)\)\((1-p)p\)两者值相等。

期望运行时间:\(2 *\)BIASED-RANDOM

posted @ 2021-01-15 10:19  ijkzen  阅读(118)  评论(0编辑  收藏  举报