Strassen Algorithm

 

普通方法

C11 =A11*B11+A12*B21

C12=。。

C21=。。。

C22=。。。

此递归公式为T(n)=8T(n/2)+O(n^2)  时间复杂度为O(n^3)

Strassen方法的递推公式为:

 

 

T(n) = O(nlog 7) = O(n2.81).

 

时间复杂度就马上降下来了。。但是不要过于乐观。

从实用的观点看,Strassen算法通常不是矩阵乘法所选择的方法:

1 在Strassen算法的运行时间中,隐含的常数因子比简单的O(n^3)方法常数因子大

2 当矩阵是稀疏的时候,为稀疏矩阵设计的算法更快

3 Strassen算法不像简单方法那样子具有数值稳定性

4 在递归层次中生成的子矩阵要消耗空间。

 

所以矩阵乘法一般意义上还是选择的是朴素的方法,只有当矩阵变稠密,而且矩阵的阶数>20左右,才会考虑使用Strassen算法。

你可能感兴趣的:(Strassen Algorithm)