矩阵加法的复杂性是多少?

时间:2009-12-08 22:30:28

标签: matrix complexity-theory

我找到了some mentions in another question of matrix addition being a quadratic operation。但我认为这是线性的。

如果我将矩阵的大小加倍,我需要计算加法的两倍,而不是四倍。

主要分歧点似乎是问题的大小。对我而言,它是矩阵中元素的数量。其他人则认为它是列数或行数,因此O(n^2)复杂度。

我将其视为二次运算的另一个问题是,这意味着添加三维矩阵是立方的,并且添加4维矩阵是O(n^4)等,即使所有这些问题都可以减少解决了添加两个向量的问题,这个向量具有明显的线性解。

我是对还是错?如果错了,为什么?

4 个答案:

答案 0 :(得分:7)

正如您已经指出的那样,这取决于您对问题大小的定义:是元素的总数,还是矩阵的宽度/高度。哪个是正确的实际上取决于矩阵加法所属的较大问题。

注意:在某些硬件(GPU,矢量机等)上,添加可能比预期运行得更快(即使复杂性仍然相同,请参见下面的讨论),因为硬件可以一步执行多次添加。对于有界问题大小(如n< 3),它甚至可能是一步。

答案 1 :(得分:5)

对于具有M行和N列的二维矩阵,它是O(M * N)。

或者你可以说它是O(L),其中L是元素的总数。

答案 2 :(得分:3)

通常使用“大小为N”的平方矩阵定义问题,即NxN。根据该定义,矩阵加法是O(N ^ 2),因为您必须恰好访问每个NxN元素一次。

通过相同的定义,矩阵乘法(使用平方NxN矩阵)是O(N ^ 3),因为您需要访问每个源矩阵中的N个元素来计算乘积矩阵中的每个NxN元素。

通常,所有矩阵运算都有一个O(N ^ 2)的下限,因为你必须至少访问每个元素一次以计算涉及整个矩阵的任何内容。

答案 3 :(得分:2)

想到一般案例实施:

for 1 : n
 for 1 : m
   c[i][j] = a[i][j] + b[i][j]

如果我们采用简单的方阵,即n x n加法