您好,我试图通过伸缩来解决以下重现关系,但我仍然坚持到最后一步。
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来自哪里?
答案 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)。