La
moltiplicazione tra matrici costituisce un'operazione fondamentale in molte applicazioni di calcolo numerico (si pensi ad esempio alla statistica e ai modelli meteorologici), al punto che l'utilizzo di un algoritmo efficiente e veloce per la sua esecuzione consente di risparmiare tempo in termini di impiego della CPU.
L'algoritmo classico di moltiplicazione delle righe per colonne di due matrici quadrate di
n elementi è semplice da implementare, in quanto prevede solamente l'esecuzione di tre cicli annidati, ma richiede un numero di moltiplicazioni pari a
n3.
Tuttavia, l'idea secondo la quale la moltiplicazione tra matrici potesse essere realizzata in un tempo quadratico (o quasi), ossia
n2, ha portato alla definizione di nuovi algoritmi di calcolo, meno intuitivi di quello classico, ma più veloci. Ciascuno di questi algoritmi prende come riferimento la moltiplicazione tra matrici quadrate di dimensione 2x2, in quanto le operazioni tra matrici di dimensioni maggiori possono sempre essere scomposte in operazioni ricorsive tra blocchi di dimensioni 2x2.
Il primo di questi algoritmi, sviluppato nel 1969 da
Volker Strassen, consentì di ridurre il numero di moltiplicazioni da 8 a 7, aumentando d'altra parte il numero di addizioni, riuscendo tuttavia a ottenere un ordine dell'algoritmo di
n2807. Sebbene il miglioramento introdotto da questo algoritmo rispetto a quello classico sia lieve e il suo impiego nella pratica sia limitato solamente a matrici di dimensioni non troppo elevate, l'importanza di questo algoritmo risiede nel fatto di aver dimostrato che l'approccio classico di esecuzione della moltiplicazione tra matrici, fino ad allora considerato l'unico possibile, non rappresentava il limite minimo raggiungibile per la complessità dell'algoritmo.
Dopo numerosi altri lievi miglioramenti, un nuovo passo in avanti fu realizzato nel 1990, grazie a un algoritmo sviluppato da
Coppersmith e Winograd, che permise di raggiungere il nuovo ordine di grandezza di
n2376, tuttora considerato il
record di velocità di esecuzione.
Tuttavia, a vent'anni di distanza dal lavoro di
Coppersmith e Winograd, un
lavoro pubblicato da
Virginia Vassilevska Williams dell'Università di Berkeley ha dimostrato l'elaborazione di un nuovo algoritmo, che ha portato l'ordine di complessità a
n2373, sfruttando l'applicazione iterativa dell'algoritmo per un numero di volte pari a otto.
Anche in questo caso, come già visto nell'algoritmo di
Strassen, l'importanza di questo nuovo algoritmo è essenzialmente teorica, in quanto la sua applicabilità è praticamente nulla, dal momento che la complessità di implementazione nel caso delle dimensioni delle matrici comunemente utilizzate sarebbe troppo elevata.