1.渐进记号
这是本章中最核心的部分,在《算法导论》的第25页至29页描述了5个渐进记号,定义如下:
2.习题
练习题
3.1-1 假设 f ( n ) f(n) f(n)与 g ( n ) g(n) g(n)都是渐进非负函数。使用 Θ \Theta Θ记号的基本定义来证明:
m a x ( f ( n ) , g ( n ) ) = Θ ( f ( n ) + g ( n ) ) max(f(n),g(n)) = \Theta (f(n) +g(n)) max(f(n),g(n))=Θ(f(n)+g(n))
解:
不妨设 m a x ( f ( n ) , g ( n ) ) = f ( n ) max(f(n),g(n))=f(n) max(f(n),g(n))=f(n),并且问题等价为:是否存在 c 1 c_1 c1、 c 2 c_2 c2和 n 0 n_0 n0,使得下述不等式成立:
0 ≤ c 1 ( f ( n ) + g ( n ) ) ≤ f ( n ) ≤ c 2 ( f ( n ) + g ( n ) ) ( 1 ) 0 \leq c_1(f(n)+g(n)) \leq f(n) \leq c_2(f(n)+g(n))\quad\quad\quad\quad(1) 0≤c1(f(n)+g(n))≤f(n)≤c2(f(n)+g(n))(1)
已知 f ( n ) f(n) f(n)和 g ( n ) g(n) g(n)均为渐进非负函数,即意味着:
( ∃ N > 0 ( n > N → f ( n ) > 0 ) ) = T (\exists N>0(n>N \rightarrow f(n)>0))= T (∃N>0(n>N→f(n)>0))=T
所以必定存在 n 0 n_0 n0使得(1)式可以变形为:
0 ≤ c 1 ( 1 + g ( n ) f ( n ) ) ≤ 1 ≤ c 2 ( 1 + g ( n ) f ( n ) ) ( 2 ) 0 \leq c_1(1+\cfrac {g(n)} {f(n)}) \leq1 \leq c_2(1+ \frac{g(n)} {f(n)})\quad\quad(2) 0≤c1(1+f(n)g(n))≤1≤c2(1+f(n)g(n))(2)
已知 g ( n ) ≤ f ( n ) g(n)\leq f(n) g(n)≤f(n),那么 g ( n ) f ( n ) ∈ ( 0 , 1 ] \cfrac {g(n)}{f(n)} \in (0, 1] f(n)g(n)∈(0,1],所以当 c 1 ≤ 1 2 、 c 2 ≥ 1 c_1 \leq \frac{1}{2}、c_2\geq 1 c1≤21、c2≥1时使得(2)式成立。
综上所述,存在一个充分大的 n 0 n_0 n0和 c 1 ≤ 1 2 、 c 2 ≥ 1 c_1\leq \frac{1}{2}、c_2 \geq 1 c1≤21、c2≥1使得(1)式成立,证毕。
另外,当 f ( n ) = m i n ( f ( n ) , g ( n ) ) f(n)=min(f(n),g(n)) f(n)=min(f(n),g(n))时,分析(2)式即可得到: m i n ( f ( n ) , g ( n ) ) ≠ Θ ( f ( n ) + g ( n ) ) min(f(n),g(n)) \ne \Theta (f(n) +g(n)) min(f(n),g(n))=Θ(f(n)+g(n))
3.1-2 证明:对任意实常量 a a a和 b b b,其中 b > 0 b>0 b>0,有:
( n + a ) b = Θ ( n b )