我不知道如何继续这种复发因为我没有看到任何模式,任何帮助??
T(n) = 2n + T(n/2)
= 3n + T(n/4)
= 7n/2 + T(n/8)
= 15n/4 + T(n/16)
and so on...
答案 0 :(得分:0)
据我所知,这只是简单的重复。
T(n) = 2n + T(n/2)
你的记谱法可以让别人有所不同。对我来说应该是:
T(n) = 2n + T(n/2) ....(1)
T(n/2) = 2(n/2) + T(n/2/2) = n + T(n/4)
T(n) = 2n + n + T(n/4) = 3n + T(n/4) ....(2)
T(n/4) = 2(n/4) + T(n/4/2) = n/2 + T(n/8)
T(n) = 2n + n + n/2 + T(n/8) = 7n/2 + T(n/8) ....(3)
T(n/8) = 2(n/8) + T(n/8/2) = n/4 + T(n/16)
T(n) = 2n + n + n/2 + n/4 + T(n/16) = 15n/4 + T(n/16) ....(4)
T(n/16) = 2(n/16) + T(n/16/2) = n/8 + T(n/32)
T(n) = 15n/4 + n/8 + T(n/32) = 31n/4 + T(n/32) ....(5)
and so on...
答案 1 :(得分:0)
这是一种常见的复发关系 - 如果你是CS学生,你很快就会知道结果。
如果您想手动查找结果,请从重复出现几何总和:
T(n) = 2n + n + n/2 + ... + n/2^(k+1) + T(0)
= 2n(1 + 1/2+ ... + 1/2^(k+2)) + T(0)
k = INT(log2(n))
您可以看到一般术语1/2
出现的几何总和
1 + 1/2 + ... + 1/2^(k+2) = (1 - 1/2^(k+3)) / (1 - 1/2)
观察2^(k+2) = 8 * 2^(log2(n)) = 8n
并简化
T(n) = 4n + T(0) - 1/2 = Theta(4n)
答案 2 :(得分:0)
除了Alexandre Dupriez所展示的直到T(0)方式的扩展系列之外,您还可以应用主定理来解决它
对于递推方程
T(n) = 2n + T(n/2)
主定理:
对于表格的重复,
T(n) = a T(n/b) + f(n)
where a >= 1 and b > 1
如果f(n)是O(n c )那么
我们有a = 1,b = 2,c = 1且c> 1。 log b a(case 3)[as c = 1 and log 1(any base)= 0]
因此,T(n)= O(n 1 )
T(n)= O(n)