矩阵乘法
普通的矩阵乘法需要O(n3)的时间.Strassen给出了一种快速的方法.
要计算矩阵C=A*B.将A和B分别分为2*2的块矩阵.令
M1 = A11(B11-B22)
M2 = (A11+A12)B22
M3 = (A21+A22)B11
M4 = A22(B21-B11)
M5 = (A11+A22)(B11+B22)
M6 = (A12-A22)(B21+B22)
M7 = (A11-A21)(B11+B12)
本来需要8次乘法,这里变成了7次.然后
C11 = M5 + M4 - M2 + M6
C12 = M1 + M2
C21 = M3 + M4
C22 = M5 + M1 - M3 - M7
继续递归,最终复杂度为,O(nlog27) ≈O(n2.81).
目前最好的算法为O(n2.376)