[英]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.