Strassen-Algorithmus

Strassen-Algorithmus

Der Strassen-Algorithmus (benannt nach dem deutschen Mathematiker Volker Strassen) ist ein Algorithmus aus der Linearen Algebra und wird zur Matrizenmultiplikation verwendet. Der Strassen-Algorithmus realisiert die Matrizenmultiplikation asymptotisch effizienter als das Standardverfahren und ist in der Praxis für große Matrizen schneller.

Inhaltsverzeichnis

Der Algorithmus

Vereinfachend gehen wir von zwei quadratischen Matrizen A,B über einem Ring R aus. Des Weiteren haben A und B Spalten- und Zeilendimension n=2k und C sei das Produkt von A und B.

C = A \cdot B \qquad A,B,C \in R^{2^k \times 2^k}

Nun kann man A,B,C auch als Blockmatrizen betrachten:


A=
\begin{pmatrix} 
    A_{11} & A_{12} \\ 
    A_{21} & A_{22} 
\end{pmatrix} 
,\qquad B=
\begin{pmatrix} 
    B_{11} & B_{12} \\ 
    B_{21} & B_{22} 
\end{pmatrix} 
,\qquad C=
\begin{pmatrix} 
    C_{11} & C_{12} \\ 
    C_{21} & C_{22} 
\end{pmatrix} 
,\qquad A_{ij},B_{ij},C_{ij} \in R^{2^{k-1} \times 2^{k-1}}

Nun gilt:

C_{1,1} = A_{1,1}\cdot B_{1,1} + A_{1,2}\cdot B_{2,1}
C_{1,2} = A_{1,1}\cdot B_{1,2} + A_{1,2}\cdot B_{2,2}
C_{2,1} = A_{2,1}\cdot B_{1,1} + A_{2,2}\cdot B_{2,1}
C_{2,2} = A_{2,1}\cdot B_{1,2} + A_{2,2}\cdot B_{2,2}

Berechnet man die Cij mit diesen Formeln, so benötigt man 8 (teure) Matrizenmultiplikationen. Um die Anzahl der Multiplikationen zu reduzieren, berechnet man folgende Hilfsmatrizen:

M_{1} := (A_{1,1} + A_{2,2})\cdot (B_{1,1} + B_{2,2})
M_{2} := (A_{2,1} + A_{2,2})\cdot B_{1,1}
M_{3} := A_{1,1} \cdot(B_{1,2} - B_{2,2})
M_{4} := A_{2,2} \cdot(B_{2,1} - B_{1,1})
M_{5} := (A_{1,1} + A_{1,2})\cdot B_{2,2}
M_{6} := (A_{2,1} - A_{1,1}) \cdot(B_{1,1} + B_{1,2})
M_{7} := (A_{1,2} - A_{2,2}) \cdot(B_{2,1} + B_{2,2})

Zur Berechnung der Mi benötigt man nur 7 Multiplikationen und nun kann man die Cij nur durch Additionen (und Subtraktionen) berechnen:

C1,1 = M1 + M4M5 + M7
C1,2 = M3 + M5
C2,1 = M2 + M4
C2,2 = M1M2 + M3 + M6

Diese Idee verwendet man nun auch für die Multiplikationen zur Berechnung der Mi und iteriert das ganze so lange, bis man nur noch Skalare multipliziert.

Bei der praktischen Implementierung iteriert man für gewöhnlich nur so lange, bis die Matrixdimension so klein ist, dass der Standard-Algorithmus zur Matrizenmultiplikation effizienter ist, und verwendet dann diesen (Cut-Off).

Aufwand

Die Standard-Matrixmultiplikation benötigt

n^{\log_{2}8}= n^3

Multiplikationen der Elemente des Ringes R. Wir ignorieren die benötigten Additionen, weil sie, abhängig von R, in Computerimplementationen viel schneller sein können als die Multiplikationen. Mit dem Strassen-Algorithmus können wir die Anzahl der Multiplikationen auf

n^{\log_{2}7}\approx n^{2,807}

reduzieren. Die Reduktion der Anzahl der Multiplikationen bezahlt man allerdings mit einer Verringerung der numerischen Stabilität.

Siehe auch

Coppersmith–Winograd Algorithmus bzw. englischer Artikel: Coppersmith–Winograd algorithm

Literatur

  • Volker Strassen: Gaussian Elimination is not Optimal, Numer. Math. 13, S. 354-356, 1969

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Schönhage-Strassen-Algorithmus — Der Schönhage Strassen Algorithmus ist ein Algorithmus zur Multiplikation zweier n stelliger ganzer Zahlen. Er wurde 1971 von Arnold Schönhage und Volker Strassen entwickelt.[1] Der Algorithmus basiert auf einer „superschnellen“ Variante der… …   Deutsch Wikipedia

  • Strassen — Den Namen Strassen oder Straßen tragen Strassen (Tirol), Gemeinde in Tirol (Österreich) Strassen (Gemeinde Bad Aussee), Katastralgemeinde von Bad Aussee in der Steiermark (Österreich) Strassen (Gorlosen), Ortsteil der Gemeinde Gorlosen in… …   Deutsch Wikipedia

  • Schönhage-Strassen — Der Schönhage Strassen Algorithmus ist ein Algorithmus zur Multiplikation zweier n stelliger ganzer Zahlen. Er wurde 1971 von Arnold Schönhage und Volker Strassen entwickelt.[1] Der Algorithmus basiert auf einer „superschnellen“ Variante der… …   Deutsch Wikipedia

  • Zur Strassen — Den Namen Strassen tragen Strassen, Gemeinde in Tirol (Österreich) Strassen, Katastralgemeinde von Bad Aussee in der Steiermark (Österreich) Strassen, Ortsteil der Gemeinde Gorlosen in Mecklenburg Vorpommern (Deutschland) Strassen, die Gemeinde… …   Deutsch Wikipedia

  • Volker Strassen — (2009) Volker Strassen (* 29. April 1936 in Düsseldorf Gerresheim) ist ein deutscher Mathematiker. Inhaltsverzeichnis 1 …   Deutsch Wikipedia

  • Euklidscher Algorithmus — Der euklidische Algorithmus ist ein Algorithmus aus dem mathematischen Teilgebiet der Zahlentheorie. Mit ihm lässt sich der größte gemeinsame Teiler zweier natürlicher Zahlen berechnen. Das Verfahren ist nach dem griechischen Mathematiker Euklid… …   Deutsch Wikipedia

  • Euklidischer Algorithmus — Der euklidische Algorithmus ist ein Algorithmus aus dem mathematischen Teilgebiet der Zahlentheorie. Mit ihm lässt sich der größte gemeinsame Teiler zweier natürlicher Zahlen berechnen. Das Verfahren ist nach dem griechischen Mathematiker Euklid… …   Deutsch Wikipedia

  • Karatsuba-Algorithmus — Der Karatsuba Algorithmus (1960) ist ein Algorithmus zur Multiplikation zweier ganzer Zahlen. Mit einer Laufzeitkomplexität von ist er deutlich schneller als der naive Algorithmus nach der Schulmethode. Dieser (und auch dessen implizite… …   Deutsch Wikipedia

  • Toom-Cook-Algorithmus — Der Toom Cook Algorithmus ist ein effizienter Algorithmus zur Multiplikation zweier ganzer Zahlen, der nach dem Prinzip Teile und herrsche arbeitet. Er wurde zuerst von Andrei Toom beschrieben, später durch Cook verbessert und in dessen… …   Deutsch Wikipedia

  • Soloway-Strassen-Test — Der Solovay Strassen Test (nach Robert Solovay und Volker Strassen) ist ein probabilistischer Primzahltest. Der Test prüft für eine ungerade Zahl n, ob sie eine Primzahl oder das Produkt mehrerer Faktoren ist. Für den Fall, dass der Test als… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”