刚开始看这一章自己还是很难定下心来看的,这章感觉关于数学的推导和证明比较多,自己数学这方面又不是很感兴趣,但是还是慢慢的啃完了这章,针对解递归的是三种方法,自己觉得目前还是主方法比较有用吧,也比较 好用。对代换法和递归树法,感觉有点抽象,还需要以后更多的经验再来看看吧。
代换法:首先我们要猜测一个界的存在,然后用的是数学归纳法去证明该猜测的正确性。
特点:代换法当归纳假设用较小值的时候,用所猜测的值代替函数的解。这种方法虽然有效,但是只能 用于解的形式很容易猜测的情形。
这种猜测是建立的经验的基础上的,有时候甚至是创造性的思维。但是可以通过递归树获得比较好的预测
递归树:递归树方法将递归式转换成树形结构,树中的节点代表在不同的递归层次付出的代价,最后再利用求和式求即界限的方法解递归式。
特点:可以用树形结构很好的看出递归的结构,我们将树中的每一层的代价相加得到每层代价的集合,然后再把没层的代价相加就可以得到,整个递归式的代价
然后就是通过数学归纳法,对和式进行证明。数学归纳法里面有一些小的变形是证明的难点。
主方法:主方法是建立在 主定理的基础上的,三种类型可以快速计算出来递归式解,对于第三种,主要是后面条件的带入判断,但是
主方法并不是对所有递归式使用的,主方法不适用于 : T(n)=2T(n/20)+nlgn
参考别人的理解,这里说下我对渐近大于和多项式大于的理解:
渐近大于是对c>0, f(n)*c>=g(n);则说明f(n)渐近大于g(n);
相对于渐近大于多项式大于是一种更苛刻的大于:c1*f(n)*n^c2>=g(n)则才说明f(n)多项式大于g(n);
因为f(n)=nlgn渐近大于n^logba=n;但并不是多项式大于.
类似的在一种和第二种之间也存在这种不适用的地方刚好是相反的。
关于主定理的证明:
首先是证明三个引理 :引理1前一部分表示每个节点的代价,后边表示把问题分解为子问题及合并一起用的代价,引理2,是通过带入证明的
引理三是通过对前面的2个引理的引用来证明的
关于上下取整数是证明主定理不仅仅定义在b的整数幂上,而是对于所有整数
看完这一章给算法学习打点基础吧。下一章——概率分析与随机算法