【问题标题】:Running Time Calculation运行时间计算
【发布时间】:2021-09-26 03:07:45
【问题描述】:

我正在尝试学习时间复杂性。我遇到了一个令我困惑的问题。我需要帮助来理解这一点:

my_func 接受大小为 n 的数组输入。它运行三个 for 循环。在第三个循环中,它调用另一个 O(1) 时间的函数。

def my_func(A): 
  for (int i=1; i<n; i++)
    for (int j=1; j<i; j++)
      for (int k=1; k<j; k++)
        some_other_func(); 

我的问题:

  1. 如果我说 my_func() 执行的步骤总数为 O(n^3),我是对的,因为:
    1. 第一个 for 循环从 1 变为 n-1
    2. 第二个 for 循环从 1 变为 n-2
    3. 第三个循环从 1 到 n-3
  2. 什么是渐近运行时间,什么是上述算法的渐近运行时间?
  3. 以下是什么意思:

【问题讨论】:

    标签: time-complexity complexity-theory code-complexity


    【解决方案1】:

    如果我说 my_func() 执行的步骤总数是对的吗 是 O(n^3)

    是的,它的时间复杂度是O(n^3)

    什么是渐近运行时间,什么是渐近运行时间 上面的算法?

    当问题的大小达到无穷大[here] 时,算法执行时间的限制行为。例如:

    lim (n^3) when n-> infinite 
    

    下面是什么意思

    第一,它按原样显示因变量k-&gt;j-&gt;i。此外,如果所有变量(i,j,k)彼此独立怎么办?例如常量x,那么每个循环将迭代x 次,但这里k 取决于j,j 取决于I。例如:

    x(x(x)) = sigma(sigma(sigma(O(1))))
    

    第二,在大输入上研究时间复杂度。因此,变量要么是依赖的,要么是非依赖的,大 O 将是O(n^3)

    【讨论】:

      【解决方案2】:

      是的,它是 O(n^3),这是渐近运行时间。最后的 sum 表达式与顶部的三个嵌套循环的含义相同,假设“some_other_func()”为sum = sum + 1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多