首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩阵-矩阵乘法

矩阵-矩阵乘法
EN

Stack Overflow用户
提问于 2012-11-20 16:36:33
回答 2查看 2.9K关注 0票数 1

我正在写一个包含矩阵乘法的C代码,并且我使用了3个嵌套循环来实现这个操作。那么,有谁知道我们如何通过删除其中一个嵌套循环来改进代码?

代码语言:javascript
复制
for (i = 0; i < SIZE; ++i)
    for (j = 0; j < SIZE; ++j)
        for (k = 0; k < SIZE; ++k)
            c[i][j] += a[i][k] * b[k][j];
EN

回答 2

Stack Overflow用户

发布于 2012-11-20 16:38:50

稠密矩阵的矩阵乘法有O(n^3)。这可以通过使用Strassen's algorithm to O(n^(2.8))或Coppersmith-Winogar to O(n^(2.37))来加速。

票数 3
EN

Stack Overflow用户

发布于 2012-11-20 16:41:39

Strassen算法是一个值得尝试的经典算法。

http://en.wikipedia.org/wiki/Strassen_algorithm

这比写三个循环更复杂,如果矩阵大小很小,总体速度增益可能不会显示出来。

据我所知,Mathematica和Matlab对较小的矩阵使用三嵌套循环乘法,对于较大的矩阵则切换到Strassen。

从理论上讲,还有其他算法的渐近性能更好,但除非您正在进行非常非常大的矩阵乘法,否则我认为它不会有太大帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13469287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档