t(n)= 2t(n-2)-15的解是真的吗?

时间:2010-12-09 00:59:50

标签: algorithm analysis

我不是要求我的作业解决方案,我为这个等式做了一个解决方案,只是想知道它是否真的

T(n) = 2 * T(n-2) - 15
T(1) = T(2) = 40

SOLUTION

Level 1
     T(n) = 2 ( T(n-4) -15 ) -15
Level 2
          = 2 ( 2 ( T(n-6) -15 ) -15 ) -15
Level 3
          = 2 ( 2 ( 2 ( T(n-8) -15 ) -15 ) -15 ) -15

从这些替换中我得出结论

 T(n) = 2^i [ T(n -2(i+1) ] - (2^(i+1) -1 ) * 15

所以我达成的解决方案是

 T(n) = 25 * 2^[ (n-1)/2 ] -15
 AND I USED T(1) = 40

但我正在阅读的书:“算法分析:主动学习方法”使用T(2)= 40并达到另一种解决方案

我的解决方案是否正确?

注意我在这里使用直接替换而不是像Master或替换方法那样的任何其他方法

由于

2 个答案:

答案 0 :(得分:1)

首先,你的等级1错了,它应该是这样的:
等级1
     T(n) = 2 * ( 2 * T(n-4) - 15 ) - 15

我会这样解决:

由于T(1)= T(2) - > T(3)= T(4) - > ... - > T(2k + 1)= T(2k + 2),其中k是正整数

T(3)= 2 * T(1) - 15
T(4)= 2 * T(2) - 15 = 2 * T(1)-1 * 15
T(5)= 2 * T(3) - 15 = 4 * T(1)-3 * 15
T(6)= 2 * T(4)-15 = 4 * T(1)-3 * 15
T(7)= 2 * T(5) - 15 = 8 * T(1) - 7 * 15
T(8)= 2 * T(6)-15 = 8 * T(1)-7 * 15
...
- > T(2k + 1)=(2 ^ k * T(1)) - ((2 ^(k - 1) - 1)* 15)
- > T(2k + 2)= T(2k + 1)

这不是一个正式的证明。

答案 1 :(得分:0)

在推导公式时,一种好的检查方法是用已知的案例替换并检查它。

在这种情况下,替换为1将导致T(1) = 25*2^((1-1)/2) - 15 = 10,但T(1)应为40。

此外,在推导中,1级推导应为2( 2T(n-4) - 15) - 15而不是2( T(n-4) - 15) - 15