算法导论系列笔记之渐进分析及求解递归式

渐进符号、递归及解法

渐进符号

O记号【表达运行时间的上界

  • 公式化定义:O(g(n)) = {f(n):存在正常量c和n0,使得对所有n>=n0,有0<=f(n)<=cg(n)}

eg:
f ( n ) = n 3 + ο ( n 2 ) f(n) = n^3 + \omicron(n^2) f(n)=n3+ο(n2)
该公可以理解为有一个h(n)属于集合O(n^2),满足f(n) = n^3 + h(n),等号不是对等关系,是一种属于、包含关系。

Ω记号【表达运行时间的下界

  • 公式化定义:Ω(g(n)) = {f(n):存在正常量c和n0,使得对所有n>=n0,有0<=cg(n)<=f(n)}

eg:
n = Ω ( l g n ) \sqrt n = Ω(lgn) n =Ω(lgn)

Θ记号

  • 给出一个函数的上界和下界
  • Θ(g(n)) = O(g(n)) ∩ Ω(g(n))

求解递归式

代换法

步骤
  • 猜答案【猜答案的形式
  • 用数学归纳法验证是否满足并求出解中的常数
注意

O不能用来代换

由于基本情况,T(1) = Θ(1),c1要相对于c2足够大

改进归纳法
  • 加入适当的低阶
一些练习:

递归树法

  • 按照递归式构造递归树
一些练习:

主方法

  • 应用于特定的递归式中

  • T ( n ) = a T ( n / b ) + f ( n ) 其 中 a ≥ 1 和 b < 1 T(n) = aT(n/b) +f(n) 其中a\geq1和b<1 T(n)=aT(n/b)+f(n)a1b<1

三种情况

见黑皮书p54

  • f(n)比n^(logb(a))增长的慢,T(n) = Θ(n^logb(a)) 【多项式意义上的小于
  • f(n) = Θ(n^(logb(a))),T(n) = Θ(n^logb(a)*lgn)
  • f(n)比n^(logb(a))增长的快,T(n) = Θ(f(n))
注意:
  • 有存在于三种情况间隙间的情况,不可用主方法求解,比如是小于但不是多项式意义上的小于,是大于但不是项式意义上的大于
一些练习:
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值