大Oh,Big Omega和Theta算法的计算复杂度

时间:2016-04-03 10:46:17

标签: matrix complexity-theory

我正在尝试解决有关计算复杂性的以下问题:

  

计算以下算法的计算复杂度   记下Big O,Big Omega和Theta的复杂性

for i=1 to m {
   x(i) =0;
   for j=1 to n {
      x(i) = x(i) + A(i,j) * b(j)
   }
}
     

其中A是mxn,b是nx1。

我结束了Big O O(mn^2)Omega(1)Theta(mn^2)

2 个答案:

答案 0 :(得分:1)

回想f = Theta(g)当且仅当f=O(g)f=Omega(g)

矩阵向量乘积可以在Theta(mn)时间内计算(假设天真实现)和O(m)中的向量之和,因此总运行时间为Theta(mn)。从这里开始,时间也是O(mn)Omega(mn)

答案 1 :(得分:1)

假设以下语句以恒定时间运行:

    x(i) = x(i) + A(i,j) * b(j)

因此在 O(1)中完成,并且不依赖于ij的值。由于您在内部for循环中迭代此语句,恰好n次,您可以说以下代码在 O(n)中运行:

x(i) =0;
for j=1 to n {
    meth1
}

(假设分配也在恒定时间内完成)。同样,它不依赖于i的确切值。最后我们考虑外部循环:

for i=1 to m {
   meth2
}

方法meth2重复m次,因此 O(n m)中时间复杂度的上限很紧。

由于没有条件语句,也没有递归和数据结构 A b x 不会改变执行该程序,算法也是 big Omega(mn) big Theta(mn)

当然你可以高估大哦和低估大欧米茄:对于每个算法,你可以说它是Ω(1)而对于某些人来说它是 O(2) n ,但重点是你不会买那么多。