算法导论笔记:03渐进符号

来源:互联网 发布:党员数据分析 编辑:程序博客网 时间:2024/05/21 14:04

1:Θ记号:

        对一个给定的函数g(n),用Θ(g(n))来表示以下函数的集合

Θ(g(n))={f(n):存在正常量c1、c2 和 n0,使得对所有nn0,有0≤c1g(n)≤f(n)≤c2g(n)}

        g(n)是f(n)的一个渐近紧确界(asymptotically tight bound)。

 

2:O符号

        当只有一个渐近上界时,使用O记号。对于给定的函数g(n),用O(g(n))示以下函数的集合:
O(g(n))={f(n):存在正常量c和n0,使得对所有n≥n0,有0≤f(n)≤cg(n)}

        当我们说“运行时间为O(n^2)”时,意指存在一个O(n^2)的函数f(n),使得对n的任意值,不管选择什么特定的规模为n的输入,其运行时间的上界都是f(n)。这也就是说最坏情况运行时间为O(n^2)

 

3:Ω记号

        Ω记号提供了渐近下界。对于给定的函数g(n),用Ω(g(n))来表示以下函数的集合:

Ω(g(n))={f(n):存在正常量c和n0,使得对所有n≥n0,有0≤cg(n)≤f(n)}

        当称一个算法的运行时间(无修饰语)为Ω(g(n))时,我们意指对每个n值,不管选择什么特定的规模为n的输入,只要n足够大,对那个输入的运行时间至少是g(n)的常量倍。等价地,我们再对一个算法的最好情况运行时间给出一个下界。例如,插入排序的最好情况运行时间为Ω(n),这蕴涵着插入排序的运行时间为Ω(n)。


4:o记号

        由O记号提供的渐近上界可能是也可能不是渐近紧确的。界2n^2=O(n^2)是渐近紧确的,但是界2n=O(n^2)却不是。我们使用o记号来表示一个非渐近紧确的上界。形式化地定义o(g(n))为以下集合:
o(g(n))={f(n):对任意正常量c>0,存在常量n0>0,使得对所有n≥n0,有0≤f(n)<cg(n)}。


5:ω记号

        ω记号与Ω记号的关系类似于o记号与O记号的关系。我们使用ω记号来表示一个非渐近紧确的下界。定义它的一种方式是:f(n)∈ω(g(n))当且仅当g(n)∈o(f(n))

        然而,我们形式化地定义ω(g(n)):为以下集合:

ω(g(n))={f(n):对任意正常量c>0,存在常量n0>0,使得对所有n≥n0,有0≤cg(n)f(n)}


6:一般来说,对任意多项式p(n)=,其中为常量且>0,我们有p(n)=Θ(n^d)。

0 0