算法导论-第4章

来源:互联网 发布:淘宝功率测试 编辑:程序博客网 时间:2024/05/10 00:33

    这一章,就一个主题,什么是递归式?如何求解递归式?

递归式,就是一个函数,自己调用自己,但是有一个最基本的情况,这种情况下,它就会自动返回跳出递归。

用什么方法?

3种方法:

1.代换法

2.递归树方法

3.主方法

关于代换法:

    一个字,猜,也就是你会蒙?

怎么蒙?

    需要你的经验。

也就是说,有经验的人,一看就知道多少,然后,用归纳法证明,新手,不推荐。

关于递归树:

   最笨的办法,就是你把那个递归式,一项一项展开,可能吗?对,这里的展开就是画这棵树,使他不能有递归表达式,然后把整个图中的代价加起来就是答案

怎么使用?

你画图算,然后,你用代换法,说是你猜出来的,然后证明,求解。

关于主方法:

    针对形如T(n) = aT(n/b) + f(n)的递归式:

T(n) = aT(n/b) + f(n)描述了将规模为n的问题划分为a个子问题的算法的运行时间,每个子问题的规模为n/b。

主方法依赖于主定理:

zhudingli 图片可以不清晰,可以看书。

主定理的三种情况,经过分析,可以发现都是把f(n)与1 比较。一句话,谁大就是谁。

第一种情况是1 更大,第二种情况是1 与f(n)相等,第三种情况是f(n)更大。

但是,这三种情况并未完全覆盖所有可能的f(n):

第一种情况是f(n)多项式的小于1 ,而第三种情况是f(n)多项式的大于1 ,即两者相差的是2 。如果两者相差的不是2 ,则无法用主定理来确定界。

比如算法导论P44最下面的3 就不能用主定理来判断。

至于主定理的证明,这个真不关你任何事情,因为估计你也不会看那些东西,所以我们就不用去花实时间看了。