随笔分类 -  <Introduction To Algorithms> Stared Solutions

前段时间就想写一个关于《算法导论》部分问题的个人解集,拖了这么久终于动笔了。计划收录书中所有带星号的习题,能解决的都尽自己最大努力给出鄙陋的个人见解;对于自己力所不能及的问题,希望与广大编程爱好者“疑义相与析”。
《算法导论》之 Problem 5.1-3(随机函数发生器的设计)
摘要:问题叙述:*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的函数,你的算法的期望运行时间是多少?算法分析: 已知BIASED-RANDOM可产生0和1,那么 1 - BIASED-RANDOM也产生1和0,且以1 - p的概率输出1,以p的概率输出0。 如果我们将1 - BIASED-RANDOM看... 阅读全文

posted @ 2011-11-25 18:51 Newwayy 阅读(648) 评论(5) 推荐(0)

《算法导论》之 Problem 5.1-2(随机函数发生器的设计)
摘要:问题叙述:*5.1-2 描述RANDOM( a, b )过程的一种实现,它只调用RANDOM( 0, 1 )。作为a和b的函数,你的程序的期望运行时间是多少? 注:RANDOM( a, b )为产生a, a + 1, a + 2, ... , b的函数发生器,且产生各整数的概率相等,同为 1/( b - a + 1 )。例如,RANDOM( 0, 1 )以0.5的概率产生0,1 。算法分析: RANDOM( 0, 1 )产生的结果只有两种可能,即0和1;而RANDOM( a, b )却有b-a+1种可能,二者之间怎么映射成了本问题的关键! 二分思想: 利用RANDOM(... 阅读全文

posted @ 2011-11-25 10:11 Newwayy 阅读(442) 评论(2) 推荐(0)

《算法导论》之 Problem 4-6(VLSI芯片测试)
摘要:问题叙述:4-6 VLSI芯片测试 Diogenes教授有n个被认为是完全相同的VLSI芯片,原则上它们是可以互相测试的。教授的测试装置一次可测二片,当该装置中放有两片芯片时,每一片就对另一片作测试并报告其好坏。一个好的芯片总是能够报告另一片的好坏,但一个坏的芯片的结果是不可靠的。这样,每次测试的四种可能结果如下: A芯片报告 B芯片报告 结论 B是好的 A是好的 都是好的,或都是坏的 B是好的 A是坏的 至少一片是坏的 B是坏的 A是好的 至少一片是坏的... 阅读全文

posted @ 2011-11-08 20:38 Newwayy 阅读(625) 评论(0) 推荐(0)

《算法导论》之 Problem 2.3-7 (集合,查找)
摘要:问题叙述: *2.3-7 请给出一个运行时间Θ(n lg n )的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。算法分析: 1)方法一:穷举 对于集合S,需要找出2个元素,其和为x。可以穷举S中任意2元素,求其和,若有和为x,返回true;若无,返回false。 1 bool is_sum_exist( vector< int > &S, int x ) 2 { 3 if( S.empty() ) 4 return false; 5 for( vector< int >::iterat... 阅读全文

posted @ 2011-11-08 20:13 Newwayy 阅读(440) 评论(0) 推荐(0)