📜  记住施特拉森矩阵方程的简单方法

📅  最后修改于: 2021-09-16 10:58:24             🧑  作者: Mango

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

您可以参考链接,首先了解有关施特拉森矩阵的知识:
分而治之|第 5 组(施特拉森矩阵乘法)

但是这种方法需要填充一些方程,所以我会告诉你记住这些的最简单方法:
stressen_formula_new_new

你只需要记住4条规则:

  • AHED(将其学习为“Ahead”)
  • 对角线
  • 上次 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,我们将使用最后 CR 规则,即 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
  • 在对角线位置即 C3 处写 P3 + P4
  • 在第一个位置写 P4 + P5 + P6 并减去 P2,即 C1 = P4 + P5 + P6 – P2
  • 在最后一个位置用交替写奇数 – 和 + 符号,即 P1 P3 P5 P7 变为
    C4 = P1 – P3 + P5 – P7

    S5

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程。