第三章 函数的增长

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangrunnanshuai/article/details/77895597

输入规模足够大,运行时间几乎只和其增长量级相关(输入规模相关的高阶项会支配低阶项和倍增常量),这时要研究算法的渐进效率

3.1 渐进记号

描述算法渐进运行时间的记号根据定义域为自然数集N的函数来定义。
活用渐进记号:扩展到实数领域,或限制其定义域到自然数的子集。

渐进记号、函数与运行时间

渐进记号是一个数学概念,可用于各个领域。

Θ记号

定义:算法导论P25
理解:就是在n足够大时,存在两个常数c1c2使得函数c1g(n)c2g(n)能够包裹函数f(n),这样的f(n)的集合就是Θ(n)
定义:并且对于f(n)g(n)的这种关系,称g(n)f(n)的一个渐进紧确界
注意,这里提到了一个渐进紧确界,也就是说f(n)可能有多个渐进紧确界,g(n)是其中一个。(这里可能是翻译问题,若等号成立,则紧确,直觉上不应该存在个紧确函数,若等号不成立,则为渐进确界)
f(n)要求是渐进非负的。
记号f(n)=Θ(g(n))被用来表示f(n)Θ(g(n))
一个渐进正函数的低阶项在确定渐进确界时可以被忽略,高阶项系数同样可以被忽略。之后得到的是g(n)。(粗略的)
Θ(1)表示常量。

O记号

表示渐进上界。定义见算法导论P27。
注意,渐进上界的定义规定了其集合内的函数都是渐进非负的。
f(n)=Θ(g(n))蕴含f(n)=O(g(n))Θ是一个比O更强的概念,从集合论角度看,有Θ(g(n))O(g(n))
注意这可能是,也可能不是一个紧确的上界。
一般的O描述算法所有输入的最坏情况。

Ω记号

渐进下界。
算法的运行时间和算法的最坏情况运行时间是有差别的。

等式和不等式中的渐进记号

渐进记号出现在等式中,往往代表不被关注的低阶项。

o记号和ω记号

o记号表示一个非渐进紧确的上界。
注意定义中的小于号。以及常量c不再是存在,而是任意正数。
注意在o记号中f(n)和g(n)的关系。(算法导论P29 3.1)
ω记号表示一个非渐进紧确的下界。
函数传递性、自反性、对称性、转置对称性见算法导论P29。

3.2 标准记号与常用函数

这一节多数是属性定理,不做具体证明。

向下取整与向上取整

3.5 的论证关键是把其中的实数表示为实数是整数和其小数部分的和。

指数增长一定高于多项式增长。
对数增长小于线性增长。

n!=o(nn)n!=ω(2n)lg(n!)=Θ(nlgn)

多重对数得到的值是不断对n取lg使得其值小于等于1时,取对数的次数。
斐波那契数以指数形式增长。

练习

本章练习全是证明,留着以后心情好再说吧~

展开阅读全文

没有更多推荐了,返回首页