递归关系:T(n)= 2T(n / 2)+ log(n)

时间:2013-03-07 00:08:14

标签: algorithm recurrence

我有一个递归关系,如下所示:

  

T(n)= 2T(n / 2)+ log 2 n

我使用递归树方法来解决这个问题。最后,我提出了以下等式:

T(n)=(2log 2 n)(n-1) - (1 * 2 + 2 * 2 2 + ... + k * 2 k )其中k = log 2 n。

我试图找到这个等式的θ符号。但我找不到总和的封闭公式(1 * 2 + 2 * 2 2 + ... + k * 2 k )。如何为T(n)找到一个大的θ表示法?

4 个答案:

答案 0 :(得分:1)

如果你知道一些微积分,你应该能够轻松解决这个问题。

1 + x + x ^ 2 + ... + x ^(n + 1)=(x ^(n + 2) - 1)/(x - 1)

乘以x, x + x ^ 2 + x ^ 3 + ... + x ^(n + 2)=(x ^(n + 3) - x)/(x - 1)

区分LHS将为您提供x = 2的系列。区分RHS将为您提供封闭的表格。

答案 1 :(得分:1)

这些重现可以用masters theorem来解决。在您的情况下a = 2b = 2,因此c = logb(a) = 1

您的f(n) = log n因为n^c的增长速度超过f,因此它在解决方案中占主导地位,而您在第一种情况下就属于这种情况。因此复杂性为O(n)

答案 2 :(得分:0)

您应该使用Master Theorem来计算复杂性,这将更容易。

答案 3 :(得分:0)

根据我的计算,我认为你犯了一些错误:

  

T(N)=(K-1)*的log(n /(2 ^(K-1)))+ 2 ^ K * T(N / 2 ^ K)。

把k = log(n)

如果您愿意,我可以发布我的解决方案的图像。 :)