Pra*_*rav 39
目前已知的最佳矩阵乘法算法是具有O(n 2.38)复杂度的"Coppersmith-Winograd算法", 但它不用于实际目的.
然而,你总是可以使用 具有O(n 2.81)复杂度的"Strassen算法",但是没有这种已知的算法用于具有O(n)复杂度的矩阵乘法.
Pet*_*der 14
在O(n ^ 2)处存在矩阵乘法的理论下界,因为您必须触摸许多存储器位置来进行乘法.正如其他人所说,有些算法将我们降低到O(n ^ 3)以下,但在实际使用中通常是不切实际的.
如果您需要加快速度,可能需要查看Cache Oblivious Algorithms,例如加速性能的这一算法(http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.44.5650)通过以缓存内聚方式执行操作,确保数据在需要时位于缓存中.
简答:不
答案很长:如果你有特殊类型的基质(例如对角矩阵),有很多方法.更好的矩阵乘法算法可以将你削减到像O(n 2.4)(http://en.wikipedia.org/wiki/Coppersmith-Winograd_algorithm)这样的东西.我熟悉的主要方法是使用分而治之算法来分解工作负载(而不是我链接的工作负载).
我希望这有帮助!
| 归档时间: |
|
| 查看次数: |
5200 次 |
| 最近记录: |