我有一个递归关系,如下所示:
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)找到一个大的θ表示法?
答案 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 = 2
,b = 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)
如果您愿意,我可以发布我的解决方案的图像。 :)