Beim Strassen-Algorithmus werden zur Berechnung des Produkts zweier Matrizen und B die Matrizen A und B in 2 × 2- Blockmatrizen unterteilt, und der Algorithmus berechnet rekursiv 7- Blockmatrix-Matrix-Produkte im Gegensatz zu einer naiven 8- Blockmatrix. Matrixprodukte, dh wenn wir C = A B wollen , wobei
A = [ A 1 , 1 A 1 , 2 A 2 , 1 A 2 , 2EINBEINB2 × 278C = A B
dann haben wir
C 1 , 1 = A 1 , 1 B 1 , 1 + A 1
A = [ A1 , 1EIN2 , 1EIN1 , 2EIN2 , 2] , B = [ B1 , 1B2 , 1B1 , 2B2 , 2] , C = [ C1 , 1C2 , 1C1 , 2C2 , 2]
,
die erfordert
8Multiplikationen. Stattdessen berechnen wir in Strassen
M 1 :=( A 1 , 1 + A 2 , 2 )( B 1 , 1 + B 2 , 2 )C1 , 1= A1, 1B1 , 1+A1, 2B2 , 1C1, 2=A1 , 1B1 ,2+A1 , 2B2,2C2 ,1=A2,1B1,1+A2 ,2B2 , 1C2 ,2=A2 , 1B1 ,2+A2 , 2B2 , 2
8
und man erhält
C i , j unter Verwendung von
M k als
C 1 , 1 = M 1 + M 4 - M 5 + M 7M1: = ( A1 , 1+ A2 , 2) ( B1 , 1+ B2 , 2)M2: = ( A2 , 1+ A2 , 2) B1 , 1M3: = A1 , 1( B1 , 2- B2 , 2)M4: = A2 , 2( B2 , 1- B1 , 1)M5: = ( A1 , 1+ A1 , 2) B2 , 2M6: = ( A2 , 1- A1 , 1) ( B1 , 1+ B1 , 2)M7: = ( A1 , 2- A2 , 2) ( B2 , 1+ B2 , 2)
Cich , jMk
Die Wahl der Matrizen
M k erscheint mir jedoch willkürlich. Gibt es ein größeres Bild darüber, warum wir diese spezifischen Produkte der Untermatrizen von
A und
B auswählen? Außerdem würde ich erwarten, dass
M k A i , j und
B i , j symmetrischeinbezieht, was hier nicht der Fall zu sein scheint. Zum Beispiel haben wir
M 2 :=C1 , 1= M1+ M4- M5+ M7C1 , 2= M3+ M5C2 , 1= M2+ M4C2 , 2= M1- M2+ M3+ M6
MkEINBMkEINich , jBich , jM2: = ( A2 , 1+ A2 , 2) B1 , 1EIN1 , 1( B1 , 2+ B2 , 2)Mk
Ich würde mich freuen, wenn jemand Licht ins Dunkel bringen könnte.