这个功能的时间复杂度?

时间:2016-02-27 10:39:03

标签: language-agnostic big-o time-complexity complexity-theory asymptotic-complexity

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

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

2 个答案:

答案 0 :(得分:0)

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

enter image description here

由于您的算法位于Θ(8^n),因此它也位于O(8^n)(上渐近边界)和Ω(8^n)(下渐近边界)。

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

答案 1 :(得分:0)

算法(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

这是sum of geometric series 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)

第2部分非常简单,是8 ^ d。

这使得T(n)的总体复杂度在Θ(8^d + 8^n)

相关问题