【发布时间】:2013-04-28 04:20:19
【问题描述】:
需要一点帮助!到目前为止,这是我使用向后替换的:
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 的方法? 任何帮助都会很棒,谢谢!
【问题讨论】:
-
如果您正在寻找大 O 解决方案,Master Theorem 可以做到这一点。
-
将
n替换为2^k,在每次迭代中,您首先得到2^(k-1),然后是2^(k-2),最后是2^0。你有k电话,k是log2(n)...因此T(n)的复杂性是O(log(n))。
标签: algorithm discrete-mathematics