算法分析(期末复习版)
算法分析第二章
算法的渐进表示
1.f(n)= O(g(n))
如果存在两个正常数c和n0,对于所有的n≥n0,有|f(n)|≤c|g(n)|,则记作
f(n)=O(g(n))。
- O(g(n))表示f(n)的上界
- f(n)的阶不高于g(n)的阶
- O的相关性质
- O(f(n))+O(g(n)) = O(max(f(n), g(n)) ;
- O(f(n))+O(g(n)) = O(f(n)+g(n)) ;
- O(f(n)) O(g(n)) = O(f(n) g(n)) ;
- 如果g(n) = O(f(n)) ,则O(f(n))+O(g(n)) = O(f(n)) ;
- O(cf(n)) = O(f(n)) ,其中c是一个正的常数;
- 定理
若A(n)=amnm+…+a1n+a0是一个m次多项式,则A(n)=O(nm)
- f(n) = O(f(n))。
2.f(n)=Ω(g(n))
如果存在两个正常数c和n0,对于所有的n≥n0,有|f(n)| ≥ c|g(n)|,则记作:f(n)=Ω(g(n))。
- Ω(g(n))表示f(n)的下界
- f(n)的阶不低于g(n)的阶
- Ω的性质
- Ω(f(n))+ Ω(g(n)) = Ω(min(f(n), g(n)) ;
- Ω(f(n))+ (g(n)) = Ω(f(n)+g(n)) ;
- Ω(f(n)) Ω(g(n)) = Ω(f(n)g(n)) ;
- 如果g(n) = Ω(f(n)) ,则Ω(f(n))+ Ω(g(n)) = Ω(f(n)) ;
- Ω(cf(n)) = Ω(f(n)) ,其中c是一个正的常数;
- f(n) = Ω(f(n))。
3.f(n)=Θ(g(n))
如果存在正常数c1,c2和n0,对于所有的n≥n0,有 c1|g(n)|≤ |f(n)|≤ c2|g(n)|,则记作:f(n)= Θ(g(n))。
- 一个算法的f(n)=Θ(g(n))意味着该算法在最好和最坏情况下的计算时间就一个常数因子范围内而言是相同的。
定理
- 传递性
f(n)= Θ(g(n)), g(n)= Θ(h(n)) f(n)= Θ(h(n));
f(n)= O(g(n)), g(n)= O (h(n)) f(n)= O (h(n));
f(n)= Ω(g(n)), g(n)= Ω (h(n)) f(n)= Ω(h(n)); - 反身性
f(n)= Θ(f(n));
f(n)= O(f(n));
f(n)= Ω(f(n))。
不同时间复杂性函数的对比
证明方法总结
1.p(n)=max{f(n),g(n)}(看题里是要求什么)
2.按定义设两个函数F(n)=O(f(n))和G(n)=O(g(n))
3.F(n)+G(n)分别通过定义展开得到与(c1+c2) ∗ * ∗p(n)的关系
4.c3=c1+c2,n3=max{n1,n2}(这个也是根据题来的),得到F(n)+G(n)与c3 ∗ * ∗p(n)
https://blog.csdn.net/m0_47704575/article/details/117383896