您的位置:首页 > 其它

主定理与递归树计算算法时间复杂度

2014-03-18 09:01 288 查看
主定理如下定义:



例如归并排序中,a=b=2,f(n)=n,T(n)=2T(n/2)+n,那么,满足第二种情况,则T(n)=O(nlogn)。

对于递归方程T(n)=aT(n/b+f(n)的求解,可以使用递归树,用归并排序为例:



每一节点中都将当前的自由项n留在其中,而将两个递归项T(n/2) + T(n/2)分别摊给了他的两个子节点,如此循环。

图中所有节点之和为:nlogn

可以得到递归树的规则为:

  (1) 每层的节点为T(n) = aT(n / b) + f(n)中的f(n)在当前的n/b下的值;

  (2) 每个节点的分支数为a;

  (3)每层的右侧标出当前层中所有节点的和。

1.当f(n)为常数时:



2.当f(n)=O(n)时:



3.当f(n)为其他情况时,利用递归树分析。

由第二种情况知,若采用分治法对原算法进行改进,则着重点是采用新的计算方法缩小a值。  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息