我想出了这种矩阵乘法算法。我在某处读到矩阵乘法的时间复杂度为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]
答案 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) 算法