【问题标题】:big oh of algorithm with nested loop带有嵌套循环的算法的大哦
【发布时间】:2012-02-01 09:22:12
【问题描述】:

找到大的哦表征

input: n  

s<-0  
for i<-1 to n^2 do  
  for j<-1 to i do  
    s<-s+i

两个循环都迭代n^2 次。我不确定是否应该添加或乘以循环。现在我认为答案是O(n^4)

【问题讨论】:

  • 也许要验证这一点,您可以查看 s 如何随 n 变化,以进一步了解 O(n^4) 是否正确?

标签: algorithm big-o nested-loops


【解决方案1】:

外层循环i从0到n^2,而内层循环j从1到i

因此,内循环的复杂度为i(内循环需要i 步骤,i 是变化的)。让我们用IL(i)=i来表示内循环的运行时间。

为了获得总运行时间,我们看到内部循环被执行了n^2 次,并带有不同的“参数”i。因此,我们获得了总运行时间:

 n^2           n^2
----          ----
\     IL(i) = \    i 
/             /
----          ----
 i=1           i=1

也就是说,您必须将 1 到 n^2 之间的所有数字相加。有许多基本教科书解释了如何评估这一点。

结果为@​​987654333@,导致整体复杂度为O(n^4)

【讨论】:

    【解决方案2】:

    你是正确的答案是O(n^4)。首先内部循环成本i。然后外循环成本sum(1-&gt;p) i = p(p-1)/2,其中p=n^2。这给出了O(n^4)的成本

    【讨论】:

      【解决方案3】:

      你的论点几乎正确。

      循环迭代次数:

      1 + 2 + ... + n^2 
      = (n^2+1)*(n^2)/2
      = (n^4 + n^2)/2
      

      所以答案是Θ(n^4)(作为旁注,它也是O(n^4))。

      您可以通过选择三个常量c1c2n0 来正式证明:

      c1*n^4 <= (n^4 + n^2)/2 <= c2*n^4 forall n >= n0
      

      【讨论】:

        【解决方案4】:

        因为i 的最大值是n^2,所以我们得到O(n^2) * O(n^2) 等于O(n^4)

        【讨论】:

          【解决方案5】:

          您可以简单地查看basic sum formula。你的总和不是 N 而是 N^2 给你

          n^2(n^2+1)/2
          

          这确实是 O(n^4)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-07-18
            • 1970-01-01
            • 2016-07-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多