矩阵相乘:施特拉森算法

P1=A(F-H)                  P2=(A+B)H面试

P3=(C+D)E                 P4=D(G-E)算法

P5=(A+D)(E+H)          P6=(B-D)(G+H)编程

P7=(A-C)(E+F)读书笔记

 

矩阵A和B相乘表示为:

AB=[ P5+P4-P2+P6     P1+P2]

       [P3+P4       P1+P5-P3-P7]

 

将A和B以及它们相乘的结果矩阵C分解:

A=[A11  A12]         B=[B11  B12]        C=[C11  C12]

    [A21   A22]             [B21  B22]            [C21  C22]

 

咱们要求C11,C12,C21,C22:

        C11=A11B11+A12B21            C12=A11B12+A12B22

        C21=A21B11+A22B21            C22=A21B12+A22B22

 

咱们再定义7个矩阵:

        M1=(A11+A22)(B11+B22)                M2=(A21+A22)B11

        M3=A11(B12-B22)                            M4=A22(B21-B11)

        M5=(A11+A12)B22                           M6=(A21-A11)(B11+B12)

        M7=(A12-A22)(B21+B22)

 

所以:

    C11=M1+M4-M5+M7

    C12=M3+M5

    C21=M2+M4

    C22=M1-M2+M3+M6

 

         本文为《编程之法 面试和算法心得》读书笔记。

相关文章
相关标签/搜索