以前学习《算法导论》关于主定理一章,它的证实是很概略的,网上关于主定理证实的材料很多,可是不少都只局限于在b的幂上的证实,将证实扩展到全体整数的论述至关少。本人查找了很多资料后在这里找到了一篇相对完整的证实(点击这里),但细细读下来却发现它仍是有一些瑕疵,所以打算本身补完整个证实,但愿能对之后学习算法导论的同窗有所帮助。因为本人数学水平不行,若是发现证实有错误或有地方须要补充,欢迎联系我youth7@163.comhtml
1,证实的整体思路算法
首先,求出递归式的非递归形式,即用多个多项式的和将递归式表示出来编辑器
接着,分析这个多项式的和,而后证实之。(证实内部又要分开两个阶段进行)ide
总之,求出递归式的和式,是证实的开始的基础,全部后续的证实,都要基于这个和式展开的。学习
2,递归式的和google
首先画出递归树spa
这里介绍一下几个变量是怎么来的orm
1)树的高度hhtm
这里须要重点理解的是,从这个和式咱们能够直观地感觉到,若是两个部分中谁的阶数较高,则谁决定和式的上界。所以接着的具体证实就是围绕着这两部分的大小关系展开的。咱们有如下几种状况:递归
(留意f(n)是划分当前问题的代价,也是非叶子节点的代价。 是全部叶子节点的代价,即基本状况的代价的和)
1)若是第一部分比第二部分的阶数要高,这意味着递归树的总代价由叶子的代价决定
2)若是两部分相等,这意味着递归树的总代价分布均匀,由叶子节点和其它节点共同决定。
3)若是第二部分阶数比第一部分要高,这意味着递归树的总代价由内层叶子决定,也便是说,划分问题的代价决定递归树的总代价
理解三种情形的现实意义很重要,它能帮助咱们清晰体会到递归式的本质
3,证实的第1阶段
第一阶段的证实并非在全体天然数上进行的,而是将n定义在b的幂上面,即 ,如下是证实过程
综合上述,第一阶段证实完毕
4,证实的第2阶段
第二阶段是在第一阶段的基础上,将主定理的定义域由 扩展到从全体天然数上,可是有两点必须注意:
5,扩展
咱们能够看到,其实主定理是不能覆盖全部状况的,主定理的本质是递归式,递归式的求解有很长历史,算法导论的本章注记中谈到了Akra-Bazzi方法(我的认为是一种关于递归式的广泛性解法),有兴趣能够参考一下附录参考资料228,这种方法可以解决任何递归问题。
Tom Leighton. Notes on better master theorems for divide-and-conquer recurrences. Class notes. Available at http://citeseer.ist.psu.edu/252350.html, October 1996.
因为网页编辑器不支持公式,只能贴图片,完整高清版已经上传新浪资料,有须要能够自行搜索下载,但愿这个证实不会误导各位朋友。
最近发现新浪资料已经暂时关闭了,悲剧啊,上传百度文档的话又不能识别公式,有推荐的地方吗?