找出重复T(n) = T(⌊n⌋) + T(⌈n⌉) + 1
的时间复杂度(Big Oh Bound)。
时间复杂度如何变为O(n)
??
答案 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
。
基
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
来做这件事。您刚创建的两个新问题将依次拆分,依此类推 - 您所做的就是为自己创造更多的工作。