算法导论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