分治法--矩阵乘法的Strassen算法

给定两个n*n矩阵
分块进行乘法
  1. 简单分治:
                            
                                T(n) = O(n^2)
  1. Strassen算法:只需要递归7次,而非8次
(1) 将输入矩阵A、B以及输出矩阵C各分解为4个(n/2)×(n/2)子矩阵。
(2) 创建10个(n/2)×(n/2)矩阵S1,S2,…,S10,如下所示。由于需要进行101次(n/2)×(n/2)矩阵的加减法,所以这一步花费Θ(n2))时间。
(3) 用步骤(1)分解得到的子矩阵和步骤(2)中创建的10个矩阵,递归地计算7个矩阵乘积P1,P2,…,P7
(4) 利用矩阵P1,P2,…,P7进行加减运算,得到输出矩阵C的子矩阵C11,C12,C21,C22这一步需要进行8次(n/2)×(n/2)矩阵的加减法,所以花费时为Θ(n2)
                                                      
 
 
 
posted @ 2020-06-19 14:53  梦里飞雪飘  阅读(454)  评论(0编辑  收藏  举报