Log n重组的主定理

时间:2013-05-17 00:15:25

标签: algorithm time-complexity master-theorem

我如何理解主定理,算法可以递归定义为:

a T(n/b) + O(n^d)

其中a是子问题的数量,n / b是子问题的大小,O(n ^ d)是子问题的重组时间。计算主定理的时间复杂度如下:

T(n) =  { O(n^d)                    if d > log base b of a
        {
        { O(n^d log n)              if d = log base b of a
        {
        { O(n^ (log base b of a) )  if d < log base b of a

我的问题是,如果重组时间没有以O(n ^ d)的形式表示怎么办?如O(2 ^ n)或O(log(n))。如何确定时间复杂度?

1 个答案:

答案 0 :(得分:2)

对于Master定理,你不会,它只适用于某种形式的重现。你说:

  

我如何理解主定理,算法可以递归定义为:

但这并不完全准确 - 并非所有算法都能像这样递归定义,正如您自己展示的那样。 Master定理仅适用于那些可以定义的定理(更具体地说,请参见here以了解它可以应用的所有情况)。

对于其他形式,还有其他定理,例如this