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

时间:2012-06-04 15:59:09

标签: recurrence

您好,我试图通过伸缩来解决以下重现关系,但我仍然坚持到最后一步。

T(N) = T(N/2) + N              T(1)=0
T(N/2) = T(N/4) + N/2
T(N/4) = T(N/8) + N/4
...
T(2) = T(1) + 2

T(N)= T(1) + N + N/2 + N/4

我认为答案是nlogn,但我不知道如何将上述解释为nlogn。我可以看到我正在做logn步骤,但n来自哪里?

2 个答案:

答案 0 :(得分:5)

你已经完全正确地做了一切,但是找不到总和。您得到:n + n/2 + n/4 + ...,等于n * (1 + 1/2 + 1/4 + ...)

您的总和为geometric series,等于2。因此,您的总和为2n。因此复杂性为O(n)

P.S。这不称为伸缩式。数学中的伸缩是指随后的术语相互抵消。

答案 1 :(得分:2)

答案不是nlogn而是n

T(1)= 0

T(N)= T(N / 2)+ N

T(N / 2)= T(N / 4)+ N / 2

T(N / 4)= T(N / 8)+ N / 4 ... T(2)= T(1)+ 2

在望远镜扩展中有完整的log(N)语句

现在通过伸缩式取消,

我们有T(N)= T(1)+ N + N / 2 + N / 4 + N / 8 + ..... + 2

T(1)= 0

T(N)= N + N / 2 + ..... + 2

这是一个带有log(n)项的几何系列,每个项都减半。

T(N)= N [1 - (1/2)^ log(N)] /(1/2)

T(N)= 2N [1-1 / N]

T(N)= 2N-2

因此答案是O(N)。