该算法的复杂度公式

时间:2015-11-20 21:34:41

标签: algorithm complexity-theory

我有这个算法(黄金比例):

public static float golden(int n){

float res;

if(n == 0) {
  res = 1;
} else {
  res = (float) (1.0 + (1.0 / golden(n-1)));
}
return res;

}

我认为T(n)公式是 T(n-1)。我可以按照这个公式得到复杂性。

T(n)= aT(n - b)+ c ^ n p(n)

和这一个:

click

什么是p(n)和c?

1 个答案:

答案 0 :(得分:0)

对于每个 n&gt; 0 Warning: require_once(/Controller/BulletinController.php): failed to open stream: No such file or directory in /Library/WebServer/Documents/WEBB_SERVER/6.2.1x/index.php on line 2 Fatal error: require_once(): Failed opening required '/Controller/BulletinController.php' (include_path='.:') in /Library/WebServer/Documents/WEBB_SERVER/6.2.1x/index.php on line 2 的调用导致一定数量的算术运算和一次递归调用,因此您可以将时间复杂度函数 T(n)的重复值写为< / p>

T(n)= T(n-1)+ k,n> 0

其中 k 是每次通话中的操作次数。这是顺序搜索的递归关系。

现在您可以应用您在问题中提到的公式。回想一下,公式中的 d 是多项式 p(n)的次数。在这里

a = 1,c = 1,b = 1,p(n)= k,

因此 d = 0 ,现在应用你的公式得到 a = c ^ b ,因此第二种情况适用,所以

T(n)= Theta(n ^ {d + 1} c ^ n)= Theta(n)

这给出了最终答案 T(n)= Theta(n)