Ho appena ricevuto l'incarico di fare questo per i compiti, e ho pensato di avere un'illuminazione epifanica: l'algoritmo di Strassen sacrifica la "larghezza" dei suoi componenti pre-sommatoria per utilizzare meno operazioni in cambio di " componenti "pre-sommatori" più profondi che possono ancora essere usati per estrarre la risposta finale. (Questo non è il modo migliore per dirlo, ma è difficile per me spiegarlo).
Userò l'esempio di moltiplicare due numeri complessi insieme per illustrare il bilancio di " operazioni contro componenti ":
Notatecheutilizziamo4moltiplicazioni,cherisultanoin4componentidelprodotto:
Sinotichei2componentifinalichevogliamo:lepartirealiequelleimmaginariedelnumerocomplesso,sonoinrealtàequazionilineari:sonosommediprodottiinscala.Quindiabbiamoachefarecondueoperazioniqui:addizioneemoltiplicazione.
Ilfattoècheinostri4componentidelprodottopossonorappresentareinostri2componentifinalisesemplicementeaggiungiamoosottraiinostricomponenti:
Mainostriultimi2componentipossonoessererappresentaticomesommediprodotti.Eccocosamièvenutoinmente:
Seriesciavedere,inrealtàabbiamosolobisognodi3distinticomponentidelprodottoperrealizzareinostriultimidue:
Maaspetta!Ciascunadelleletteremaiuscoleèdiperséunprodotto!Mailproblemaèchesappiamochepossiamogenerare(A+B+C+D)da(a+b)(c+d),cheèsolounamoltiplicazione.
Quindi,allafine,ilnostroalgoritmoèottimizzatoperutilizzaremeno,macomponenti"più grassi", in cui scambiamo la quantità di moltiplicazioni per più operazioni di somma.
Parte di ciò che abilita questa proprietà distributiva, che consente ad A (B + C) di essere equivalente a (AB + AC). Osserva come il primo può essere calcolato usando 1 add e 1 operazione multipla, mentre il secondo richiede 2 moltiplicazioni e 1 somma.
L'algoritmo di Strassen è un'estensione dell'ottimizzazione applicata ai prodotti a numero complesso, eccetto che ci sono più termini di prodotto target e possibili più componenti di prodotto che possiamo usare per ottenere quei termini. Per una matrice 2x2, l'algoritmo di Strassen trasforma un algoritmo che ha bisogno di 8 moltiplicazioni per uno che richiede 7 moltiplicazioni e sfrutta la proprietà distributiva per "unire" due moltiplicazioni in un'unica operazione, e invece toglie il nuovo nodo "più grasso" per estrarne una termine del prodotto o altro, ecc.
Un buon esempio: per ottenere (-1) e (2) e (5), puoi pensarci come (-1), (2), (5), oppure puoi pensarci come ( 2-3), (2), (2 + 3). Le seconde operazioni usano numeri meno distinti, però. Il problema è che il numero di numeri distinti equivale al numero di componenti del prodotto che è necessario calcolare per la moltiplicazione della matrice. Semplicemente ottimizziamo per questo per trovare una certa vista delle operazioni sottostanti che sfruttano gli output isomorfi usando una variazione diversa attraverso la proprietà distributiva.
Forse questo potrebbe essere collegato alla topologia in qualche modo? Questo è solo il modo in cui il mio laico lo capisce.
Modifica: ecco una foto delle mie note che ho disegnato nel processo di rendere la spiegazione del numero complesso: