施特拉森算法

施特拉森算法(英语:Strassen algorithm)是一个计算矩阵乘法算法,时间复杂度为

简介

编辑
 
矩阵乘法算法的演进。

施特拉森算法在1969年由沃尔克·施特拉森所提出,是第一个时间复杂度低于 矩阵乘法算法。由于算法简单理解,且为第一个被提出来的特性,常被算法教材拿来当作主定理(英语:Master theorem)计算时间复杂度的例子。

另外,因为施特拉森算法证明了矩阵乘法存在时间复杂度低于 的算法,使得更多学者投入研究,寻找更快的算法。

算法

编辑

定义

编辑

   上的方矩阵。求两者的积 。一般矩阵可以填0的方法计算令它成为 矩阵

 

计算

编辑

A, B, C分成相等大小的方块矩阵:

 

 

于是

 
 
 
 

引入新矩阵

 
 
 
 
 
 
 

可得:

 
 
 
 

其中 的计算也是使用施特拉森算法求得。

评论

编辑

一般矩阵乘法的时间复杂度为 ,施特拉森算法因为只有每次的分治法(英语:Divide and conquer algorithm)只有七个矩阵乘法运算,所以依照主定理(英语:Master theorem)可以得出时间复杂度为 。但Strassen算法的数值稳定性较差。

现时时间复杂度最低的矩阵乘法算法是Coppersmith-Winograd方法的一种扩展方法,其算法复杂度为 )。[1]

相关连结

编辑

参考来源

编辑
  1. ^ Virginia Vassilevska Williams. Multiplying matrices faster than Coppersmith-Winograd (PDF). [2014-01-14]. (原始内容存档 (PDF)于2013-10-08). 而1990年Coppersmith-Winograd方法提出时的算法复杂度为