如何找到 T(n) = T(3n/4) + T(n/3) + n^2 的复杂度

问题描述

我被要求使用递归树找到给定函数的渐近复杂度 但我正在努力在每个级别找到正确的复杂性

解决方法

让我们画出递归树的前两层:

                +------------------+
                | Input size n     |
                | Work done: n^2   |
                +------------------+
                  /               \
   +--------------------+     +--------------------+
   | Input size: 3n/4   |     | Input size: n/3    |
   | Work done: 9n^2/16 |     | Work done: n^2/9   |
   +--------------------+     +--------------------+

完成后,让我们总结一下每一层所做的工作。顶层做 n2 工作。下一层是

(9/16)n2 + (1/9)n2 = (43/48)n2

总工作量。请注意,第二个级别完成的工作是其正上方级别完成的工作的 (43/48)ths。如果将递归树的层次再扩展几层,您会发现下一层执行 (43/48)2n2 工作,下一层做 (43/48)3n2 工作,更一般地说,树中第 l 级完成的工作是 (43/48)ln2。 (说服自己——不要只相信我的话!)

从那里,您可以通过对树的所有级别的每个级别完成的工作求和来计算递归树完成的工作总量。作为提示,您正在查看从一项衰减到另一项的几何序列的总和 - 这是否让您想起了主定理的任何情况?