《算法导论》笔记——第3章 函数的增长

第3章 函数的增长

渐进记号 (ΘΟοΩω)
Θ记号
对任一个函数f(n),若存在正常数c1, c2, 使当n充分大时,f(n)能被夹在c1g(n)和c2g(n)中间,则f(n)属于集合 Θ(g(n))。因为 Θ(g(n))是一个集合,可以写成“f(n)∈Θ(g(n))”,表示f(n)是Θ(g(n))的元素。Θ(g(n))的定义需要每个成员f(n)∈Θ(g(n))都是渐近非负的,即当n足够大时,f(n)是非负值。
即0≤c1g(n)≤f(n)≤c2g(n),f(n)>0。这就要求函数g(n)也是渐近非负的,因此,Θ记号中用到的每个函数都是渐近非负的。
为了说明Θ记号其效果相当于舍弃了低阶项和忽略了最高阶项的系数,证明一下
1/2n^2 - 3n = Θ( n ^2 )。
对于所有的n ≥ n0,有c1n ^2 ≤ 1/2n ^2 - 3n ≤ c2n ^2成立,除于n ^2不等式得:
c1 ≤ 1/2 - 3/n ≤ c2。取c1=1/14, c2=1/2, n0=7即可满足,也可以选择其它符合条件的常数。

Ο记号
Θ记号渐近地给出一个函数的上界和下界。当只有渐近上界时,使用Ο记号。对一个函数g(n),用Ο(g(n))表示一个函数集合。存在正常数c和n0,使所有的n≥n0,0≤f(n)≤cg(n)。
注意: Θ记号强于Ο记号,Θ集合包含于Ο集合。令人惊讶的是,f(n)=an+b也在Ο(n ^2)中,
设c=a + |b|,n0=1,对任意的n≥n0即n≥1,有0 ≤ f(n) ≤ cg(n),即0 ≤ a*n+b ≤ (a+ |b|)*n ^2成立。其实也不奇怪,这个一次函数以二次函数作为上界,但这个上界不是渐近紧确的。

Ω记号
Ω记号给出函数的渐近下界,对一个函数g(n),用Ω(g(n))表示一个函数集合。存在正常数c和n0,使所有的n≥n0,有0 ≤ cg(n) ≤ f(n)。

定理:对任意两个函数f(n)和g(n),f(n)=Θ(g(n))当且仅当f(n)=Ο(g(n))和f(n)=Ω(g(n))。
注意:Ω描述的是渐近下界,Ο描述的是渐近上界, Θ描述的是渐近确界(包括上界和下界)。插入排序的运行时间介于Ω(n)和Ο(n ^2)之间,但不可以说插入排序的运行时间是Ω(n ^2),因为这里的运行时间指的是对于每一个n值,所有的输入规模。但我们可以说插入排序的最坏情况运行时间为Ω(n ^2),因为确实存在一个输入使算法的时间为Ω(n ^2)。

ο记号
Ο记号所提供的渐进上界可能是也可能不是渐近紧确的。界2n ^2 =Ο(n ^2)是渐进紧确,而2n=Ο(n ^2)却不是渐近紧确。我们用ο记号来表示非渐近紧确的上界。对任意正常数c,存在常数n0>0,使对所有的n≥n0,有0≤f(n)≤cg(n)。与Ο记号不同的是,Ο记号是存在正常数c,而ο记号是对任意正常数c都成立。当n趋于无穷时,lim f(n)/g(n) = 0,f(n)对于非渐近紧确上界g(n)来说就不重要了,增长速度是不及g(n)的。

ω记号
ω记号与Ω记号的关系好像ο记号与Ο记号的关系一样。我们用ω记号来表示非渐近紧确的下界。
f(n)∈ω(g(n))当且仅当g(n)∈ο(f(n)),f(n)以g(n)为下界,当然g(n)就以f(n)为上界了。对任意正常数c,存在常数n0>0,使对所有的n≥n0,有0≤cg(n)≤f(n)。当n趋于无穷时,f(n)对于非渐近紧确下界g(n)来说就变得任意大了。即lim f(n)/g(n) = ∞。

标准记号和常用函数:
由于其它知识点都有涉及,这里只给出对于比较陌生的多重对数函数的算法:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值