《算法导论》读书笔记(2)复杂度、分治策略 部分习题

本文是《算法导论》第三章和第四章的读书笔记,涵盖了函数增长、渐进符号和分治策略。讨论了如何解决分治策略中的递归式问题,通过实例分析了分治法与暴力枚举法的时间复杂度差异。同时,通过习题解答探讨了函数的上下界、最大子数组问题以及两两测试的解决方案。
摘要由CSDN通过智能技术生成

继续。

第3章,函数的增长。这章比较简单。渐进符号,O, Θ, Ω。函数的上下界。

练习3.2-8,k*ln(k)>=C1*n; k*ln(k)<=C2*n; 解不等式,k=Θ(n/lnn)。

思考题3-6,a: n; b: lg*(n); c: log2(n); d: log2(n)-1; e:  -lg(lg(n)); f: 无穷大; g: -log3(log2(n)); h: log(lgn)(n/2) //非最优;

第4章,分治策略。递归式,子问题,求解递归式的三种方法。对递归树法比较感兴趣。举了个最大子数组的例子。这个例子中分治与暴力枚举的区别在与,分治是先划中间点,寻找跨越中间点的一对最大最小点,然后在左右两个分划的区域继续寻找。这样,每层Θ(n),一共log2(n)层。而暴力枚举法需要对每个元素都检查n次,总共是Θ(n^2)。如果用非常不严谨的伪码表示:

function find(A){if count(A)<2 return 0; if count(A)==2 return A[end]-A[begin]; return max(find_cross(A),find(A前半),find(A后半));}
function find_cross(A){return find_biggest_in(A后半)-find_smallest_in(A前半);}

递归树计算渐进紧确解。按层分解,每层各自求和后,求各层总和。主定理无感。

练习4.4-8,T(n)=T(n-a)-T(a)+cn,a是常数,所以总的层数是n/a,每层cn,故总计为Θ(n^2)。</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值