算法导论第四章最后思考题
来源:互联网 发布:java工程师面试简历 编辑:程序博客网 时间:2024/05/21 22:27
最近买了《算法导论》第三版新书,所以就不按照第二版的习题来写答案了。
第二版的4.2找出所缺的整数,这题已经在第三版被删除,所以就不做解答。
4.2参数传递的代价
整个这本书中,我们都假定过程调用中的参数传递所花时间是常数,即使所传递的参数是N个元素的数组也是一样。这个假设对大多数系统都是有效的,因为当参数为数组时,所传递的只是指向该数组的指针,而不是该数组本身。本题讨论三种参数传递策略:
- 数组是由一个指针来传递。时间=Θ(1)。
- 参数数组通过复制而传递。时间Θ(N),N是该数组的大小。
- 一个数组在被传递时,仅拷贝调用过程可能引用的数组的子域。若传递的是子数组 A[p..q]。时间=Θ(p-q+1)。
a) 对于二分查找2.3-5 针对上面的三种参数传递策略,给出最坏情况运行时间的递归式,并给出其解的上界。可以设N为原问题的规模,n为子问题的规模。
b) 重做2.3.1节中MERGE_ SORT的a)部分。
b3) T=θ(q-p+1)=θ(n)时,T(n)=2T(n/2)+θ(n)+θ(n)=2T(n/2)+θ(n) 同b1) T(n)=O(nlog2n) 所以merge-sort算法对于这三种情况都一样,所以这个算法可以忽略参数传递带来的影响。
4.4略。
4.5VLSI测试(芯片测试)
Diogenes教授有n个被认为是完全相同的VLSI芯片,原则上他们是可以互相测试的。教授的测试装置一次可测二片,当该装置中放有两片芯片时,每一片就对另一片作测试并报告其好坏。一个好的芯片总能够报告另一片的好坏,但一个坏的芯片的结果是不可靠的。这样,每次测试的四种可能结果如下:
- 证明若多于n/2的芯片是坏的,在这种成对测试方式下,使用任何策略都不能确定哪个芯 片是好的。假设坏的芯片可以联合起来欺骗教授。
- 假设有多于n/2的芯片是好的,可虑从n片中找出一片好芯片的问题。证明⌊ n/2 ⌋对测试就足以使问题的规模降至近原来的一半。
- 假设多于n/2的芯片是好的,证明好的芯片可用Θ(n)对测试找出。给出并解答表达 测试次数的递归式。
4.6略
0 0
- 算法导论第四章最后思考题
- 算法导论第七章最后思考题
- 算法导论第三版第四章思考题
- 《算法导论》第四章-思考题(参考答案)
- 《算法导论》系列课后思考题之-第四章《递归式》
- 算法导论第八章思考题
- 算法导论第五章概率分析和随机算法最后思考题
- 算法导论 第10章 思考题
- 算法导论十二章思考题12-4
- 算法导论第六章堆排序思考题
- 算法导论第三版第五章思考题
- 算法导论第三版第六章思考题
- 算法导论第三版第七章思考题
- 算法导论第八章思考题-c++
- 《算法导论》第二章-思考题(参考答案)
- 《算法导论》第三章-思考题(参考答案)
- 《算法导论》第五章-思考题(参考答案)
- 《算法导论》系列课后思考题之-第二章《算法入门》
- VxWorks 基本启动方式
- VxWorks 操作系统内存布局
- VxWorks 操作系统内存布局
- Linux驱动程序中比较重要的宏
- Linux驱动程序中比较重要的宏
- 算法导论第四章最后思考题
- USB枚举过程的详细分析<转>
- USB枚举过程
- LINUX下USB1.1设备学习小记(2)_协…
- USB枚举过程
- 带环的链表
- LINUX下USB1.1设备学习小记(2)_协…
- 带环链表求环的起点
- 带环的链表