这个功能的时间复杂度?

algo(n)
   for i in 0 to n {
      for 0 to 8^i {
      }
   }
   for i to 8^d {
   }

任何有关此算法的时间复杂度的分析或信息都将是有用的。 最坏情况,最佳情况,下限/上限,theta / omega / big-o,递归关系等等。


你的算法运行在指数时间( T ∈ Θ(c^n)c>1 )。 您可以使用Sigma符号分析内部for循环( ... for 0 to 8^i )的迭代次数:

在这里输入图像描述

由于你的算法在Θ(8^n) ,它也在O(8^n) (上渐近界)和Ω(8^n) (下渐近界)中。


上述分析是在假设最终for循环分析中的d小于或等于n情况下进行的,在这种情况下,在它之前嵌套的两个for循环将占优势(因此我们不需要分析最后一个非优势for循环明确)。


算法(n)基本上由两部分组成:

   for i in 0 to n
      for 0 to 8^i

   for i to 8^d

我们从第一个开始。 假设内部循环的每次迭代都需要一定的时间,那么复杂度就是C*8^i 。 现在,如果我们遇到的可能值概括i ,我们得到:

8^0 + 8^1 + 8^2 + .... + 8^n-1

这是a=1, r=8的几何级数的总和,其和为:

1 * (1-8 ^(n-1)) / (1-8) = 1 * (-1/7 + 8^(n-1)/7) 

对于n->infinity ,这可以近似为8^(n-1)/7 ,并且我们可以得出复杂度为Θ(8^(n-1)/7) = Θ(8^n)

至于第二部分,它非常简单,并且是8 ^ d。

这给出T(n)总复杂度在Θ(8^d + 8^n)

链接地址: http://www.djcxy.com/p/40177.html

上一篇: Time complexity of this function?

下一篇: Big O, Theta, and big Omega notation