伪码的主方法算法分析

时间:2013-07-22 03:37:21

标签: master-theorem

如何通过检查此伪代码找到主定理中使用的c / d常量?

FastPower(a,b) :    
     if b = 1 
         return a 
     otherwise 
         c := a*a 
         ans := FastPower(c,[b/2]) 
     if b is odd 
         return a*ans 
     otherwise return ans 
end

1 个答案:

答案 0 :(得分:2)

首先,你需要找到你的重复关系:T(n)= a T(n / b)+ O(D)+ O(C)其中O(D)是将问题分成的时间子问题,O(C)是将子问题重新组合到答案中所花费的时间,a是子问题的数量,n / b是子问题的大小。然后,一旦复发,您可以使用主定理进行分析。

在你的算法中,我认为有一个大小为n / 2的子问题,所以a为1,b为2.分割时间为O(1),重组时间为O(1),假设分析为不是在位操作方面。

使用主定理,O(1)=Θ(n log 2 1 )因此总运行时间为Θ(n log 2 1 log n)=Θ(log n)