Schnelle Matrizenoperationen von Christian Büttner Proseminar Ergänzende Kapitel zu DAP II Informationsquelle: Cormen, Leiserson, Rivest Introduction to algorithm Was erwartet uns? Strassens Algorithmus Lineare Gleichungssysteme Invertieren von Matrizen Symetrisch positiv definite Matrizen Strassens Algorithmus • Warum ein Algorithmus? Matrixoperationen sind wichtig in der Wissenschaft z.B. Strömungsverhalten von Wasser. • Was macht der Algorithmus? Berechnung des Produktes zweier n n Matrizen • Vergleich zum naiven Algorithmus? Der naive Algorithmus benötigt Strassens Algorithmus nur Q( n 3 ) Q(nlg7 ) Q(n 2,81 ) Strassens Algorithmus Der Algorithmus basiert auf der Divide & Conquer Idee. Sei A, B, C matn ( R) und sei a, b, c, d , e, f , g , h mat n ( R) 2 C A* B r s a b e * t u c d f g h Dann ergeben sich die vier Gleichungen r a *e b* f s a* g b*h t c*e d * f u c* g d *h Multiplikation ist nicht Kommutativ ! Strassens Algorithmus Dies liefert einen rekursiven Algorithmus mit Laufzeit n T ( n ) 8 * T ( ) Q( n 2 ) Q( n 3 ) 2 Strassens Algorithmus hingegen liefert: n T (n) 7 * T ( ) Q(n 2 ) Q(n lg(7 ) ) 2 Strassens Algorithmus 1) Eingangsmatrix in n n 2 2 Untermatrizen teilen. 2 2) Mit Q(n ) skalar Additionen/Subtraktionen 14 Matrizen aufstellen n n 2 2 A1 , B1 , A2 , B2 , A3 , B3 , A4 , B4 , A5 , B5 , A6 , B6 , A7 , B7 3) rekursiv Pi Ai * Bi für i 1,...,7 berechnen 4) berechne r,s,t,u durch addieren/subtrahieren der verschiedenen Pi Matrizen Strassens Algorithmus Pi Ai * Bi ( i1 * a i 2 * b i 3 * c i 4 * d ) * ( i1 * e i 2 * f i 3 * g i 4 * h) mit i1 , i 2 , i 3 , i 4 , i1 , i 2 , i 3 , i 4 {1,0,1} und i 1,...,7 1 0 r (a * e bf ) a b c d 0 0 0 0 0 e 1 0 0 f 0 0 0 g 0 0 0 h e a b c d f g h s a* g b*h t c*e d * f u c* g d *h Strassens Algorithmus s P1 P2 Kann man wie folgt darstellen a* g a*h + a*h b*h = a * ( g h) : P1 a* g b*h (a b) * h : P2 Analog kann man mit t P3 P4 verfahren c *e d *e + (c d ) * e : P3 d * f d *e d * ( f e) : P4 = c*e d * f Strassens Algorithmus a * e a * h d * e d * h a * (e h) d * (e h) (a d ) * (e h) P5 P5 P4 P2 a*e d *h d * f b*h Strassens Algorithmus P6 b * f b * h d * f d * h b * ( f h) d * ( f h) (b d ) * ( f h) Nun kann man r wie folgt bestimmen r P5 P4 P2 P6 a * e b * f Strassens Algorithmus Weiter kann man folgendes machen P5 P1 P3 a * e a * g c * e d * h a * e a * g c * e c * g a * (e g ) c * (e g ) ( a c ) * (e g ) u P5 P1 P3 P7 Strassens Algorithmus Beispiel 1 3 8 4 r s * 5 7 6 2 t u 26 10 82 34 P1 1* (4 2) 2 P2 (1 3) * 2 8 P3 (5 7) * 8 96 P4 7 * (6 8) 14 P5 (1 7)(8 2) 80 P6 (3 7) * (6 2) 32 P7 (1 5) * (8 4) 42 s P1 P2 10 t P3 P4 82 r P5 P4 P2 P6 26 u P5 P1 P3 P7 34 Strassens Algorithmus Satz: Sei (R,+,*) ein Ring, dann ist auch(matnn ( R),,*) ein Ring Beweis: Assoziativgesetz bzgl + wird “vererbt”. Neutrales Element ist die Matrix die nur aus dem neutralen Element des Rings R besteht. Oft als 0 bezeichnet Additives inverse ist die Matrix aus den additiven inversen Elementen des Rings R. Kommutativität bzgl. + wird “vererbt”. Strassens Algorithmus a11 a1n b11 b1n c11 c1n * * a a b b c c nn n1 nn n1 nn n1 n n n n aki * bij * clj aki * bij * clj l 1 i 1 l 1 i 1 n n a i 1 l 1 n n ki * bij * clj aki * (bij * clj ) i 1 l 1 n a *b i 1 ki n l 1 ij * clj a11 a1n b11 b1n c11 c1n * * a a b b c c nn n1 nn n1 nn n1 Strassens Algorithmus Anmerkung Binärmatrizen ({0,1},, ) kein Ring Die Definition der Multiplikation C A * B mit A, B, C mat n ({0,1)} n cij aik bkj k 1 Konvertiere die Binärmatrix in die reellen Zahlen und führe Strassens Algorithmus durch. Prüfe ob ein wert ungleich 0 ist, wenn ja ersetze ihn durch 1 Lineare Gleichungssysteme Problemstellung: Ax b mit A mat nn () und x, b n Satz: Ist A invertierbar so gibt es genau eine Lösung Seien x und x' zwei Lösungen Ax Ax' b x ( A1 A) x A1 ( Ax) A1 ( Ax' ) A1 Ax' x' Mögliche Lösung eines LGS: Ax b A 1 Ax A 1b x A 1b Problem: numerisch instabil Lineare Gleichungssysteme LUP-Decomposition PA=LU 1 0 0 * * * 1 0 * PA 0 * * 1 0 0 * P ist Permutationsmatrix L ist linker untere normierte Dreicksmatrix U ist rechte obere Dreiecksmatrix Ax b PAx Pb LUx Pb mit y Ux Ly Pb lösen mit forward substituation Ux y lösen mit backsubstituation Lineare Gleichungssysteme Forward substitution b (1) y1 l21 * y1 ln1 y1 y2 ln 2 y 2 lnn1 yn 1 i 1 y (i ) b (i ) lij y j j 1 yn b ( 2) b ( n ) Lineare Gleichungssysteme Backsubstitution u11x1 u1n xn unn xn yi xi n u j i 1 uij ij xj y1 yn Lineare Gleichungssysteme Beispiel LU-Decomposition 2 3 1 5 6 13 5 19 2 19 10 23 4 10 11 31 2 3 1 5 1 6 13 5 19 3 2 19 10 23 1 4 10 11 31 2 2 3 1 5 3 4 2 4 1 16 9 18 2 4 9 21 0 0 0 2 1 0 0 0 4 1 0 0 1 7 1 0 3 1 5 4 2 4 0 1 2 0 0 3 2 3 1 2 3 4 4 1 1 5 2 4 1 2 7 17 2 3 1 2 3 4 4 1 1 2 1 7 5 4 2 3 Lineare Gleichungssysteme LUP-Decomposition -LU-Decomposition mit Spaltenpivotierung. Betragsgrösstes Element suchen und Zeilen vertauschen und in einem Permutationsvektor speichern => numerisch stabiler und Division durch NULL wird vermieden Laufzeitverhalten ist Q(n³) Matrizen invertieren Was können wir ? Ax b Lösen von linearen Gleichungen auch für verschiedene b Was bringt uns das? A * A1 I A * xi ei Kann man auch für jede Spalte einzeln Lösen mit xi Spalten von A1 für i 1,..., n Matrizen invertieren Zeitaufwand: LUP-Zerlegung Q(n³) Lösen der linearen Gleichung für n Spaltenvektoren n* Q(n²)= Q(n³) => Q(n³) Matrizen invertieren Satz: Sei M(n) die Zeit um zwei nn Matrizen zu multiplizieren und I(n) die Zeit um eine nn Matrix zu invertieren, dann gilt I(n)=Q(M(n)) Beweis: “M(n)=O(I(n))” Seien A,B zwei nn Matrizen. In D 0 0 In 1 D 0 0 A In 0 0 B I n A AB In B 0 I n D lässt sich in O(I(3n)) =O(I(n)) invertieren => M(n)=O(I(n)) Matrizen invertieren “I(n)=O(M(n))” Beweis Idee -erweitern der Matrix mit “Identität, so dass man eine Potenz von 2 erhält -für symetrisch positiv definite Matrizen definiert man einen rekursiven Algorithmus mit Laufzeitverhalten I(n)2I(n/2)+4M(n)+O(n²)= 2I(n/2)+O(M(n))=O(M(n)) Die Matrix ist nicht symetrisch positiv definit Atr * A 1 1 ( A * A) * A A * A tr tr tr 1 * Atr A1 Symmetrisch positive definite Matrizen Definition: Eine symetrisch positiv definite Matrix erfüllt folgende Bedingungen 1) A Atr 2) x tr Ax 0 für x 0 Satz: Jede positiv definite Matrix ist invertierbar Beweis: Sei Ax=0 d.h. die Zeilen der Matrix sind linear abhängig. Dies ist ein Widerspruch zu Eigenschaft 2) Symmetrisch positive definite Matrizen Satz: Ist A symetrisch und positiv definit, so ist jede linke obere Untermatrix symetrisch und positiv definit. Beweis: -symetrisch ist klar A' B x A' x tr ( x ,0) x tr A' x 0 ( x ,0) C D 0 Cx tr Symmetrisch positive definite Matrizen Satz: Ist A eine symetrisch, positiv definite Matrix, dann ist das Schur-komplement auch symetrisch positiv definit Ak B tr A B C 1 tr S C BAk B Definition des Schurkomplemtes Symmetrisch positive definite Matrizen Beweis: Man kann zeigen, dass S symetrisch ist. Wir wollen nur zeigen, dass S positiv definit ist. tr y A B tr tr tr k x Ax y z z B C tr tr tr tr tr y Ak y y B y z By z Cz ( y Ak1 B tr z )tr Ak ( y Ak1 B tr z ) z tr (C BAk1 B tr ) z z tr (C BAk1 B tr ) z z tr Sz 0 q.e.d. Symmetrisch positive definite Matrizen Korollar: Symmetrisch positiv definite Matrizen verursachen bei einer LU-Decompositon nie eine Division durch 0. Beweis: Sei A eine symetrisch positiv definite Matrix. Da jede linke obere Untermatrix positiv definit ist, ist auch das erste Element positiv insbesondere nicht 0. Der erste Schritt der LU-Decomposition erstellt das Schurkomplement. Nun kann man per Induktion zeigen dass alle Pivotelemente ungleich 0 sind. Symmetrisch positive definite Matrizen Gegeben sei eine Menge von Punkten. Nun möchte man ein Polynom des Grades n finden, so dass die Kurve möglichst nah an allen Punkten vorbei geht. ( x1 , y1 ), ( x2 , y2 ),..., ( xm , ym ) yi F ( xi ) i für i 1,..., m Symmetrisch positive definite Matrizen Was ist F ( xi ) ? n F ( xi ) c j f j ( x) j 1 Was ist nun z.B. Wobei n die Anzahl der Basisfunktionen angibt. f j (x ) ? f j ( x) x j 1 F ( x) c1 c2 x ... cn x n 1 f1 ( x1 ) f (x ) Ac 1 2 f (x ) 1 m f 2 ( x1 ) f 2 ( x2 ) f 2 ( xm ) f n ( x1 ) c1 F ( x1 ) f n ( x2 ) c2 F ( x2 ) f n ( xm ) cn F ( xm ) Symmetrisch positive definite Matrizen Nun wollen wir den Fehler dabei betrachten Ac y m i2 i 1 2 d 1 2 Ac y aij c j yi i 1 j 1 2 m n n 2 aij c j yi aik 0 dck i 1 j 1 äquivalent zu 2 m ( Ac y ) tr A 0 Atr ( Ac y ) 0 Atr Ac Atr y c (( Atr A) 1 Atr ) y 2 Symmetrisch positive definite Matrizen Beispiel: Die Punkte (-1,2),(1,1),(2,1),(3,0),(5,3) sollen durch eine quadratische Kurve approximiert werden. F ( x) c1 c2 x c3 x 2 1 1 A 1 1 1 x1 x2 x3 x4 x5 x12 1 1 1 2 x2 1 1 1 x32 1 2 4 2 x4 1 3 9 x52 1 5 25 0,300 0,200 0,100 0,100 0,500 tr 1 tr ( A A) A 0,388 0.093 0,190 0,193 0.,088 0,060 0,036 0,048 0,036 0,060 1,200 ( Atr A) 1 Atr y c 0,757 0,214 F ( x) 1,2 0,757 x 0,214 x 2 Ich habe fertig!