Matrix 大Oh、大Omega和θ中算法的计算复杂度
我试图解决以下关于计算复杂性的问题: 计算以下算法的计算复杂度,并 用大O,大ω和θ写下它的复杂性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)时间(假设原始
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)
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
}