算法递归关系

时间:2017-03-18 16:13:14

标签: recursion time-complexity big-o complexity-theory

如何解决以下重现关系:

d = {'a':2,'b':3,'c':4}

到目前为止我尝试的是:

tList = [('a',2),('b',3),('c',4)]

所以

d.items(), d.keys(), d.values(), d.iteritems())

因此出现了一种模式......一般术语是:

T(n) = 2T(n-2)+O(1)

但我不知道如何从那里继续。感谢任何建议。

1 个答案:

答案 0 :(得分:0)

假设您对k的概括为真 [1]

T(n) <= 2^k*T(n-2k) + kc

对于k=n/2,你得到:

T(n) <= 2^n/2 * T(0) + n/2 * c = 2^(n/2) + n/2*c

哪个位于O(sqrt(2^n))

可以通过归纳进行形式证明,其归纳假设为:

T(n) <= 2^(n/2) + c*n

步骤:

T(n) = 2T(n-2) + c  = (induction hypothesis)
T(n) = 2* 2^((n-2)/2)  + (n-2)*c + c
T(n) = 2^ (n/2 - 2/2 + 1) + (n-1)*c
And indeed: 
T(n) = 2^(n/2) + (n-1)*c <= 2^(n/2) + c*n

(1)不是,它忽略了常量在循环中相乘的事实。