📜  记住Strassen矩阵方程的简单方法

📅  最后修改于: 2021-05-04 15:57:02             🧑  作者: Mango

Strassen矩阵是一种分而治之的方法,可以帮助我们将两个矩阵(大小为n X n)相乘。

您可以首先参考该链接,以获取有关Strassen矩阵的知识:
分而治之|集合5(Strassen的矩阵乘法)

但是此方法需要填充一些方程式,因此,我将告诉您记住这些方程式的最简单方法:
Stressen_formula_new_new

您只需要记住4条规则:

  • AHED(作为“未来”学习)
  • 对角线
  • 最后的CR
  • 第一CR

另外,将X视为(行+),将Y视为(列-)矩阵

按照步骤 :

  • 写P1 = A; P2 = H; P3 = E; P4 = D
  • 对于P5,我们将使用对角线规则,即
    (求和矩阵X的对角线元素)*(求和矩阵Y的对角线元素)
    P5 =(A + D)*(E + H)

    S1
    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)

    S2
    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)

    S3
    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

    S4
    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

    S5