【问题标题】:What will be the asymptotic time complexity of these two functions?这两个函数的渐近时间复杂度是多少?
【发布时间】:2016-08-16 17:06:05
【问题描述】:

看下面两个函数。

    A(n)
    { if(n<=1)
          return;
      else
          return(A(n/4)+A(n/4)+A(n/4));
    }

还有第二个-

     A(n)
    { if(n<=1)
          return;
      else
          return(3*A(n/4));
    }

请告诉我这两个函数的方程并加以解释,然后渐近地约束它。

其实我问这个问题是因为,我有一个方程

T(n)=3T(n/4)+1

我使用了 Masters 和 tree 方法(假设第一种情况)并且得到- THETA(n^0.79)

但我想知道为什么我不能假设这个等式是第二种情况?我确信的一件事是,在这两种情况下,复杂性都不同。在这两种情况下,递归调用的次数是不同的。

请帮我理解一下。

【问题讨论】:

    标签: algorithm time-complexity asymptotic-complexity


    【解决方案1】:

    您断言第一个算法时间的递归是绝对正确的

    T(n) = 3 T(n / 4) + O(1).

    第一个算法和第二个算法总是返回相同的东西。

    然而,这就是相似之处的结束。第二种算法组合得更巧妙,通过一次调用,然后相乘。也就是说,当

    return(A(n/4)+A(n/4)+A(n/4));
    

    返回与

    相同的值
    return(3*A(n/4));
    

    后者只进行一次递归调用。它的时间递归,因此是

    T(n) = T(n / 4) + O(1)

    (这里最后一个 O(1) 还包括将返回值乘以 3 的成本,这与复杂性无关。)

    【讨论】:

      猜你喜欢
      • 2020-12-03
      • 2017-09-11
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 2021-06-14
      • 1970-01-01
      相关资源
      最近更新 更多