三、递归树分析法

1 问题

在这里插入图片描述

2 解决思路

使用递归树猜想一个上界,使用归纳法证明上界也是下界。

2.1 使用递归树(recursion tree)猜想结论(不严谨)

使用递归树两点:1⃣️逐行展开;2⃣️逐行相加;

逐行展开

本质上是分解问题,每个非叶子结点表示分解+合并问题所付出的代价,叶子结点表示解决边界问题所付出的代价。
在这里插入图片描述

逐层求和

这里要注意,除去非叶子结点,每一层的和呈现出等比数列性质,计算整个代价 T ( n ) T(n) T(n)本质上就是分解(合并)问题付出的代价+解决递归边界付出的代价。

Case1:

分解问题的代价:
在这里插入图片描述
在这里插入图片描述
解决递归边界的代价:
Θ ( n l o g b a ) \Theta(n^{log_ba}) Θ(nlogba)
取多项式最高次项,因此 T ( n ) = O ( n l o g b a ) T(n) = O(n^{log_ba}) T(n)=O(nlogba);

Case2:

分解问题的代价:
在这里插入图片描述
解决递归边界的代价:
Θ ( n l o g b a ) \Theta(n^{log_ba}) Θ(nlogba)
取多项式最高次项,因此 T ( n ) = O ( n l o g b a l o g b n ) T(n) = O(n^{log_ba}log_bn) T(n)=O(nlogbalogbn);

Case3:

分解问题的代价:
根据假设容易得到
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面的不等号是渐进成立的,所以为了保证对每一个 n n n都成立,对于前有限的 n n n,要加上每一个都要加上一个足够大的常数,因此有下面的式子。
在这里插入图片描述
解决递归边界的代价:
Θ ( n l o g b a ) \Theta(n^{log_ba}) Θ(nlogba)
取多项式最高次项,因此 T ( n ) = O ( f ( n ) ) T(n) = O(f(n)) T(n)=O(f(n));

2.2 使用归纳法证明结论(严谨)

上面的递归树分析只是大概得到了一个上界,下面使用数学归纳发证明上届也是下界。

Case1:

在这里插入图片描述

Case2:

在这里插入图片描述

Case3:

在这里插入图片描述

3 结论

  1. 先使用非严谨的形式分析、猜想,然后用数学归纳法证明,这个思路贯穿整个导论一书;
  2. 主定理由递归树推出,很多情形不符合主定理的假设,但是递归树+归纳法仍然可以解决,所以整个过程最有价值的是这套分析、证明方法,而非主定理。
  3. 上面在使用归纳法证明时,渐进符号的威力惊艳了我!
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值