Strassen矩阵是一种分而治之的方法,可以帮助我们将两个矩阵(大小为n X n)相乘。
您可以首先参考该链接,以获取有关Strassen矩阵的知识:
分而治之|集合5(Strassen的矩阵乘法)
但是此方法需要填充一些方程式,因此,我将告诉您记住这些方程式的最简单方法:
您只需要记住4条规则:
- AHED(作为“未来”学习)
- 对角线
- 最后的CR
- 第一CR
另外,将X视为(行+),将Y视为(列-)矩阵
按照步骤 :
- 写P1 = A; P2 = H; P3 = E; P4 = D
- 对于P5,我们将使用对角线规则,即
(求和矩阵X的对角线元素)*(求和矩阵Y的对角线元素)
P5 =(A + D)*(E + H)
P1 = A
P2 = H
P3 = E
P4 = D
P5 =(A + D)*(E + H) - 对于P6,我们将使用Last CR Rule,即X的最后一列和Y的最后一行,并记住Row +和Column-,即(B – D)*(G + H),我们得到
P6 =(B – D)*(G + H) - 对于P7,我们将使用First CR Rule,即X的第一列和Y的第一行,并记住Row +和Column-,即(A – C)*(E + F),我们得到
P7 =(A – C)*(E + F)
P1 = A
P2 = H
P3 = E
P4 = D
P5 =(A + D)*(E + H)
P6 =(B – D)*(G + H)
P7 =(A – C)*(E + F) - 返回到P1:我们在那里有A,并且它在Y矩阵中的相邻元素是E,因为Y是列矩阵,所以我们在Y中选择一个列以使E不会出现,我们找到FH列,因此将A乘以(F – H)
因此,最后P1 = A *(F – H)
P1 = A *(F – H)
P2 = H
P3 = E
P4 = D
P5 =(A + D)*(E + H)
P6 =(B – D)*(G + H)
P7 =(A – C)*(E + F) - 回到P2:我们在那里有H,并且它在X矩阵中的相邻元素是D,因为X是行矩阵,所以我们在X中选择一个行,这样D就不会出现,我们找到AB列,因此将H乘以(A + B)
因此,最后P2 =(A + B)* H - 回到P3:我们在那里有E,并且它在X矩阵中的相邻元素是A,因为X是行矩阵,所以我们在X中选择一个行,这样A就不会出现,我们找到CD列,所以将E乘以(C + D)
因此,最后P3 =(C + D)* E
P1 = A *(F – H)
P2 = H *(A + B)
P3 = E *(C + D)
P4 = D
P5 =(A + D)*(E + H)
P6 =(B – D)*(G + H)
P7 =(A – C)*(E + F) - 返回到P4:我们在那里有D,并且它在Y矩阵中的相邻元素是H,因为Y是列矩阵,所以我们在Y中选择一个列以使H不会出现,我们找到GE列,因此将D乘以(G – E)
因此,最后P4 = D *(G – E)我们已经完成了P1 – P7方程,因此现在转到最终矩阵C中的C1 – C4方程:
- 记住计数:在C2上写P1 + P2
- 将P3 + P4写在对角线位置,即C3
- 在第一个位置上写P4 + P5 + P6并减去P2,即C1 = P4 + P5 + P6 – P2
- 在最后的位置用交替的-和+符号写入奇数值,即P1 P3 P5 P7变为
C4 = P1 – P3 + P5 – P7