概述
主定理:
设a>=1和b>1位常数,设f(n)为一个函数,T(n)由递归式 T(n)=aT(n/b)+f(n) 对非负整数定义,其中n/b指n/b向下或者向上取整。
那么T(n)可能有如下的渐进界:
若对于某常数 ε>0,有f(n)=O(n^logb(a-ε)) 则T(n)=Θ(n^logba);
若f(n)=Θ(nlogba),则T(n)=Θ((nlogba)*lgn);
若对于某常数 ε>0,有f(n)=Ω(n^logb(a+ε)) ,对常数c<1与所有足够大的n,有af(n/b)<=cf(n),则T(n)=Θ(f(n)).
递归树中每个节点都代表递归函数调用集合中一个子问题的代价。每一层的代价之和相加之后是总代价。递归树最适合用来产生猜测,然后用代换法加以验证。
子问题的大小将会随着离树根越来越远而变得越来越小,最终到达一个边界条件。
用代换法(用所猜测的值代替函数的解)解递归式需要两个步骤:
猜测解的形式
用数学归纳法找出使解真正有效的常数
代换法能够用来确定一个递归式的上界或下界。
猜测法:
试探法,找类似解
先证明递归的较大范围的上下界,然后缩小不确定性
注意:
有的时候我们能够猜出递归解的渐进界,但是却会在归纳证明的时候出现一点问题,通常问题出在归纳假设不够强,无法确定其准确的渐进界。遇到这种情况的解法是:去掉一个低阶项来修改所猜测的界,以顺利进行。
避免没有证明归纳假设的正确性而直接的证明最后的结果
解答的过程中应该善于用改变变量的方式解熟悉的递归式,简化运算。
最后
以上就是曾经刺猬为你收集整理的递归式(第四章)的全部内容,希望文章能够帮你解决递归式(第四章)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复