矩阵相乘:施特拉森算法

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

 

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

转载于:https://my.oschina.net/u/2009816/blog/782768

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值