算法基础(1)

来源:互联网 发布:网狐6603棋牌源码下载 编辑:程序博客网 时间:2024/06/04 20:01

设f和g是定义域为自然数集N上的函数。

1)若存在正数c和n0使得对一切n >= n0  有0 <= f(n)<=cg(n) 成立,则称f(n)的渐进的上界是g(n),记作f(n) = O(g(n)).

2)若存在正数c和n0使得对一切n >= n0  有0 <= cg(n)<=f(n)  成立,则称f(n)的渐进的下界是g(n),记作f(n) = Ω(g(n)).

3)若存在正数c和n0使得对一切n >= n0  有0 <= f(n)<cg(n) 成立,记作f(n) = o(g(n)).

4)若存在正数c和n0使得对一切n >= n0  有0 <= cg(n)<=f(n)  成立,记作f(n) = w(g(n)).

5)f(n) = O(g(n)), f(n) = Ω(g(n)) 则记作  f(n) = Θ(g(n)).

c是一个与n无关的常数。1)和3)中记号分别叫“大O记号”和“小o记号“  他们区别在于f(n) = O(g(n))时,f(n)的阶可能低于g(n)也可能等于g(n)。f(n) = o(g(n))时,f(n)的阶只能低于g(n)因此f(n) = o(g(n))可以推出f(n) = O(g(n))。


定理

1)n ->∞时  f(n)/g(n)存在,并且等于某个常熟c>0,那么f(n) = Θ(g(n)).

2) n ->∞时  f(n)/g(n) = 0, 那么f(n) = o(g(n))

3)  n ->∞时  f(n)/g(n) = ∞, f(n) = w(g(n)).


以下是各种函数的时间复杂度由高到低的排列(√为根号):

    n!,  2^2n  ,  n2^n,  (logn )^logn = n ^ loglogn,  n^3,  nlogn = Θlog(n!),   n = Θ(log10^n), 2^log√n,  2^√(2logn) ,  loglogn  

1 0
原创粉丝点击