Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matrix 大Oh、大Omega和θ中算法的计算复杂度_Matrix_Complexity Theory - Fatal编程技术网

Matrix 大Oh、大Omega和θ中算法的计算复杂度

Matrix 大Oh、大Omega和θ中算法的计算复杂度,matrix,complexity-theory,Matrix,Complexity Theory,我试图解决以下关于计算复杂性的问题: 计算以下算法的计算复杂度,并 用大O,大ω和θ写下它的复杂性 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 我最终得到了大OO(mn^2) BigOmega(1)和Theta(mn^2)回想一下f=Theta(g)当且仅当f=O(g)和f=Omega(g) 矩阵向量积可以用Theta(mn)时间(假设原始

我试图解决以下关于计算复杂性的问题:

计算以下算法的计算复杂度,并 用大O,大ω和θ写下它的复杂性

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

我最终得到了大O
O(mn^2)

Big
Omega(1)
Theta(mn^2)
回想一下
f=Theta(g)
当且仅当
f=O(g)
f=Omega(g)


矩阵向量积可以用
Theta(mn)
时间(假设原始实现)和
O(m)
中的向量和来计算,因此总运行时间是
Theta(mn)
。从这里可以得出时间也是
O(mn)
Omega(mn)

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

    x(i) = x(i) + A(i,j) * b(j)
因此,这在O(1)中完成,并且不取决于
i
j
的值。由于您在内部
for
循环中对该语句进行了多次迭代,精确到
n
次,因此可以说以下代码在O(n)中运行:

(假设作业也是在固定时间内完成的)。同样,它不取决于
i
的确切值。最后,我们考虑了外部循环:

for i=1 to m {
   meth2
}
方法
meth2
被精确地重复
m
次,因此时间复杂度的上界为O(nm)

由于没有条件语句,也没有递归语句,并且数据A、b和x的结构不会改变程序的执行,因此该算法也是大ω(mn)和大θ(mn)


当然,你可以高估big oh,低估big omega:对于每种算法,你可以说它是Ω(1),对于某些算法,它是O(2n),但关键是你不会用它买太多。

看看代码的结构,我会说O(mn)以及Omage(mn)和θ(mn)…是的,但omega(1)非常松散。每个算法都以ω(1)为单位运行。
for i=1 to m {
   meth2
}