【算法导论】02——渐近符号、递归及解法

渐近符号

1、上限 <=

Ο记号 Ο(g(n)) = { f(n) : 存在正常数c和n0,使对所有n>=n0,有0<=f(n)<=c*g(n) }

Ο记号在一个常数因子内给出某函数的一个上界。f(n) = Ο(g(n))表示f(n)是集合O(g(n))的一个元素。f(n) = Θ(g(n))隐含着f(n) = Ο(g(n)),因为Θ记号强于Ο记号。对f(n) = Ο(g(n))只能说明g(n)的某个常数倍是f(n)的渐近上界,而不反映该上界如何接近。Ο记号在用作对算法最坏情况运行时间的上界时就有对任意输入的运行时间的上界。

2、相等 =

Θ记号  Θ(g(n)) = { f(n) : 若存在正常数c1,c2和n0,使对所有n>=n0时有0<=c1*g(n)<=f(n)<=c2*g(n)}

其效果相当于删除f(n)中的低阶项,并忽略最高阶项的系数。


3、下限 >=

Ω记号 Ω(g(n)) = { f(n) : 存在正常数c和n0,使所有n>=n0有f(n) >=c*g(n)}

Ω记号给出一个函数的渐近下界。

对于上面三种,有下面的定理:

对任意两个函数f(n)和g(n),f(n) = Θ(g(n))当且仅当f(n) = Ο(g(n))和f(n) = Ω(g(n)).

4、其它符号

ο记号:Ο记号提供的渐近上界可能是也可能不是渐近紧确的。2n^2 = Ο(n^2)是渐近紧确的,而2n = O(n^2)不是。而o记号用来表示非渐近紧确的。 o(g(n)) = { f(n) : 对任意正常数c,存在正常数n0,使对所有n>=n0,有0<=f(n)<=c*g(n) }

ω记号:ω记号与Ω记号的关系和o记号与Ο记号的关系一样,不在多说。


总之,可以这样理解,Θ记号相当于"=",Ο相当于“<=",Ω相当于”>=",o相当于“<",ω相当于">".这样理解只用于区别不同渐近记号间的关系,其实每个渐近记号为一个函数集合,而非两个数关系那样的。

 

递归式

5.递归式是一组等式或不等式,它所描述的函数是用在更小的输入下该函数的值来定义的。例如 Merge-Sort 的最坏情况运行时间 T(n)可以用以下递归式来表示:

6.解递归式的方法主要有三种:代换法、递归树方法、主方法。

7.代换法(Substitution method)(P38~P40)


定义:先猜测某个界的存在,再用数学归纳法去证明该猜测的正确性。

11.  递归树方法(Recursion-tree method)


用途:画出一个递归树是一种得到好猜测的直接方法。
分析(重点):在递归树中,每一个结点都代表递归函数调用集合中一个子问题的代价。将递归树中每一层内的代价
相加得到一个每层代价的集合,再将每层的代价相加得到递归式所有层次的总代价。


12.  主方法(Master method) 

优点:针对形如 T(n)=aT(n/b)+f(n)的递归式

主方法:设 a≥1 和 b≥1 是常数 f (n)是定义在非负整数上的一个确定的非负函数。又设 T(n)也是定义在非负整数上的一个
非负函数,且满足递归方程 T(n)=aT(n/b)+f(n)。方程 T(n)=aT(n/b)+f(n)中的 n/b 可以是[n/b],也可以是 n/b。那么,在
f(n)的三类情况下,我们有 T(n)的渐近估计式:




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值