算法之函数的增长

虽然有时我们能够 确定一个算法的精确运行时间,但是通常并不值得花力气来计算它以获得多余的精度,对于足够大的输入,精确运行时间中倍增常量 和低阶项被输入 规模本身的影响所支配。

渐近记号

用来描述算法渐近运行时间的记号根据 定义域为自然数集N={0,1,2,……}的函数来定义。这样的记号对于描述最坏情况运行时间函数 T(N)是方便的。因为该函数通常只定义 在整数输入规模上。

渐近记号、函数和运行时间

渐近记号实际上应用于函数 。插入排序的最坏情况运行时间刻画为an方+bn+c,其中a、b、c是常量,通过插入排序的运行时间写成θ(n方)。

即使我们使用渐近记号来刻画算法的运行时间,我们也需要了解意指哪个运行时间,有时我们会对最坏运行时间感兴趣。

下面我们介绍 一下适合刻画任何输入的运行时间的渐近记号。

θ记号

插入排序的最坏运行时间为T(n)=θ(n方)

这个记号意指:对于一个给定的函数g(n),用θ(g(n))来表示以下函数的集合

θ(g(n))=
{f(n):存在正常量C1,C2和n0,使得对所有n>=n0,有0<=c1g(n)<=f(n)<=C2g(n)}

若存在正常量c1和c2 使得对于足够大的n,函数f(n)能“夹入”c1g(n)和c2g(n)之间,则f(n)属于集合θ(g(n))。作为替代我们通常记f(n)=θ(g(n))以表达相同的概念

同理
O记号是函数 给出一个常量因子内的上界。如果存在常量n0和c,使得在n0及其右边,f(n)的值总小于或等于cg(n)那么记f(n)=O(g(n)),也就是f(n)在n>=n0时,永远在cg(n)的曲线下面。

Ω记号是f(n)曲线在n>=n0时,永远在cg(n)的上面

1.θ记号渐近地给出一个函数的上界和下界
2.当只有一个渐近 上界时,使用O记号
3.当只有一个渐近下界时,使用Ω记号

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章