递归W(n)= 2W(floor(n / 2))+ 3

时间:2011-11-29 19:33:50

标签: performance algorithm recursion geometry

我有这种情况:

W(n)= 2W(floor(n/2)) + 3
W(2)=2

我的尝试如下:

树是这样的:

W(n) = 2W(floor(n/2)) + 3
W(n/2) = 2W(floor(n/4)) + 3
W(n/4) = 2W(floor(n/8)) + 3 
...
  • 树的高度:我假设它的lgn因为树在每个扩展过程中都有2个分支,但不确定:S
  • 最后一级的费用:2 ^ lgn * W(2)= 2n
  • 所有等级的成本,直到等级h-1:3 * sigma从0到lgn-1(2 ^ i),这是几何系列= 3(n-1)

因此,T(n)= 5n - 3属于Theta(n)

我的问题是:是吗?

2 个答案:

答案 0 :(得分:1)

好吧,如果您计算W(4),则会找到W(4) = 2*W(2) + 3 = 2*2 + 3 = 7,但会5*4 - 3 = 17,因此T(n)的结果不正确。虽然它很接近,但你的推理(或者可能在某个其他地方)只是一个小小的滑动。

修改:具体来说,如果给出了W(1),您的计算就会有效,但问题中的W(2)。要么是后者是一个错字,要么是一个身高的人。 (当然,Saeed Amiri说的话。)

答案 1 :(得分:1)

我认为它不是5n-3,除了n是2 t ,但如果你看Master Theorem,你的θ是正确的,没有必要计算它(但它对初创公司有好处):

假设你有:

T(n)= aT(n / b)+ f(n),其中a> = 1,b> 1然后:

  1. 如果f(n)= n log b a-eps 对于任何eps> 0然后T(n)= n log b a 就像你的情况一样,其中a = b = 2,f(n)= O(1)。
  2. f(n)= Theta(n log b a * log k n)然后T(n)= Theta(n < sup> log b a * log k + 1 n)。
  3. 否则是Theta(f(n))。 (在CLRS或wiki中查看本例中的约束细节,......)
  4. 详细信息请参阅wiki。