Strassen 矩阵是一种分而治之的方法,可帮助我们将两个矩阵(大小为 n X n)相乘。
您可以参考链接,首先了解有关施特拉森矩阵的知识:
分而治之|第 5 组(施特拉森矩阵乘法)
但是这种方法需要填充一些方程,所以我会告诉你记住这些的最简单方法:
你只需要记住4条规则:
- AHED(将其学习为“Ahead”)
- 对角线
- 上次 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,我们将使用最后 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)
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
- 在对角线位置即 C3 处写 P3 + P4
- 在第一个位置写 P4 + P5 + P6 并减去 P2,即 C1 = P4 + P5 + P6 – P2
- 在最后一个位置用交替写奇数 – 和 + 符号,即 P1 P3 P5 P7 变为
C4 = P1 – P3 + P5 – P7
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。