算法第二章作业
一、对分治法思想的体会
1、分治法的本质
将要求解的较大规模的问题分割成k个更小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则递归划分下去,直到问题规模足够小。
(出于平衡子问题的考虑:尽量使子问题的规模大致相同)
2、书上的分治法算法模式
divide-and-conquer(P)
{ if (|P|<=n0) return adhoc(P); 。 divide P into smaller subinstances P1, P2, ..., Pk;
for (i=1; i<=k; i++) yi=divide-and-conquer(Pi);
return merge(y1, ..., yk);}3、分治法适用的情况
分治法所解决的问题一般具有以下特征:
a、该问题的规模缩小到一定的程度就可以容易地解决;
b、问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;
c、利用该问题分解出的子问题的解可以合并为该问题的解;
d、该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子子问题。
4、分治算法的时间复杂性
T(n)=aT(n/b)+ O(nd)
二、结对编程的感想
就感觉比较有乐趣,一边讨论一边做题;我偷偷看了我partner的博客,她说会缺少独立的思考,我决定下次我们都先思考后再讨论,可能会更高效。
浙公网安备 33010602011771号