参考资料:北大公开课 算法设计与分析 屈婉玲教授
函数渐近的界
O
设 f 和 g 是定义域为自然数集 N 上的函数,若存在正数 c 和 n0,使得对一切的 n≤n0 有
0≤f(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) 的阶
Ω
设 f 和 g 是定义域为自然数集 N 上的函数,若存在正数 c 和 n0,使得对一切的 n≤n0 (前面与 O(n) 相同)有:
0≤cg(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
设 f 和 g 是定义域为自然数集 N 上的函数,对任意的正数 c,都存在 n0,使得 n≥n0 有
0≤f(n)<cg(n)
若成立,则记作
f(n)=o(g(n))
- g(n) 增长得比 f(n) 快
- g(n) 为 f(n) 的上界
ω
和 o(n) 类似,表示的是下界且 g(n) 增长得比 f(n) 慢。
0≤cg(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
n→∞limg(n)f(n)=c⟺f(n)=Θ(g(n))n→∞limg(n)f(n)=0⟺f(n)=o(g(n))n→∞limg(n)f(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,n21 |
对数多项式级 |
logn,log2n,loglogn |
- 对数函数的底不影响它的阶,所以不关注它的底
- alogbn=nlogba
指数函数和阶乘
n!=o(nn)n!=ω(2n)log(n!)=Θ(nlogn)
序列求和
等差、等比与调和级数
k+1∑nak=2n(a1+an)k=0∑naqk=1−qa(1−qn+1),k=0∑∞aqk=1−qa(q<1)k=1∑nk1=lnn+O(1)
- 注意这里面等比数列求和是从 k=0 开始的,所以最终有 n+1 个项,分子是 qn+1