Dalam algoritma Strassen, untuk menghitung produk dari dua matriks dan B , matriks A dan B dibagi menjadi 2 × 2 matriks blok dan algoritma menghasilkan perhitungan secara rekursif 7 blok produk matriks-matriks sebagai lawan dari 8 blok matriks- naif produk matriks, yaitu, jika kita ingin C = A B , di mana
A = [ A 1 , 1 A 1 , 2 A 2 , 1 A 2 , 2ABAB2×278C=AB
maka kita memiliki
C 1 , 1 = A 1 , 1 B 1 , 1 + A 1
A=[A1,1A2,1A1,2A2,2] , B=[B1,1B2,1B1,2B2,2] , C=[C1,1C2,1C1,2C2,2]
yang membutuhkan
8perkalian. Sebagai gantinya di Strassen, kami menghitung
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
dan dapatkan
C i , j menggunakan
M k sebagai
C 1 , 1 = M 1 + M 4 - M 5 + M 7M.1: = ( A1 , 1+ A2 , 2) ( B1 , 1+ B2 , 2)M.2: = ( A2 , 1+ A2 , 2) B1 , 1M.3: = A1 , 1( B1 , 2- B2 , 2)M.4: = A2 , 2( B2 , 1- B1 , 1)M.5: = ( A1 , 1+ A1 , 2) B2 , 2M.6: = ( A2 , 1- A1 , 1) ( B1 , 1+ B1 , 2)M.7: = ( A1 , 2- A2 , 2) ( B2 , 1+ B2 , 2)
Csaya , jM.k
Namun, pilihan matriks
M k tampak sewenang-wenang bagi saya. Apakah ada gambaran yang lebih besar mengapa kami memilih produk-produk khusus dari sub-matriks
A dan
B ? Juga, saya harapkan
M k 's untuk melibatkan
A i , j ' s dan
B i , j 's secara simetris, yang tampaknya tidak menjadi kasus di sini. Misalnya, kami memiliki
M 2 :=C1 , 1= M1+ M.4- M.5+ M.7C1 , 2= M3+ M.5C2 , 1= M2+ M.4C2 , 2= M1- M.2+ M.3+ M.6
M.kSEBUAHBM.kSEBUAHsaya , jBsaya , jM.2: = ( A2 , 1+ A2 , 2) B1 , 1SEBUAH1 , 1( B1 , 2+ B2 , 2)M.k
Saya akan sangat menghargai jika seseorang dapat menjelaskan hal ini.