Strassen矩阵乘法

参考:Strassen算法
矩阵乘法Strassen算法 - 知乎 (zhihu.com)

一、概述

Strassen算法就是用于计算矩阵乘法,就是将矩阵分开进行计算,其的核心思想是令递归树稍微不那么茂盛一点儿, 即只递归进行7次而不是8次

二、实现方法

我们假设进行A*B = C的矩阵计算,我们首先进行矩阵分解

每个分矩阵都是 n/2 * n/2

所以原式就可以写为

由分矩阵乘法,得到

上述步骤消耗Θ(1)

之后,创建如下的7个矩阵(就是公式,按着来就行)

消耗Θ(n^2)

之后,根据如上的结果,再创建如下矩阵

基本都是之前矩阵的乘法

最后,根据上面计算的P矩阵就可以算出C矩阵

三、效率分析

可以由主方法或树状图法,求得

小结

这个算法对于矩阵维数较大时,效率会更高。
我们可以看到,这个算法就是按公式计算,没什么太大难度(其代码也不太好看,我就不贴了)对于考试也不会有什么太多要求。

你可能感兴趣的:(Strassen矩阵乘法)