Algorisme de Strassen

En àlgebra lineal, l'algorisme de Strassen, que rep el nom de Volker Strassen, és un algorisme per a la multiplicació de matrius.[1] És més ràpid que l'algorisme de multiplicació de matrius estàndard per a matrius grans, amb una complexitat asimptòtica millor, tot i que l'algorisme ingenu és sovint millor per a matrius més petites. L'algorisme de Strassen és més lent que els algorismes coneguts més ràpids per a matrius extremadament grans, però aquests algorismes galàctics no són útils a la pràctica, ja que són molt més lents per a matrius de mida pràctica. Per a matrius petites existeixen algorismes encara més ràpids.
L'algorisme de Strassen funciona per a qualsevol anell, com ara més/multiplicar, però no tots els semianells, com ara min-plus o àlgebra booleana, on l'algorisme ingenu encara funciona, i l'anomenada multiplicació de matrius combinatòria.[2]
Volker Strassen va publicar per primera vegada aquest algorisme el 1969 i així va demostrar que el L'algorisme general de multiplicació de matrius no era òptim.[3] La publicació de l'algoritme de Strassen va donar lloc a més investigacions sobre la multiplicació de matrius que van conduir tant a límits inferiors asimptòticament com a límits superiors computacionals millorats.
| Standard algorithm | Strassen algorithm | ||||||
| 1 | |||||||
| 2 | |||||||
| 3 | |||||||
| 4 | |||||||
| 5 | |||||||
| 6 | |||||||
| 7 | |||||||
| 8 | |||||||
Sumar matrius de mida només requereix operacions, mentre que la multiplicació és substancialment més cara (tradicionalment operacions de suma o multiplicació).El nombre d'addicions i multiplicacions requerides en l'algorisme de Strassen es pot calcular de la següent manera: sigui el nombre d'operacions per a a matriu. Aleshores, mitjançant l'aplicació recursiva de l'algorisme de Strassen, ho veiem , per alguna constant que depèn del nombre d'addicions realitzades a cada aplicació de l'algorisme. Per tant, , és a dir, la complexitat asimptòtica per multiplicar matrius de mida utilitzant l'algorisme de Strassen és . La reducció del nombre d'operacions aritmètiques, però, té el preu d'una estabilitat numèrica una mica reduïda,[4] i l'algoritme també requereix molt més memòria en comparació amb l'algorisme ingenu.