算法设计与分析:时间复杂度

参考资料:北大公开课 算法设计与分析 屈婉玲教授

函数渐近的界

O

fg 是定义域为自然数集 N 上的函数,若存在正数 cn0,使得对一切的 nn0

0f(n)cg(n)
  • 注意公式内为
  • 定义域为自然数 N,因为问题规模总是自然数;
  • 这个不等式允许在 n<n0 的情况下不成立;
  • c 只要指出其中一个即可

成立,则称 f(n) 渐近的上界g(n),记作:

f(n)=O(g(n))

注意

f(n)=O(g(n)) 中,f(n) 的阶小于等于 g(n) 的阶

Ω

fg 是定义域为自然数集 N 上的函数,若存在正数 cn0,使得对一切的 nn0 (前面与 O(n) 相同)有:

0cg(n)f(n)

成立,则称 f(n)渐近的下界g(n) ,记作

f(n)=Ω(g(n))
  • O(n) 表示 g(n)f(n) 的渐近上界,Ω(n) 表示 g(n)f(n) 的渐近下界;
  • f(n) 的阶不低于 g(n) 的阶;

o

fg 是定义域为自然数集 N 上的函数,对任意的正数 c,都存在 n0,使得 nn0

0f(n)<cg(n)

若成立,则记作

f(n)=o(g(n))
  • g(n) 增长得比 f(n)
  • g(n)f(n) 的上界

ω

o(n) 类似,表示的是下界且 g(n) 增长得比 f(n) 慢。

0cg(n)<f(n)
  • f(n) 的阶高于 g(n)
  • g(n)f(n) 的下界

Θ/θ

f(n)=Ω(g(n))f(n)=O(g(n))

若上面两条等式成立,即 g(n) 同时为 f(n) 的渐近上界和渐近下界,则称

f(n)=Θ(g(n))

表示的是:

  • f(n)g(n) 的阶相等;
  • 允许前面有限(max(n01,n02))个 n 值不满足条件。

有关函数的界的重要定理

极限与函数的界

c 为某个常数且 c>0

limnf(n)g(n)=cf(n)=Θ(g(n))limnf(n)g(n)=0f(n)=o(g(n))limnf(n)g(n)=+f(n)=ω(g(n))

多项式函数和指数函数

指数函数的阶大于多项式函数的阶

nd=o(rn)r>1,d>0

对数函数和幂函数

lnn=o(nd)d>0

对数函数的阶低于幂函数的阶

传递性

O,Ω,Θ 关系具有传递性

O 和定理

f=O(h)g=O(h)f+g=O(h)

重要函数

级别 函数
指数级 2n,3n,n!
多项式级 n,n2,nlogn,n12
对数多项式级 logn,log2n,loglogn
  • 对数函数的底不影响它的阶,所以不关注它的底
  • alogbn=nlogba

指数函数和阶乘

n!=o(nn)n!=ω(2n)log(n!)=Θ(nlogn)

序列求和

等差、等比与调和级数

k+1nak=n(a1+an)2k=0naqk=a(1qn+1)1q,k=0aqk=a1q(q<1)k=1n1k=lnn+O(1)
  • 注意这里面等比数列求和是从 k=0 开始的,所以最终有 n+1 个项,分子是 qn+1