算法导论(第三版)第二章2.3-3 使用数学归纳法证明...

题干:

使用数学归纳法证明: 当n刚好是2的幂时,以下递归式的解是T(n)=nlgn.

递归式的内容:

T(n) = 2 (若n = 2)

T(n) = 2T(n/2)+n (若n = 2^k, k > 1)

 

计算步骤:

1. 先计算证明 在递归式的开始部分 解能成立;

2. 再证明递归式的第二部分内容:

3. 先将原递归式写为带有不同变量的部分 比如这次的例题里 T(n) 和 T(n/2) 就是变量不同的部分 将n替换为新变量 即分别替换为T(2^k ) 和 T(2^(k+1)) 得到新递归式 T(2^(k+1)) = 2*T(2^k)+2^(k+1)

4. 假设题目中给出的解正确 将题目中的解根据第一种变量带入. 比如题目中的解是 T(n)=nlgn , 就将T(2^k) = 2^k * k 带入步骤3中的新递归式

5. 计算带入假设解了的新递归式 直到该递归式的样式变成"所有的变量均有新变量k+1组成"的样子 则证明解成立

 

比如 步骤3中的新变量是2^k 和 2^(k+1) 已经将变量为T(2^k )的假设解带入了 就需要推算出所有变量的样式是2^(k+1)

解:

(1) 当n = 2 时, 假设解成立, 即T(2) = 2*lg2成立, 计算得出T(2) = 2, 所以当n=2时,该解成立

(2) 当n = 2^k时, 假设解成立, 即T(2^k) = 2^k*lg(2^k)成立, 若能推算出T(2^(k+1)) = 2^(k+1)*lg(2^(K+1))亦成立(即将原式子中的k替换为k+1),则解成立.

计算过程如下:

在原递归式中 将n替代为2^(k+1) 可得到递归式为:

T(2^(k+1)) = 2*T(2^k)+2^(k+1)

根据假设成立的解, T(2^k) = 2^k*lg(2^k) 将该解带入原递归式 得到:

T(2^(k+1)) = 2*     2^k*lg(2^k)     + 2^(k+1)

2*2的某次方 次方直接+1

T(2^(k+1)) = k * 2^(k+1) + 2^(k+1)

再将等式右边2^(k+1)提取公因式

T(2^(k+1)) = (k+1) * 2^(k+1)

所以解成立

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值