Algorithm 对数n重组的主定理

Algorithm 对数n重组的主定理,algorithm,time-complexity,master-theorem,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^

根据我对主定理的理解,算法可以递归定义为:

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
T(n)={O(n^d)如果d>a的对数基b
{
{O(n^d log n)如果d=a的对数基b
{
{O(n^(a的对数基b))如果d

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

如果主定理不是,它只适用于某种形式的重复。你说:

根据我对主定理的理解,算法可以递归定义为:

a T(n/b) + O(n^d)
但这并不完全准确——并不是所有的算法都可以像你所展示的那样递归定义。主定理只适用于那些可以这样定义的算法(更具体地说,请参阅它可以应用于的所有情况)

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