编程语言
首页 > 编程语言> > 算法基础期末考点总结五——递归方程求时间复杂度

算法基础期末考点总结五——递归方程求时间复杂度

作者:互联网

这里有三种方法可以从递归方程得到算法的时间复杂度:
代入法
递归树
主方法

代入法

先知道结果,然后想办法证明结果是对的,这就是代入法。
但是有两点需要注意:
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