算法的执行时间T(n)是多少?

时间:2010-01-09 17:08:29

标签: algorithm complexity-theory

请您解释一下2种算法的执行时间T(n)是多少? 假设执行时间T(n)=#执行(a:= a + 1)

算法1:

for i ← 1 to n do
      for j ← 1 to i do
            for k ← j to i+j do
                  a ← a + 1
            end for
      end for
end for

算法2:

for i ← 1 to m do
      for j ← 1 to i^2 do
            for k ← 1 to j do
                  a ← a + 1
            end for
      end for
end for

3 个答案:

答案 0 :(得分:1)

执行时间T(n)可以通过计算发生的原子操作的数量来找到(例如,将值a+1赋值给a)。在这种情况下,计算数字操作并不是那么困难,因为在每个算法中,您只有一个操作,并且它执行的次数由循环的固定边界控制。

因为这是家庭作业(或听起来像这样)我不打算进行计算,但你是否了解嵌套循环以确定每个人的身体执行次数?

答案 1 :(得分:1)

以下是您如何处理这些问题:

对于第一个,计算出最内层循环执行的次数与ij的函数关系。拨打此号码f(i, j)。然后我们注意到

sum(i = 1 to n) sum(j = 1 to i) f(i, j)

将是理想的答案。那么这是计算这笔钱的问题。我会给你一个提示:答案包括知道如何对连续的正方形和连续的整数求和。 (我100%肯定你的教授在课堂上讨论了这个问题。)

对于第二种,同样接近它。对于这个,你需要知道连续四次幂的总和,以及连续的平方和。

我对这两个方面都有答案;如果你愿意,发布一个解决方案,我会检查我的并提供意见。

答案 2 :(得分:0)

对于这些算法,您应该尝试根据n(或算法2中的m)得到a的表达式。对于这些算法,该表达式将是多项式。该多项式的阶数实际上是该算法的O(n)复杂度。现在有了这个提示,你应该能够完成作业。