A Strassen-algoritmus négyzetes mátrixok szorzását a klasszikus mátrixszorzásnál kevesebb szorzással oldja meg. 1969-ben írta le Volker Strassen német matematikus.
2×2-es mátrixok klasszikus szorzása a következőképpen valósítható meg. Legyen
a két összeszorzandó mátrix. A szorzás eredménye a
mátrix, ahol
Strassen ötlete a mátrix kiszámítására az, hogy a fenti 8 szorzás helyett 7-et használjon. Ha
akkor egyszerű számítással bizonyítható, hogy
Ebben az esetben az összeadások száma viszont 18-ra nő.
Legyen . Felosztjuk a mátrixokat típusú mátrixokra, és alkalmazzuk Strassen módszerét ezen mátrixok szorzására is.
Ezt a felbontást addig végezzük, ameddig csak lehet, és minden esetben alkalmazzuk a Strassen elképzelését mátrixok szorzására, függetlenül attól, hogy elemei mátrixok vagy számok.
Ha , akkor legyen a szorzások száma, pedig az összeadások száma.
Felírhatjuk a következő rekurzív összefüggéseket
Ennek megoldása
(A itt a kettes alapú logaritmust jelöli.)
A klasszikus mátrixszorzás esetében a szorzások száma , a Strassen-algoritmus esetében, ha , akkor a szorzások száma lecsökkenthető -re. Ez az eredmény elméleti szempontból fontos, mivel a kitevő értékét 3 alá csökkentette.
Hasonló módon számítható ki az összeadások száma
Innen
A klasszikus mátrixszorzás esetében az összeadások száma .
Ma már létezik ennél is gyorsabb algoritmus, az ún. Coppersmith–Winograd-algoritmus, amely kb. szorzást igényel.[1]