以下复发的时间复杂度?

时间:2012-04-04 16:11:18

标签: algorithm time complexity-theory

找出重复T(n) = T(⌊n⌋) + T(⌈n⌉) + 1的时间复杂度(Big Oh Bound)。

时间复杂度如何变为O(n) ??

2 个答案:

答案 0 :(得分:4)

你可能会T(n)=T(⌊n/2⌋)+ T(⌈n/2⌉) + 1

让我们先计算T(n)的几个值。

T(1) = 1
T(2) = 3
T(3) = 5
T(4) = 7

我们可以猜到T(n) = 2 * n - 1

让我们通过mathematical induction

证明

T(1) = 1
T(2) = 3
T(3) = 5
T(4) = 7

归纳步骤

T(2*n) = T(⌊2*n/2⌋)+ T(⌈2*n/2⌉) + 1  
   = T(⌊n⌋)+ T(⌈n⌉) + 1 
   = (2*n - 1) + (2*n - 1) + 1 
   = 4*n - 1
   = 2 * (2*n) - 1

T(2*n+1) = T(⌊(2*n+1)/2⌋)+ T(⌈(2*n+1)/2⌉) + 1
   = T(n)+ T(n+1) + 1
   = (2*n - 1) + (2*(n+1) - 1) + 1 = 
   = 4*n + 1 =
   = (2*n+1)*2 - 1

由于已经证明了基础和归纳步骤,现在已经通过数学归纳证明T(n)适用于所有自然2 * n - 1。

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

答案 1 :(得分:0)

你目前所拥有的是没有意义的。由于n通常被视为自然数,因此n=⌊n⌋=⌈n⌉。然后重复出现:将大小为n的问题分解为两个大小为n的问题,并花费时间1来做这件事。您刚创建的两个新问题将依次拆分,依此类推 - 您所做的就是为自己创造更多的工作。