繁体   English   中英

这两个函数的渐近时间复杂度是多少?

[英]What will be the asymptotic time complexity of these two functions?

请参阅以下两个功能。

    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)

但是我想知道为什么我不能假设这个方程是第二种情况? 我可以确定的一件事是,在两种情况下,复杂性都会随着变化而变化。 在两种情况下,递归调用的次数是不同的。

请帮我理解。

您断言第一个算法时间的递归是

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的成本,这与复杂度无关紧要。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM