MIT算法导论-第二讲-渐进符号,递归及解法

1.渐进符号

  1. Θ符号,f(n) = Θ(g(n)),表示f(n)的复杂度既大于等于*g(n)的复杂度,又小于等于g(n)的复杂度,即于g(n)的复杂度相当*
  2. O符号,f(n) = O(g(n)),表示f(n)的复杂度最多与g(n)一个数量级,即小于等于
  3. Ω符号,f(n) = Ω(g(n)),f(n)的复杂度最少与g(n)一个数量级,即大于等于
    这里写图片描述

  4. o符号,f(n) = o(g(n)),表示f(n)的复杂度要比g(n)的数量级小,即小于
    例如2n = o(n^2) ,但是2n^2 != o(n^2)

  5. ω符号,f(n) = ω(g(n)),表示f(n)的复杂度要比g(n)的数量级大,即大于

2.递归式

算法设计中经常会用到递归,利用递归式的方法可以清晰地显示算法的整个过程,而对于分析算法的复杂度,解递归式就有了用处。


1. 代换法

利用数学归纳法证明递归式的时间复杂度是否符合上界或下界
例如 T(n)= 4T(n/2) +n , [T(1) = O(1)]

 假设T(k) ≤ ck^3 (k<n) ,带入上面递归式,得到
 T(n) ≤ 4c(n/2)^3 + n = 1/2cn^3+n = cn^3-(1/2cn3-n)≤cn^3

这样就得到了一个上界O(n^3)。

假设T(k) ≤ ck^2 (k<n) ,带入上面递归式,得到
T(n) ≤ 4c(n/2)^2 + n =cn^2+n= cn^2-(-n) 

因此这里无法得到T(n) ≤cn^2,也就是说O(n^2)不是T(n)的上界。


2. 递归树

在递归树中,每一个结点都代表一个子代价,每层的代价是该层所有子代价的总和,总问题的代价就是所有层的代价总和。
所以,我们利用递归树求解代价,需要知道,一个是每一层的代价,一个是树的高度
如下面的例子所示:
T(n)=T(n/4)+T(n/2)+n^2 的递归树
得最后的Θ(n)= n^2。


3.主定理方法


主定理公式3种情况的用法

主定理方法的证明

如下图所示,最后的叶节点数量为 a^(logbn) = n^(logba),因此O(n)的取值和f(n)以及叶节点数量有关。

主定理方法的思想
1,整个递归树的权重从根节点到叶节点一直增加,所以整个递归树的权重主要在叶子节点上;

2,(k = 0)递归树每层的权重大致相同,总共h层,所以整个递归树的权重将各层的权重加起来即可;

3,则与CASE 1的情况正好相反,所以整个递归树的权重主要在根节点上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值