矩阵乘法算法时间复杂度

时间:2011-12-17 17:59:16

标签: algorithm time-complexity matrix-multiplication

我想出了这种矩阵乘法算法。我在某处读到矩阵乘法的时间复杂度为o(n ^ 2)。 但我认为我的算法会给出o(n ^ 3)。 我不知道如何计算嵌套循环的时间复杂度。所以请纠正我。

for i=1 to n
   for j=1 to n    
     c[i][j]=0
     for k=1 to n
         c[i][j] = c[i][j]+a[i][k]*b[k][j]

4 个答案:

答案 0 :(得分:19)

天真的算法,就像你在评论中指出的那样,你得到的是O(n ^ 3)。

确实存在可以减少这种情况的算法,但是您不太可能找到O(n ^ 2)实现。我认为最有效实施的问题仍然存在。

有关详细信息,请参阅Matrix Multiplication上的此维基百科文章。

答案 1 :(得分:10)

将m×n矩阵乘以n-by-p矩阵的标准方法具有复杂度O(mnp)。如果所有这些对你来说都是“n”,那就是O(n ^ 3),而不是O(n ^ 2)。编辑:在一般情况下它不会是O(n ^ 2)。但是对于特定类型的矩阵,有更快的算法 - 如果你了解更多,你可能会做得更好。

答案 2 :(得分:1)

在矩阵乘法中有3个for循环,我们正在使用,因为每个for循环的执行需要时间复杂度O(n)。因此,对于三个循环,它变为O(n^3)

答案 3 :(得分:-2)

我最近通过向量乘法以一种简单的方式获得了矩阵乘法的 O(n^2) 算法