算法第二章作业

一、对分治法思想的体会

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的博客,她说会缺少独立的思考,我决定下次我们都先思考后再讨论,可能会更高效。
 
 
posted @ 2019-10-14 00:06  Timbal  阅读(153)  评论(0)    收藏  举报