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!