浅谈时间复杂度
前置:
\[log^2n=log_2n \times log_2n
\]
\[log n^2=log_2n+log_2n
\]
\[f_1(n)+f_2(n)=O(max(f_1(n),f_2(n)))
\]
\[f_1(n) \times f_2(n)=O(f_1(n) \times f_2(n))
\]
对于复杂度问题:
一般都是求 \(\Theta , O \Rightarrow upper bound , \Omega \Rightarrow lower bound\)
\[\frac{1}{2}n^2 \in \begin{cases} \Omega(n^2) \in \Omega(n) \notin \Omega(n^3)\\ O(n^2) \in O(n^3) \notin O(n) \end{cases}
\]
\[\Omega(N) \Leftarrow \Theta(N) \Rightarrow O(N)
\]
\[\frac{1}{2}n^2 \in \Theta(n) \notin O(n^2) \notin O(n^3)
\]
其中的 \(\in\) 常用 \(=\) 表示。
化简:
(1)
$T(n)=\frac{4}{5} n^3 log n + \frac{1}{100}n^{3.2} $
\[O(n)=max(O(n^{3.2}),O(n^3logn))=O(n^{3.2})
\]
(2)
$T(n)=10^8 $
\[T(n)=O(1)
\]
(3)
\(T(n)=2^{n+5}+n^5\)
\[T(n)=max(O(2^{n+5}),O(n^5))=O(2
^n)\]
(4)
\(T(n)=2T(n-1)+1,T(1)=1\)
\[T(1)=1
\]
\[T(2)=2T(1)+1=3
\]
\[T(3)=2T(2)+1=7
\]
\[T(4)=2T(3)+1=15
\]
\[......
\]
\[T(n)=2^n-1
\]
\[\therefore T(n)=O(2^n)
\]
证明:
(5)
试证明对任意实数\(a>b>1,b^n = O (a^n)\),但 \(a^n \neq O(b^n)\)
\[\exists
n_0,C>0 s.t.
\forall n>n_0, f(n) \leq Cg(n)\]
那么有:
\[f(n) = O(g(n))
\]
\[\forall n_0,C \exists n>n_0
\]
则有:
\[a^n \leq Cb^n
\]
\[(\frac {a}{b})^n \leq C
\]
\[n \leq log_{\frac {a}{b}} C
\]
\[n > log_{\frac{a}{b}} C
\]
\[n>n_0
\]
\[\because (\frac{a}{b})^n > (\frac{a}{b})^{log_{\frac{a}{b}}C} > C
\]
\[\therefore a^n > Cb^n
\]
矛盾,故有:
\[a^n \neq O(b^n)
\]
证明完毕。
(6)
试证明 \(log(n!) = \Theta (nlogn)\)