求解递归时间复杂度
迭代法(递归树)
每一次对过程的重复称为一次迭代,而每一次迭代得到的结果会作为下一次迭代的初始值。重复执行一系列运算步骤,从前面的量依次求出后面的量的过程。
例1
problem
\[T(n)=2 \times T(\frac{n}{4})+ \sqrt n,T(1)=1
\]
solution
\[T(n)=2 \times T(\frac{n}{4})+ \sqrt n
\]
\[T(n)=2 \times (2 \times T(\frac{n}{16})+\sqrt \frac{n}{4})+ \sqrt n
\]
\[T(n)=4 \times T(\frac{n}{16})+2 \times \frac{\sqrt n}{2}+ \sqrt n
\]
\[T(n)=4 \times T(\frac{n}{16})+2 \sqrt n
\]
\[\ldots
\]
\[T(n)=2^k \times T(\frac{n}{2^{2k}})+k \sqrt n
\]
令 \(2^{2k}=n\),即 \(2^k=\sqrt n\),\(k=\log_2^{\sqrt n}=\log_2^{n^{\frac{1}{2}}}=\frac{1}{2} \log_2^n\)
\[T(n)=\sqrt n \times T(1)+\frac{1}{2} \log_2^{n} \sqrt n
\]
\[T(n)=\sqrt n +\frac{1}{2} \sqrt n \log_2^n
\]
所以时间复杂度为 \(O(\sqrt n \log n)\)
例2
problem
\[T(n)=4 \times T(\frac{n}{2})+n^2 \log^2 n,T(1)=1
\]
solution
\[T(n)=4 \times(4 \times T(\frac{n}{4})+(\frac{n}{2})^2 \log^2 (\frac{n}{2}))+n^2 \log^2 n
\]
\[T(n)=16 \times T(\frac{n}{4})+n^2 \log^2 (\frac{n}{2})+n^2 \log^2 n
\]
\[T(n)=16 \times T(\frac{n}{4})+n^2 \times (\log^2 (\frac{n}{2})+\log^2 n)
\]
\[T(n)=16 \times T(\frac{n}{4})+n^2 \times (\log^2 n+ \log^2 n- \log^2 2)
\]
\[\ldots
\]
\[T(n)=2^{2k} \times T(\frac{n}{2^k})+n^2 \times (k \log^2 n-(1+4+...+ \log^2 2^{k-1}))
\]
\[T(n)=2^{2k} \times T(\frac{n}{2^k})+n^2 \times (k \log^2 n- \sum_{i=1}^{k-1}i^2)
\]
\[T(n)=2^{2k} \times T(\frac{n}{2^k})+n^2 \times (k \log^2 n- \frac{(k-1)(k-2)(2 \times (k-1)-1)}{6})
\]
\[T(n)=2^{2k} \times T(\frac{n}{2^k})+n^2 \times (k \log^2 n- \frac{2k^3-9k^2+13k-6}{6})
\]
令 \(2^k=n\) ,即 \(2^{2k}=n^2\) , \(k=logn\)
\[T(n)=n^2 \times T(1) +n^2 log^3 n -n^2 \times \frac{2 \log^3 n-9 \log^2 n +13 log n-6}{6}
\]
所以时间复杂度为 \(O(n^2 log^3 n)\)
例3
problem
\[T(n)=3 \times T(\frac{n}{4})+n \log n
\]
solution
\[T(n)=3 \times (3 \times T(\frac{n}{16})+\frac{n}{4} \log (\frac{n}{4}))+n \log n
\]
\[T(n)=9 \times T(\frac{n}{16})+\frac{3n}{4} \log (\frac{n}{4})+n \log n
\]
\[T(n)=27 \times T(\frac{n}{64})+\frac{9n}{16} \log (\frac{n}{16})+\frac{3n}{4} \log (\frac{n}{4}) +n \log n
\]
\[T(n)=27 \times T(\frac{n}{64})+n \times (\log n \times (\frac{9}{16}+\frac{3}{4}+1)-(\frac{9}{16} \log {2^4}+\frac{3}{4} \log {2^2}))
\]
\[T(n)=27 \times T(\frac{n}{64})+n \times (\log n \times (\frac{9}{16}+\frac{3}{4}+1)-(\frac{9}{4} \log 2+ \frac{3}{2} \log 2))
\]
\[T(n)=27 \times T(\frac{n}{64})+n \times (\log n \times (\frac{9}{16}+\frac{3}{4}+1)-(\frac{9}{4}+ \frac{3}{2}))
\]
\[\ldots
\]
\[T(n)=3^k \times T(\frac{n}{2^{2k}})+n \times (\log n \times (-4 \times ((\frac{3}{4})^k-1)))-3 \times ((\frac{3}{2})^{k-1}-1))
\]
令 \(2^{2k}=n\),即 \(k=\log_4 n\)
\[T(n)=3^{\log_4 n}+n \times (\log n \times (-4 \times (\frac{3}{4})^{\log_4 n}+4)-3 \times (\frac{3}{2})^{\log_4 n-1}+3)
\]
\[T(n)=n^{\log_4 3}+n\log n \times (-4 \times (\frac{3}{4})^{\log_4 n}+4)-3n \times (\frac{3}{2})^{\log_4 n-1}+3n
\]
\[T(n)=n^{\log_4 3}+n\log n \times (-4 \times n^{\log_4 \frac{3}{4}}+4)-2n \times (\frac{3}{2})^{\log_4 n}+3n
\]
\[T(n)=n^{\log_4 3}+n\log n \times (-4 \times n^{\log_4 \frac{3}{4}}+4)-2n \times n^{\log_4 \frac{3}{2}}+3n
\]
\[T(n)=n^{\log_4 3}+4n \log n-4n \log n \times n^{\log_4 \frac{3}{4}}-2n \times n^{\log_4 \frac{3}{2}}+3n
\]
\[T(n)=n^{\log_4 3}+4n \log n-4n \log n \times n^{\log_4 3-\log_4 4} -2n \times n^{\log_4 3-\log_4 2}+3n
\]
\[T(n)=n^{\log_4 3}+4n \log n-4n^{\log_4 3} \log n-\frac{2n \times n^{\log_4 3}}{\sqrt n}+3n
\]
\[T(n)=n^{\log_4 3}+4n \log n-4n^{\log_4 3} \log n-2\sqrt n \times n^{\log_4 3}+3n
\]
所以时间复杂度为 \(O(n \log n)\)

浙公网安备 33010602011771号