求解递归时间复杂度

迭代法(递归树)

每一次对过程的重复称为一次迭代,而每一次迭代得到的结果会作为下一次迭代的初始值。重复执行一系列运算步骤,从前面的量依次求出后面的量的过程。

例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)\)

posted @ 2023-09-14 09:14  reclusive2007  阅读(42)  评论(0)    收藏  举报