码迷,mamicode.com
首页 > 其他好文 > 详细

计算算法时间复杂度的主方法的一种较为简洁的记忆方法

时间:2014-08-23 11:12:30      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   os   2014   log   时间   算法   sp   

  这阵子在认真地看着算法导论,之前看到第四章计算分治法的时间复杂度的计算方法被称为“主方法”,运用这个主方法可以快速地口算出分治算法的递归式的时间复杂度,以下给出算法导论里关于主方法的描述吧,我就直接截图bubuko.com,布布扣

bubuko.com,布布扣

不得不说,算法导论是一本非常偏向于数学的算法书,里面的对于各种算法结论的正确性大都有着严格的数学上的推导。之前对于主方法的描述只是大略地看了一下,看是看懂了,但是当时没有刻意将这个结论记下来,当我往后看遇到递归式求解部分的时候发觉还是忘记了主方法的求解过程,只能模糊记得部分而已bubuko.com,布布扣,昨天晚上再复习的时候,发觉这个描述可以不用带有让人烦恼的 ε ,我是采用了如下的记忆方法~

      对于递归式 T(n) = a * T(n/b) + f(n);

       1.我们不妨设f(n) = n^k;   我们可以求出 k 的值

       2.我们再求出logab;

          3.比较logab 与 k的大小

       4.如果k >logab, 有 T(n) = Θ(f(n));  如果 k <logab  有 T(n) = Θ(n ^(logab));如果k = logab

则T(n) = Θ(lgn * n^(logab));

比如T(n) = 9*T(n/3) + n;

有 log39 = 2   ; f(n) = n^1 得到 k = 1   有 2 > 1 即得到 T(n) = Θ(n^2);

这样的方法应该会简单点吧~  我只是觉得算导里面每次对于递归式的求解都要拿一个ε来说事总是有点不爽的感觉bubuko.com,布布扣,虽然这种方法失去了数学上的严谨证明,。。。。orz

计算算法时间复杂度的主方法的一种较为简洁的记忆方法

标签:style   blog   http   os   2014   log   时间   算法   sp   

原文地址:http://www.cnblogs.com/jusonalien/p/3930776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!