【发布时间】:2020-02-23 21:04:11
【问题描述】:
我正在尝试解决以下重复:
$T(n) = 3T(n^{\frac{2}{3}}) + \log n$
但我不知道该怎么做,因为主定理不适用。我尝试如下绘制递归树:
但不确定从那里去哪里,例如试图找出树的高度或最后一层中的节点数。任何有关如何找到复发的整体大 theta 的指导将不胜感激。
【问题讨论】:
标签: algorithm recursion time-complexity
我正在尝试解决以下重复:
$T(n) = 3T(n^{\frac{2}{3}}) + \log n$
但我不知道该怎么做,因为主定理不适用。我尝试如下绘制递归树:
但不确定从那里去哪里,例如试图找出树的高度或最后一层中的节点数。任何有关如何找到复发的整体大 theta 的指导将不胜感激。
【问题讨论】:
标签: algorithm recursion time-complexity
当您扩展公式时,我们将有:
T(n) = 3 log(n^{2/3}) + 3^2 log(n^((2/3)^2)) + ... + 3^k log(n^((2/3)^k)) + log(n)
在上面的等式中,k 是树的高度。如果我们假设n = 2 ^ ((3/2)^k),最后我们将在n^((2/3)^k) 中拥有2。因此,k = log_{3/2)(log(n))。另外,我们知道log(n^a) = a log(n):
T(n) = 2 log(n) + 2^2 log(n) + ... + 2^k log(n) + log(n) =
log(n) (1 + 2 + 2^2 + ... + 2^k) =
(2^(k+1) - 1) log(n)
因此,2^k = O(log^2(n)),T(n) = O(log^2(n) * log(n)) = \O(log^3(n))。
【讨论】:
k = log_{3/2}(log(n))中外对数的底
log_2,此处也一样。