9. Matrixmultiplikation ` a la Strassen
Betrachte das Produkt zweier 2 × 2-Matrizen:
a 11 a 12 a 21 a 22
·
b 11 b 12 b 21 b 22
=
c 11 c 12 c 21 c 22
; c ij = a i1 b 1j + a i2 b 2j
Man beachte, dass diese und die folgenden Formeln nicht die
Kommutativit¨ at der Multiplikation voraussetzen. Sie gelten also
auch, falls die a ij , b ij , c ij eigentlich n × n-Matrizen A ij , B ij , C ij
sind (jeweils i, j ∈ {1, 2}).
Bilde:
m 1 := (a 12 − a 22 )(b 21 + b 22 ) m 2 := (a 11 + a 22 )(b 11 + b 22 ) m 3 := (a 11 − a 21 )(b 11 + b 12 ) m 4 := (a 11 + a 12 )b 22
m 5 := a 11 (b 12 − b 22 ) m 6 := a 22 (b 21 − b 11 ) m 7 := (a 21 + a 22 )b 11
Dann gilt:
c 11 := m 1 + m 2 − m 4 + m 6
c 12 := m 4 + m 5 c 21 := m 6 + m 7
c 22 := m 2 − m 3 + m 5 − m 7
Sei n = 2 k und M (n) die Anzahl arithmetischer Operationen (Mult, Add, Sub), die Strassens Algorithmus bei n × n Matrizen ben¨ otigt:
M (1) = 1
M(n) = 7M n
2
+ 18 n
2 2
Expansion dieser Rekursionsgleichung ⇒
M(n) = 7 k+1 − 6n 2 = 7 · 2 k log
27 − 6n 2
= 7n log
27 − 6n 2
< 7n 2,80736 − 6n 2
= O(n 2,81 ) .
Der Exponent ω f¨ ur die Matrixmultiplikation ist also < 2, 81.
proc matmult (A, B, n) =
co A und B sind n × n Matrizen oc
if n < 16 then berechne A · B mit klassischer Methode elif n gerade then
spalte A und B in je 4 n 2 × n 2 Matrizen auf und wende Strassen’s Formeln an. F¨ uhre die Multiplikationen rekursiv mit matmult aus.
else
spalte A und B in je eine (n − 1) × (n − 1) Matrix (A 11 , B 11 ) und drei verbleibende Bl¨ ocke auf. Wende matmult rekursiv auf A 11 , B 11 an und berechne die anderen Produkte mit der klassischen Methode.
fi
Satz 125
Der matmult -Algorithmus hat folgende Eigenschaften:
1
F¨ ur n < 16 ist die Anzahl der arithmetischen Operationen genauso hoch wie bei der klassischen Methode.
2
F¨ ur n ≥ 16 ist die Anzahl der arithmetischen Operationen echt kleiner als bei der klassischen Methode.
3
matmult braucht nie mehr als 4, 91n log
27 arithmetische Operationen.
Beweis:
1
√
Beweis (Forts.):
2
Sei n gerade und seien A, B zwei n × n Matrizen. Wir wenden Strassen’s Formeln an, f¨ uhren aber die 7 Multiplikationen der
n
2 × n 2 Matrizen mit der klassischen Methode aus.
Gesamtzahl arithmetischer Operationen:
7
2 n
2 3
− n 2
2 + 18
n 2
2
= 7
4 n 3 + 11 4 n 2 Dies ist besser als die klassische Methode, falls:
7
4 n 3 + 11
4 n 2 < 2n 3 − n 2 ⇔ 15
4 n 2 < 1
4 n 3 ⇔ 15 < n ⇔ n ≥ 16 Sei n ungerade. Multiplizieren wir A · B mit der klassischen Methode, so auch A 11 · B 11 . Also brauchen wir durch
Anwendung von Strassen’s Formeln auf die (n − 1) × (n − 1) Matrizen (n − 1 gerade) weniger Operationen, wenn
n − 1 ≥ 16 ist.
Beweis (Forts.):
Sei M 0 (n) die Anzahl arithmetischer Operationen in matmult . Dann ist:
M 0 (n) =
2n 3 − n 2 falls n < 16
7M 0 n 2
+ 18 4 n 2 falls n ≥ 16 gerade 7M 0 n−1 2
+ 42 4 n 2 − 17n + 15 2 falls n ≥ 16 ungerade Wir definieren f¨ ur x ∈ R + :
M ¯ (x) =
( 2x 3 − x 2 falls x < 32 7 ¯ M x 2
+ 42 4 x 2 falls x ≥ 32 Dann gilt:
M ¯ (n) ≥ M 0 (n) f¨ ur alle n ∈ N .
Beweis (Forts.):
Es ist
M ¯ (x) =
k−1
X
i=0
7 i · 42
4 x
2 i 2
+ 7 k
2 · x 2 k
3
− x 2 k
2
f¨ ur x ≥ 32, wobei k := min l
x
2
l< 32 .
Mit k = blog 2 xc − 4 =: log 2 x − t erhalten wir t ∈ [4, 5[ und
M ¯ (x) ≤ 7 log
2x 14 4
7 t
+ 2 8
7 t !
≤ 4, 91 · 7 log
2x f¨ ur x ≥ 32.
F¨ ur x < 32 direkt nachrechnen.
Volker Strassen:
Gaussian elimination is not optimal Numer. Math. 13, pp. 354–356 (1969) Victor Ya. Pan:
New fast algorithms for matrix operations SIAM J. Comput. 9(2), pp. 321–342 (1980) Don Coppersmith, Shmuel Winograd:
Matrix multiplication via arithmetic progressions
J. Symbolic Computation 9(3), pp. 251–280 (1990)
Kapitel VI Matchings in Graphen
1. Grundlagen
Definition 126
Sei G = (V, E) ein ungerichteter, schlichter Graph. Ein Matching M in G ist eine Teilmenge von E, so dass keine zwei Kanten aus M einen Endpunkt gemeinsam haben.
Variante 1 Variante 2
@
@
@
Matching:
r r
r r
r
r
Definition 127
1
Ein Matching M in G = (V, E) heißt perfekt (oder vollkommen), falls
|M| = |V | 2
2
Ein Matching M heißt
” Matching maximaler Kardinalit¨ at“
(engl. maximum matching) in G, falls es in G kein Matching M 0 mit |M 0 | > |M | gibt (durchgehend geringelt/rot im Beispiel)
3