用于计算矩阵乘以其转置的有效算法

时间:2011-09-28 03:12:06

标签: algorithm complexity-theory matrix-multiplication algebra linear

对于一堂课,我老师提出的问题是将矩阵乘以其转置的算法成本。使用标准的3循环矩阵乘法算法,效率为O(N ^ 3),我想知道是否有办法操纵或利用矩阵*矩阵转置来获得更快的算法。我知道当你将矩阵乘以它的转置时,你必须计算较少的矩阵,因为它是对称的,但我想不出如何操作一个可能小于O(n ^ 3)的算法。

我知道像Coppensmith和Straussen这样的算法是更快的通用矩阵乘法算法,但任何人都可以提供有关如何计算利用转置的任何提示或见解?

谢谢

1 个答案:

答案 0 :(得分:1)

目前还没有这种特殊乘法的任何渐近屏障特性。

显而易见的优化是利用产品的对称性。也就是说,[i][j]条目等于[j][i]条目。

对于特定于实现的优化,您可以执行大量缓存。大型矩阵乘法中的大量时间用于将数据传输到存储器和CPU以及从存储器和CPU传输数据。因此,CPU设计人员实现了一个智能缓存系统,最近使用的内存存储在称为缓存的小内存部分中。除此之外,他们还使得附近的内存也被缓存。这是因为很多内存IO是由于从/向数据的读/写而导致的,这些数据是按顺序存储的。

由于矩阵的转置只是交换了索引的相同矩阵,因此在矩阵中缓存值可能会产生两倍以上的影响。