我是一名复杂度分析新手。
我正在尝试使用下面给出的递归公式来计算递归算法的时间复杂度 -
T(n) = n + 4T(n/2)
我知道有三种方法可以解决这个问题,但我尝试通过计算每个层级的工作量之和来解决它。
当我绘制递归树时,结构如下:
n | n work
/ \
4T(n/2) 4T(n/2) | 2n work
/ \ / \
4T(n/2) 4T(n/2) 4T(n/2) 4T(n/2) | 4n work
. . . .
. . . .
Theta(1) Theta(1) Theta(1).......Theta(1) | ???
我在计算总和(n + 2n + 4n + 8n ...)时遇到了困难,因为:
- 我无法弄清最后一项。
- 即使我能找出最后一项,我也意识到这是一个公比r>1的等比数列,所以我无法真正计算总和。