这里有三种方法可以从递归方程得到算法的时间复杂度:
代入法
递归树
主方法
代入法
先知道结果,然后想办法证明结果是对的,这就是代入法。
但是有两点需要注意:
1.证明的时候,要严格按照渐近符号的定义证明;
2.递归式左边后面的n项如果不是n的幂方项式,想办法把他替换成幂方形式会更简单
关于第一点,我们遇到待证明的项多出来一部分的时候,可以从假设里减,使得证明成立,如下:(这确实给了我很大的启发)
关于代入法,有一道这个知识点最难的题,只要你看懂了,就掌握了。
有取上整或者取下整的时候,需要放缩,常常会出现n-1,n+1,所以需要想办法变成n,并且时刻记住,最后的结果里有个系数c,可以让我控制,使得结果偏小(或偏大,取决于你证明的渐近记号是哪一个)。
递归树
递归树法大概能分成两种情况。
第一种:形如:
向下取整,树是对称的,这是这类的特点。
第二种:形如:
树不是对称的,这是这类型的特点。
在证明上界的时候,我们采用(在本例中)log3/2(n)的树高;证明下界的时候,我们采用log3(n)的树高。
主方法
这是一个公式性质的东西,它来自于一个定理——主定理。
要注意的有两点:
1.n^Σ比lgn高阶
2.主方法处理的递归式的形式为:
但不意味着长这样的它都能处理,它的情况1,2,3之间都有间隙,而情况三更是有不满足的情况。
1-2间隙:
2-3间隙:
不满足3正则条件的:
有了主方法,天下在我爪。
标签:期末考,递归,间隙,树高,复杂度,代入,证明,方法 来源: https://blog.csdn.net/weixin_43416013/article/details/112623614
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。