Strassenův algoritmus – blokové násobení matic

Vizualizace dělení na bloky A11, A12, A21, A22 a B11, …, sedm mezimatic M1…M7 a rekonstrukce výsledných podmatic R11…R22. + Interaktivní příklad s maticemi 4×4 (bloky 2×2).

Vstupní matice A (4×4)

Rozdělení na bloky 2×2: A = \[ [A11, A12]; [A21, A22] \]

Vstupní matice B (4×4)

Rozdělení na bloky 2×2: B = \[ [B11, B12]; [B21, B22] \]

Bloková vizualizace

A (4×4)
A11
A12
A21
A22
B (4×4)
B11
B12
B21
B22

Strassen – 7 mezimatic

Operace probíhají na úrovni bloků (zde 2×2). Násobení je maticové 2×2; sčítání/odčítání je po prvcích.

M1 = (A11 + A22)(B11 + B22)
M2 = (A21 + A22)B11
M3 = A11(B12 − B22)
M4 = A22(B21 − B11)
M5 = (A11 + A12)B22
M6 = (A21 − A11)(B11 + B12)
M7 = (A12 − A22)(B21 + B22)

Rekonstrukce výsledku R = A·B

R11 = M1 + M4 − M5 + M7
R12 = M3 + M5
R21 = M2 + M4
R22 = M1 − M2 + M3 + M6

Výsledek (4×4)

Tento 4×4 výsledek vznikne složením bloků R11, R12, R21, R22.

Poznámky