需要一点帮助!这是我使用反向替换得到的结果:
T(n) = 2T(n/2) + sqrt(n), where T(1) = 1, and n = 2^k
T(n) = 2[2T(n/4) + sqrt(n/2)] + sqrt(n) = 2^2T(n/4) + 2sqrt(n/2) + sqrt(n)
T(n) = 2^2[2T(n/8) + sqrt(n/4)] + 2sqrt(n/2) + sqrt(n)
= 2^3T(n/8) + 2^2sqrt(n/4) + 2sqrt(n/2) + sqrt(n)
通常情况下
T(n) = 2^kT(1) + 2^(k-1) x sqrt(2^1) + 2^(k-2) x sqrt(2^2) + ... + 2^1 x sqrt(2^(k-1)) + sqrt(2^k)
到目前为止,这样做是正确的吗?如果是的话,我无法想出如何将其简化并缩减为通用公式。
我猜应该像这样?合并项。
= 1 + 2^(k-(1/2)) + 2^(k-(2/2)) + 2^(k-(3/2)) + ... + 2^((k-1)/2) + 2^(k/2)
我卡在这里了。也许有一种方法可以分解出2的k次方吗? 任何帮助都将不胜感激,谢谢!
n
替换为2^k
,您将首先得到2^(k-1)
,然后是2^(k-2)
,最终是2^0
。您需要进行k
次调用,其中k
等于log2(n)
... 因此T(n)
的复杂度为O(log(n))
。 - Déjà vu