1.1 O(order)的定义
- 如果存在正常数C CC和自然数N0,使得当N ≥ N 0 N ≥ N_0N≥N0时有f ( N ) ≤ C g ( N ) f(N) ≤ Cg(N)f(N)≤Cg(N),则记
f ( N ) = O ( g ( N ) ) f(N) = O(g(N))f(N)=O(g(N))可以说:f ( N ) f(N)f(N) 的阶不高于g ( N ) g(N)g(N)的阶。
1.2 Ω ΩΩ与θ θθ定义
- Ω ΩΩ:如果存在正常数C CC和自然数N0,使得当N ≥ N 0 N ≥ N_0N≥N0时有f ( N ) ≥ C g ( N ) f(N) ≥ Cg(N)f(N)≥Cg(N),
则记f ( N ) = Ω ( g ( N ) ) f(N) = Ω(g(N))f(N)=Ω(g(N)) - θ θθ:如果f ( N ) = O ( g ( N ) ) f(N) = O(g(N))f(N)=O(g(N))且f ( N ) = Ω ( g ( N ) ) f(N) = Ω(g(N))f(N)=Ω(g(N)),那么称为f ( N ) f(N)f(N)与g ( N ) g(N)g(N)同阶,
则记f ( N ) = θ ( g ( N ) ) f(N) = θ(g(N))f(N)=θ(g(N))
1.3 练习
证明N 3 ≠ O ( N 2 ) N^3 \neq O(N^2)N3=O(N2)(反证法)

证明以下运算规则
- O ( f ) + O ( g ) = O ( m a x ( f , g ) ) O(f)+O(g)=O(max(f, g))O(f)+O(g)=O(max(f,g))

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

O ( f ) O ( g ) = O ( f g ) O(f)O(g)=O(fg)O(f)O(g)=O(fg)

O ( C f ) = O ( f ) O(Cf) = O(f)O(Cf)=O(f)

如果 g ( n ) = O ( f ( n ) ) g(n) = O(f(n))g(n)=O(f(n)) , 则O ( f ( n ) ) + O ( g ( n ) ) = O ( f ( n ) ) O(f(n))+O(g(n))= O(f(n))O(f(n))+O(g(n))=O(f(n))

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

假设某算法在输入规模为n时的计算时间为T ( n ) = 3 × 2 n T(n) = 3 × 2nT(n)=3×2n。在某台计算机上实现并完成该算法的时间为 t tt 秒。现有另一台计算机,其运行速度为第一台的 64 倍
(1)那么在这台新机器上用同一算法在 t tt 秒内能解输入规模多大的问题?
- 解:设第一台计算机执行速度为V VV(次/秒),另一台计算机输入规模为m mm

(2) 若上述算法的计算时间改进为T ( n ) = n 2 T(n) = n^2T(n)=n2,其余条件不变,则在新机器上用t秒时间能解输入规模多大的问题?
- 解:

(3)若上述算法的计算时间进一步改进为T ( n ) = 8 T(n) = 8T(n)=8,其余条件不变,那么在新机器上用t秒时间能解输入规模多大的问题?
- 解:

- 解:设第一台计算机执行速度为V VV(次/秒),另一台计算机输入规模为m mm
硬件厂商XYZ公司宣称他们最新研制的微处理器运行速度与其竞争对手ABC公司同类产品的100倍。对于计算复杂性分别为n nn, n 2 n^2n2,n 3 n^3n3和n ! n!n!的各算法,若用ABC公司的计算机能在1小时内能解输入规模为n的问题,那么用XYZ公司的在1小时内分别能解输入规模为多大的问题?
- 解:

- 解:
证明n ! = o ( n n ) n! = o(n^n)n!=o(nn)

本文笔记来自于上课记录笔记,以及闵老板笔记:https://blog.csdn.net/minfanphd/article/details/121242658