Strassen-Algorithmus

Aus MWiki
Wechseln zu: Navigation, Suche

Strassen-Algorithmus für eine symmetrische Matrix:

Für eine symmetrische Matrix [math]\displaystyle{ A \in \mathbb{C}^{n \times n} }[/math] mit [math]\displaystyle{ n \in \mathbb{N}^* }[/math] beträgt die Laufzeit [math]\displaystyle{ T_s(n) }[/math] des Strassen-Algorithmus für das Matrixprodukt [math]\displaystyle{ A^2 }[/math] circa die Hälfte von der des Originalalgorithmus in [math]\displaystyle{ \mathcal{O}(n^{(_2 7)}) }[/math].

Beweis: Mit [math]\displaystyle{ A := \begin{pmatrix} A_{11} & A_{12} \\ A_{12} & A_{22} \end{pmatrix} }[/math] gilt [math]\displaystyle{ A^TA = \begin{pmatrix} A_{11}^TA_{11}+A_{12}^TA_{12} & A_{11}^TA_{12}+A_{12}^TA_{22} \\ A_{12}^TA_{11}+A_{22}^TA_{12} & A_{12}^TA_{12}+A_{22}^TA_{22} \end{pmatrix} }[/math] und [math]\displaystyle{ T_s(2n) = 3T_s(n) + 2n^{(_2 7)} }[/math]. Also [math]\displaystyle{ T_s(n) = 3T_s(n/2) + 2(n/2)^{(_2 7)} }[/math] bzw. [math]\displaystyle{ T_s(n/2) = 3T_s(n/4) + 2(n/4)^{(_2 7)} }[/math].

Die geometrische Reihe liefert wegen [math]\displaystyle{ T_s(1) = 1 }[/math]: [math]\displaystyle{ T_s(n) = 27T_s(n/8) + 2/7n^{(_2 7)}(1+3/7 + (3/7)^2 + ...) = 3^{(_2n)} + 2/7n^{(_2 7)} (1-(3/7)^{(_2n)})/(1-3/7) }[/math] [math]\displaystyle{ = n^{(_2 3)} + \hat{2}(n^{(_2 7)}-n^{(_2 3)}) = \hat{2} (n^{(_2 3)} + n^{(_2 7)}) }[/math].[math]\displaystyle{ \square }[/math]

Strassen-Algorithmus für eine quadratrische Matrix:

Für eine quadratrische Matrix [math]\displaystyle{ A \in \mathbb{C}^{n \times n} }[/math] mit [math]\displaystyle{ n \in \mathbb{N}^* }[/math] beträgt die Laufzeit [math]\displaystyle{ T_q(n) }[/math] des Strassen-Algorithmus für das Matrixprodukt [math]\displaystyle{ A^TA }[/math] circa [math]\displaystyle{ 4/7 }[/math] von der des Originalalgorithmus in [math]\displaystyle{ \mathcal{O}(n^{(_2 7)}) }[/math].

Beweis: Mit [math]\displaystyle{ A := \begin{pmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \end{pmatrix} }[/math] gilt [math]\displaystyle{ A^TA = \begin{pmatrix} A_{11}^TA_{11}+A_{21}^TA_{21} & A_{11}^TA_{12}+A_{21}^TA_{22} \\ A_{12}^TA_{11}+A_{22}^TA_{21} & A_{12}^TA_{12}+A_{22}^TA_{22} \end{pmatrix} }[/math] und [math]\displaystyle{ T_q(2n) = 4T_s(n) + 2n^{(_2 7)} }[/math] bzw. [math]\displaystyle{ T_q(n) = 4T_s(n/2) + 2/7n^{(_2 7)} = 2/3n^{(_2 3)} + 4/7n^{(_2 7)}.\square }[/math]

Neuer Algorithmus für zwei symmetrische Matrizen:

Für zwei symmetrische Matrizen [math]\displaystyle{ A, B \in \mathbb{C}^{n \times n} }[/math] mit [math]\displaystyle{ n \in \mathbb{N}^* }[/math] beträgt die Laufzeit für das Matrixprodukt [math]\displaystyle{ AB }[/math] des neuen Algorithmus [math]\displaystyle{ T_z(n) = \mathcal{O}(n^{(_2 6)}) }[/math].

Beweis: Mit [math]\displaystyle{ B := \begin{pmatrix} B_{11} & B_{12} \\ B_{12} & B_{22} \end{pmatrix} }[/math] gilt [math]\displaystyle{ A^TB = \begin{pmatrix} A_{11}^TB_{11}+A_{12}^TB_{12} & A_{11}^TB_{12}+A_{12}^TB_{22} \\ A_{12}^TB_{11}+A_{22}^TB_{12} & A_{12}^TB_{12}+A_{22}^TB_{22} \end{pmatrix} =: C }[/math]. Wird

[math]\displaystyle{ M_{1} := A_{11} \cdot (B_{11} + B_{12}) }[/math]
[math]\displaystyle{ M_{2} := A_{22} \cdot (B_{12} + B_{22}) }[/math]
[math]\displaystyle{ M_{3} := A_{12} \cdot (B_{22} - B_{11}) }[/math]
[math]\displaystyle{ M_{4} := (A_{12} - A_{11})\cdot B_{12} }[/math]
[math]\displaystyle{ M_{5} := (A_{12} - A_{22})\cdot B_{22} }[/math]
[math]\displaystyle{ M_{6} := (A_{12} - A_{11}) \cdot B_{11} }[/math]

gesetzt, so gilt

[math]\displaystyle{ C_{11} = M_{1} + M_{4} }[/math]
[math]\displaystyle{ C_{12} = M_{1} + M_{3} + M_{6} }[/math]
[math]\displaystyle{ C_{21} = M_{2} - M_{3} + M_{5} }[/math]
[math]\displaystyle{ C_{22} = C_{12} + M_{4} - M_{5}.\square }[/math]

Neuer Algorithmus für eine symmetrische Matrix:

Für eine symmetrische Matrix [math]\displaystyle{ A \in \mathbb{C}^{n \times n} }[/math] mit [math]\displaystyle{ n \in \mathbb{N}^* }[/math] beträgt die Laufzeit [math]\displaystyle{ T_p(n) }[/math] des neuen Algorithmus für das Matrixprodukt [math]\displaystyle{ A^2 }[/math] nach analoger Rechnung wie oben circa [math]\displaystyle{ 2/3 }[/math] von [math]\displaystyle{ T_z(n).\square }[/math]

Neuer Algorithmus für eine quadratrische Matrix:

Für eine quadratrische Matrix [math]\displaystyle{ A \in \mathbb{C}^{n \times n} }[/math] mit [math]\displaystyle{ n \in \mathbb{N}^* }[/math] beträgt die Laufzeit [math]\displaystyle{ T_r(n) }[/math] des neuen Algorithmus für das Matrixprodukt [math]\displaystyle{ A^TA }[/math] circa [math]\displaystyle{ 2/7 }[/math] von der des Strassen-Algorithmus (s. o.) in [math]\displaystyle{ \mathcal{O}(n^{(_2 7)}).\square }[/math]

Siehe auch

Liste mathematischer Symbole