矩阵乘法

普通的矩阵乘法需要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)

posted on 2012-09-20 20:54  赛欧拉  阅读(127)  评论(0)    收藏  举报