找到嵌套循环的复杂性

时间:2016-02-02 16:12:30

标签: loops big-o time-complexity complexity-theory discrete-mathematics

我给出了循环伪代码:

" to"相当于"< ="

sum = 0;
for i = 1 to n
  for j = 1 to i^3
    for k = 1 to j
       sum++

我知道最外面的循环运行n次。 这两个内部循环是否也运行n times? (制作整个复杂性O(n^3)

例如n = 5 然后:

1 <= 5        2<= 5
j = 1 <= 1^3  2 <= 2^3 = 8
k=1 <= 1      2 <= 2

对于每个循环,这将持续n次,使其成为n^3

2 个答案:

答案 0 :(得分:1)

这似乎是一个棘手的问题,那些内部循环比n更复杂。

外部循环是n。 下一个循环 i^3。在外循环结束时,我将等于n。这意味着最后的这个循环将在n^3。从技术上讲,它将是(n^3)/2,但我们忽略了,因为这是大O. 第三个循环转到j,但在上一个循环结束时j将等于i^3。我们已经确定i^3等于n^3

所以看起来像:

  • 第一圈:n
  • 第二次循环:n^3
  • 第3次循环:n^3

它看起来像n^7。我希望别人能够验证这一点。一定要喜欢Big O.

答案 1 :(得分:0)

您可以使用Sigma表示法显式展开循环中的基本操作数(让sum++成为基本操作):

enter image description here

其中

因此,使用Big-O表示法的复杂性为O(n^7)