Рассмотрим умножение двух матриц 2x2 следующим образом:
A B * E F = AE+BG AF+BH
C D G H CE+DG CF+DH
Очевидный способ вычислить правую сторону - просто сделать 8 умножений и 4 сложения. Но представьте, что умножения намного дороже, чем сложения, поэтому мы хотим уменьшить количество умножений, если это вообще возможно. Штрассен использует трюк для вычисления правой части с одним меньшим множителем и намного большим количеством сложений (и некоторыми вычитаниями).
Вот 7 умножений:
M1 = (A + D) * (E + H) = AE + AH + DE + DH
M2 = (A + B) * H = AH + BH
M3 = (C + D) * E = CE + DE
M4 = A * (F - H) = AF - AH
M5 = D * (G - E) = DG - DE
M6 = (C - A) * (E + F) = CE + CF - AE - AF
M7 = (B - D) * (G + H) = BG + BH - DG - DH
Итак, чтобы вычислить AE + BG, начните с M1 + M7 (который дает нам термины AE и BG), затем добавьте / вычтите некоторые из других M, пока AE + BG не станет всем, что нам осталось. Чудесным образом М выбираются так, чтобы M1 + M7-M2 + M5 работал. То же самое с другими 3 необходимыми результатами.
Теперь просто осознайте, что это работает не только для матриц 2x2, но и для матриц любого (четного) размера, где A..H являются подматрицами.