13.07.2015 Aufrufe

Algorithmen auf Graphen und dünn besetzte Matrizen - Bergische ...

Algorithmen auf Graphen und dünn besetzte Matrizen - Bergische ...

Algorithmen auf Graphen und dünn besetzte Matrizen - Bergische ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Algorithmen</strong> <strong>auf</strong> <strong>Graphen</strong><strong>und</strong> <strong>dünn</strong> <strong>besetzte</strong> <strong>Matrizen</strong>Prof. Dr. Andreas FrommerWintersemester 2003/04<strong>Bergische</strong> Universität WuppertalFachbereich Mathematik


InhaltsverzeichnisEinleitung 31 Dünn <strong>besetzte</strong> <strong>Matrizen</strong> 41.1 Dünn <strong>besetzte</strong> Vektoren . . . . . . . . . . . . . . . . . . . . . 51.2 Dünn <strong>besetzte</strong> <strong>Matrizen</strong> . . . . . . . . . . . . . . . . . . . . . 111.3 Die LDU-Zerlegung für volle <strong>Matrizen</strong> . . . . . . . . . . . . . 212 Dünn <strong>besetzte</strong> spd-<strong>Matrizen</strong> 352.1 Gerüst für die Faktorisierung . . . . . . . . . . . . . . . . . . . 362.2 Numerische Phase . . . . . . . . . . . . . . . . . . . . . . . . . 372.3 Symbolische Phase für die LDL T -Faktorisierung . . . . . . . . 413 Geeignete Permutationen... 463.1 Gr<strong>und</strong>begriffe aus der <strong>Graphen</strong>theorie . . . . . . . . . . . . . . 473.2 Reduktion des Profils . . . . . . . . . . . . . . . . . . . . . . . 523.3 Die Minimum-Degree (MD)-Anordnung . . . . . . . . . . . . . 683.4 One-way-Dissection <strong>und</strong> Nested Dissection . . . . . . . . . . . 893.5 Quotientenbäume . . . . . . . . . . . . . . . . . . . . . . . . . 1044 Unsymmetrische <strong>Matrizen</strong> 1104.1 Schwellen-Pivotwahl . . . . . . . . . . . . . . . . . . . . . . . 1124.2 Digraphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164.3 Strukturelle Singularität <strong>und</strong> Transversale . . . . . . . . . . . 1304.4 B-reduzible Normalform . . . . . . . . . . . . . . . . . . . . . 1454.5 Rückgriff <strong>auf</strong> symmetrische Strukturen . . . . . . . . . . . . . 1504.6 Markowitz-Strategie . . . . . . . . . . . . . . . . . . . . . . . 1555 Ein Blick <strong>auf</strong> die aktuelle Forschung 1635.1 Dichte Diagonalblöcke . . . . . . . . . . . . . . . . . . . . . . 1645.2 Dichte Diagonalblöcke <strong>und</strong> große Einträge . . . . . . . . . . . 1745.3 Iterative Verbesserung . . . . . . . . . . . . . . . . . . . . . . 1781


Literatur[1] Duff, I., Erisman, A., Reid, J.; Direct Methods for Sparse Matrices,Oxford University Press (1986)[2] George, A., Liu, J.: Computer Simulation of large Sparse Positive DefiniteSystems, Prentice Hall (1981)[3] Pissanetzki, S.: Sparse Matrix Technology, Academic Press (1984)


EinleitungDefinition Eine Matrix A ∈ R n×n heißt <strong>dünn</strong> besetzt, wenn so viele EinträgeNull sind, dass es sich lohnt, dies in <strong>Algorithmen</strong> zur Lösung von Ax = bauszunutzen. Andernfalls heißt A dicht oder voll besetzt.Beispiel Diskretisierung partieller Differentialgleichungen führt <strong>auf</strong> <strong>Matrizen</strong>,bei denen pro Zeile eine feste Zahl (z.B. 5) von Einträgen ≠ 0 ist.Fast alle ”großen“, in der Natur vorkommenden <strong>Matrizen</strong> sind <strong>dünn</strong> besetzt.Inhalte dieser Vorlesung sind ”Zutaten“ für die Gauß-Elimination für <strong>dünn</strong><strong>besetzte</strong> <strong>Matrizen</strong>, insbesondere• Fragestellungen aus <strong>Graphen</strong>theorie/diskrete Mathematik bei der Bestimmungvon Permutationen.• Fragestellungen aus numerischer Analysis bei der Beurteilung von R<strong>und</strong>ungsfehlern.• Fragestellungen aus der praktischen Informatik zur Verwendung geeigneterDatenstrukturen <strong>und</strong> zur Aufwandsanalyse.3


KAPITEL 1Dünn <strong>besetzte</strong> <strong>Matrizen</strong>:Datenstrukturen <strong>und</strong> elementareOperationen4


Abschnitt 1.1Dünn <strong>besetzte</strong> VektorenBei einem Vektor x ∈ R n , dessen Einträge überwiegend 0 sind, lohnt es nicht,einen Speicherplatz O(n) zur Verfügung zu stellen.1.1.1 Definitiona) Für x ∈ R n ist struct(x) = {i ∈ {1, . . . , n} : x i ≠ 0} <strong>und</strong> nnz(x) =|struct(x)|.( nnz = ”number of non zeros“ siehe MATLAB )b) Für x ∈ R n ist das gepackte Format ein Paar (ind, val) mit ind ∈N nnz(x) , val ∈ R nnz(x) <strong>und</strong> mitval(i) = x ind(i) , i = 1, . . . , nnz(x).(Wir schreiben () in ind <strong>und</strong> val statt untere Indizes, um Komponentenzu bezeichnen.)1.1.2 Beispielx = (0, 0.1, 2.3, 0, 0, 4.5, 0, 0.6, 7.8, 0) ∈ R 10i 1 2 3 4 5ind 2 3 6 8 9val 0.1 2.3 4.5 0.6 7.8oder auchi 1 2 3 4 5ind 6 9 2 8 3val 4.5 7.8 0.1 0.6 2.3struct(x) ist mit ind identifizierbar.


1.1. DÜNN BESETZTE VEKTOREN1.1.3 Algorithmusgather(x, n, ind, val, nnz){Berechnet das gepackte Format (ind, val) eines als volles Feld gegebenenVektors x ∈ R n }j := 0for i = 1 to n doif x i ≠ 0 thenj++ind(j) := ival(j) := x iend ifend fornnz := jAufwand: O(n).1.1.4 Algorithmusscatter(x, n, ind, val, nnz){Bestimmt x als Feld der Länge n aus dem gepackten Format (ind, val)<strong>und</strong> n}siehe Übungsblatt 1Aufwand: O(n), falls x explizit <strong>auf</strong> Null initialisiert werden muss, andernfallsO(nnz).Wir betrachten nun die Operation(1.1.1)y := αx + ySAXPY“-Operation (alpha x plus y ) , α ∈ R, α ≠ 0.”1.1.5 LemmaSei z = αx + y, x, y, z ∈ R n , α ≠ 0. Dann giltstruct(z) = struct(x) ∪ struct(y)nnz(z) = nnz(x) + nnz(y) − |struct(x) ∩ struct(y)|.Beweis: Trivial, aber das Lemma ist falsch! Erklärung: Wir nennen einezufällige Null in z einen Eintrag z i = 0 mit y i ≠ 0. Das Lemma ist nur korrekt,wenn keine zufälligen Nullen <strong>auf</strong>treten, was wir ab jetzt voraussetzen. □6


1.1. DÜNN BESETZTE VEKTORENTrivial-Algorithmus für SAXPYscatter xscatter yy = αx + y mit vollen Vektoren ( O(n) )gather yWir suchen eine Variante, die nur einen vollen Vektor benötigt <strong>und</strong> AufwandO(nnz(x) + nnz(y)) besitzt.Idee:scatter x (nach w)berechne w i = αx i + y i für i ∈ struct(x) ∩ struct(y) <strong>und</strong> speichere in y(L<strong>auf</strong> über y)berechne w i = αx i + y i für i ∈ struct(x) struct(y) <strong>und</strong> speichere in y(L<strong>auf</strong> über x)(die Werte y i für i ∈ struct(y) struct(x) bleiben unverändert.)1.1.6 Algorithmus (a)SAXP Y (n, ind x , ind y , val x , val y , nnz(x), nnz(y), α){Berechnet bei gepackten Vektoren x, y ein SAXPY y := αx + y. Dervolle Hilfsvektor w ∈ R n ist <strong>auf</strong> Null initialisiert <strong>und</strong> wird auch so wiederzurückgeliefert.}scatter (w, n, ind x , val x , nnz(x)) {w enthält x}for i = 1 to nnz(y) do {L<strong>auf</strong> über y}if w indy(i) ≠ 0 thenval y (i) := αw indy(i) + val y (i)w indy(i) := 0end ifend forj := nnz(y)for i = 1 to nnz(x) do {L<strong>auf</strong> über x}if w indx(i) ≠ 0 thenj++ind y (j) := ind x (i)val y (j) := αw indx(i)w indx(i) := 0end ifend fornnz(y) := j7


1.1. DÜNN BESETZTE VEKTOREN1.1.6 Algorithmus (b)SAXP Y (n, ind x , ind y , val x , val y , nnz(x), nnz(y), α){Berechnet bei gepackten Vektoren x, y ein SAXPY y := αx + y. DasResultat steht in dem vollen Vektor w zur Verfügung <strong>und</strong> wird erst amEnde in y geschrieben.}{innerhalb eines GAXPYs nur beim ersten SAXPY notwendig}scatter (w, n, ind y , val y , nnz(y)) {w enthält y}j := nnz(y)for i = 1 to nnz(x) do {L<strong>auf</strong> über x}if w indx(i) ≠ 0 thenw indx(i) := α · val x (i) + w indx(i)elsew indx(i) = α · val x (i)j + +ind y (j) = ind x (i)end ifend fornnz(y) := j{struct(y) ist bekannt, die Werte nicht}{innerhalb eines GAXPYs nur beim letzten SAXPY notwendig}for i = 1 to nnz(y) do{L<strong>auf</strong> über y, sammelt die Werte ein}val y (i) := w indy(i)w indy(i) := 0end forAufwand: O(nnz(x) + nnz(y)), bei einfachem SAXPY etwas <strong>auf</strong>wendigerals Algorithmus 1.1.6.9


1.1. DÜNN BESETZTE VEKTOREN1.1.7 Algorithmus (a)ddot(n, ind x , ind y , val x , val y , nnz(x), nnz(y), γ){Berechnet γ = x T y für Vektoren x, y in gepacktem Format; verwendetHilfsvektor w wie in Algorithmus 1.1.6}γ := 0scatter (w, n, ind x , val x , nnz(x))for i = 1 to nnz(y) do {L<strong>auf</strong> über y}γ := γ + w indy(i) · val y (i)end forsetze w zurück <strong>auf</strong> 0 {L<strong>auf</strong> über x}Sind ind x <strong>und</strong> ind y geordnet, so kann man <strong>auf</strong> w ganz verzichten.1.1.7 Algorithmus (b)ddot(n, ind x , ind y , val x , val y , nnz(x), nnz(y), γ){Berechnet γ = x T y für Vektoren x, y in gepacktem Format; setzt ind x<strong>und</strong> ind y als geordnet voraus}γ := 0 ; j := 1for i = 1 to nnz(x) dowhile ind y (j) < ind x (i) doj++end whileif ind y (j) = ind x (i) thenγ := γ + val x (i) · val y (j)end ifend for10


Abschnitt 1.2Dünn <strong>besetzte</strong> <strong>Matrizen</strong>Für eine Matrix A ∈ R n×n bezeichnetstruct(A) = {(i, j) | a ij ≠ 0} ⊆ {1, . . . , n} 2nnz(A) = |struct(A)|1.2.1 DefinitionDas Koordinatenformat für eine <strong>dünn</strong> <strong>besetzte</strong> Matrix A = (a ij ) ∈ R n×n istein Tripel (rn, cn, val) mit rn, cn ∈ N nnz(A) <strong>und</strong> val ∈ R nnz(A) , so dass dieAbbildungbijektiv ist <strong>und</strong>k ∈ {1, . . . , nnz(A)} ↦→ (rn(k), cn(k)) ∈ struct(A)(0 ≠ ) val(k) = a rn(k),cn(k) , k = 1, . . . , nnz(A).1.2.2 Beispiel⎛A =⎜⎝1.0 0 0 −1.0 02.0 0 −2.0 0 3.00 −3.0 0 0 00 4.0 0 −4.0 05.0 0 −5.0 0 6.0⎞⎟⎠k 1 2 3 4 5 6 7 8 9 10 11rn 1 1 2 2 2 3 4 4 5 5 5cn 1 4 1 3 5 2 2 4 1 3 5val 1.0 -1.0 2.0 -2.0 3.0 -3.0 4.0 -4.0 5.0 -5.0 6.0rn : ”row numbers “cn : ”column numbers “Beobachtungen: Der Speicherbedarf beträgt 3nnz(A) + O(1). cn <strong>und</strong> rnkönnen ungeordnet werden. Dann sind Zeilen/Spalten nur sehr umständlichzu finden. Wie findet man z.B. Spalte 2 in Beispiel 1.2.2?


1.2. DÜNN BESETZTE MATRIZENVereinbarungen:a) Wir nutzen MATLAB-Notation für Teile von Vektoren <strong>und</strong> <strong>Matrizen</strong>,z.B.x(4 : 8) = (x 4 , x 5 , x 6 , x 7 , x 8 )<strong>und</strong> A i· = A(i, :) für die i-te Zeile von A sowie A·j = A(:, j) für die j-teSpalte von A.b) Wir gehen im Allgemeinen davon aus, dass A keine Nullzeile oder Nullspaltebesitzt (sonst wäre A singulär). Wir ersparen uns so Spezialfällebeim Handling ”leerer“ Datenstrukturen.1.2.3 DefinitionFür A = (a ij ) ∈ R n×n ist das zeilenweise gepackte Format ein Quadrupel(rl, rst, cn, val) mitrl, rst ∈ N ncn ∈ N nnz(A)val ∈ R nnz(A)(row length, row start)so dass gilt: für i = 1 bis n istcn(rst(i) : rst(i) + rl(i) − 1)val(rst(i) : rst(i) + rl(i) − 1)das gepackte Format für die Zeile i von A.1.2.4 BeispielZeilenweise gepacktes Format für A aus Beispiel 1.2.2k/i 1 2 3 4 5 6 7 8 9 10 11rst 1 3 6 7 9rl 2 3 1 2 3cn 1 4 1 3 5 2 2 4 1 3 5val 1.0 -1.0 2.0 -2.0 3.0 -3.0 4.0 -4.0 5.0 -5.0 6.0Beachte:a) Der Speicherdarf beträgt nur noch 2nnz(A) + O(n).12


1.2. DÜNN BESETZTE MATRIZENb) Weder Zeilen noch Spalten brauchen geordnet zu sein.c) Sind die Zeilen geordnet, so kann man <strong>auf</strong> rl verzichten (denn rl(i) =rst(i + 1) − rst(i)), wenn man rst(n + 1) = rst(n) + rl(n) zusätzlichverwendet. rl ist jedoch wichtig als Information, wenn die Zeilenungeordnet sind.d) Betrachte SAXPY-Operation A i· ← αA j· + A i· <strong>auf</strong> den Zeilen von A.(Die benötigt man bei der Gauß-Elimination.) Dann vergrößert sich imAllgemeinen struct(A i·). Dann speichert man das neue A i· am Endevon cn <strong>und</strong> val <strong>und</strong> ändert rl(i), rst(i) entsprechend. Zeilen werdenungeordnet, es entstehen ”Löcher“ in cn <strong>und</strong> val ( ̂= altes A i·)Abhilfe: ”Komprimieren“ nach einer bestimmten Zahl solcher SAX-PY’s.Oder: Verwalte jede Zeile als Liste.Vereinbarung: (wegen MATLAB, FORTRAN):Verkettete Listen werden immer durch Felder realisiert (keine explizitenZeiger!)Beispiel: Einfach verkettete Liste.i 1 2 3 4val 10.0 3.0 5.0 2.1✯ ✯ ✯next 2 3 4 0header 1header: Listenanfangnext: Verweis <strong>auf</strong> Index i des nächsten Listenelementsval: Werte der ListenelementeAndere Möglichkeit für die gleiche Liste13


1.2. DÜNN BESETZTE MATRIZENi 1 2 3 4val 3.0 10.0 2.1 5.0❨ ❨ ✿next 4 1 0 3header 2Einfügen oder löschen eines Listenelements benötigt einen AufwandO(Länge) (Auffinden der Position) + O(1) (für Einfügen/Löschen).Beispiel: Füge den Wert 4.0 hinter 3.0 ein in obiger Liste.i 1 2 3 4 5val 3.0 10.0 2.1 5.0 4.0❨ ❨ ❨ ✿next 5 1 0 3 4header 2Beachte: Spielt die Anordnung keine Rolle, so kann immer am Anfang mitAufwand O(1) eingefügt werden. (header ändert sich dabei.)1.2.5 DefinitionFür A = (a ij ) ∈ R n×n ist das (zeilenweise) Listenformat gegeben durch einQuadrupel (rst, cn, val, links) mitcn, links ∈ N nnz(A)so dass gilt:rst ∈ N nval ∈ R nnz(A)für i = 1 bis n ist rst(i) Header einer verketteten Liste für dieNichtnulleinträge von A i· mit Spaltennummern in cn <strong>und</strong> Wertenin val.Präzise bestimmt mank = 1,j k = rst(i)14


1.2. DÜNN BESETZTE MATRIZENwhile j k ≠ 0 doj k+1 = links(j k )k + +end whilerl(i) = k − 1so gilt a i,cn(jk ) = val(j k ), k = 1, . . . , rl(i).1.2.6 BeispielMatrix aus Beispiel 1.2.2 in Listenformatk/i 1 2 3 4 5 6 7 8 9 10 11rst 1 3 6 7 9cn 1 4 1 3 5 2 2 4 1 3 5val 1.0 -1.0 2.0 -2.0 3.0 -3.0 4.0 -4.0 5.0 -5.0 6.0links 2 0 4 5 0 0 8 0 10 11 0Ein weiteres Beispiel für ein Listenformat für A aus Beispiel 1.2.2:k/i 1 2 3 4 5 6 7 8 9 10 11rst 3 1 8 10 5cn 5 3 4 5 3 1 1 2 4 2 1val 3.0 -2.0 -1.0 6.0 -5.0 5.0 2.0 -3.0 -4.0 4.0 1.0links 2 7 11 6 4 0 0 0 0 9 0Bekannt aus Informatik II: Eine ”ordentliche“ Listenverwaltung ”merkt“ sichgelöschte Positionen in einer extra Liste. So ist immer bekannt, wo nochSpeicher zur Verfügung steht.Transformation zwischen den verschiedenen Formatentypisch: Konversion Koordinatenformat → gepacktes Format oder Listenformatatypisch: Konversion <strong>auf</strong> Koordinatenformat. (aber: Visualisierung mit spyin Matlab)Konversion (ungeordnetes) Koordinatenformat (rn, cn, val) in Listenformat(rst, cn, val, links)Bestimme links <strong>und</strong> rst aus rn. Die Felder cn <strong>und</strong> val bleiben unverändert.Vorgehen: Für jedes i: Baue aus einer leeren Liste für Zeile i die gesamteZeile <strong>auf</strong> durch Einfügen am Anfang.15


1.2. DÜNN BESETZTE MATRIZEN1.2.7 Algorithmus{Konvertiert Koordinatenformat in Listenformat}for i = 1 to n dorst(i) := 0end forfor k = 1 to nnz(A) doi := rn(k) { neues Element für Zeile i }links(k) := rst(i) { Einfügen am Anfang }rst(i) := kend forAufwand: O(nnz(A)) + O(n)Konversion Listenformat (rstl, cnl, vall, links) in gepacktes Format(rst, rl, cn, val)1.2.8 Algorithmus{konvertiert Listenformat in gepacktes Format }k := 1for i = 1 to n doj := rstl(i)rl(i) := 0rst(i) := kwhile j ≠ 0 docn(k) := cnl(j)val(k) := vall(j)rl(i)++k++j := links(j)end whileend forAufwand: O(nnz(A)) + O(n)Die Konversion von gepacktem Format nach Koordinatenformat ist ”straightforward“,man erhält aber zunächst ungeordnete Zeilen. Sortieralgorithmusverwenden.16


1.2. DÜNN BESETZTE MATRIZENBei (zeilenweise) gepacktem Format <strong>und</strong> Listenformat ist der Zugriff <strong>auf</strong> eineZeile gut möglich (<strong>und</strong> für die Gauß-Elimination auch notwendig). Allerdings:Bei der Elimination von Spalte k müssen nur die Zeilen modifiziert werden,die in Spalte k besetzt sind. Zumindest struct(A) sollte auch spaltenweisezugänglich sein.Lösung:• gepacktes Format: Verwende zusätzlich ein spaltenweise gepacktes Formatmit cst, cl, rn:Beispiel: Matrix aus Beispiel 1.2.2k/i 1 2 3 4 5 6 7 8 9 10 11rst 1 3 6 7 9rl 2 3 1 2 3cn 1 4 1 3 5 2 2 4 1 3 5val 1.0 -1.0 2.0 -2.0 3.0 -3.0 4.0 -4.0 5.0 -5.0 6.0cst 1 4 6 8 10cl 3 2 2 2 2rn 1 2 5 3 4 2 5 1 4 2 5• Listenformat: Verwende gleichzeitig spaltenweises Listenformat (ohneval) also nur rn, linkscol, cst. Dabei bezeichnet linkscol die Links fürdie Spaltenlisten.Beispiel: siehe Übungsblatt 2.1.2.9 Bemerkunga) Die beschriebenen erweiterten Formate (gepackt oder Liste) werdenunsere Standardformate sein.b) Die Spalteninformation kann einfach aus den Informationen des nichterweiterten Formates bestimmt werden mit Aufwand O(nnz(A)). Übungs<strong>auf</strong>gabe.Zeilenvertauschungen kommen bei der Spaltenpivotsuche bei der Gauß-Elimination vor. Realisierung bei unseren Standardformaten: vertausche Zeileni 1 <strong>und</strong> i 2 :• erweitertes gepacktes Format:vertausche rst(i 1 ) mit rst(i 2 ) <strong>und</strong> rl(i 1 ) mit rl(i 2 )17


1.2. DÜNN BESETZTE MATRIZENsowie alle i 1 <strong>und</strong> i 2 in rn. Dabei müssen in rn nur die Abschnittedurchl<strong>auf</strong>en werden, die Spalten beschreiben, welche in den Zeileni 1 <strong>und</strong> i 2 besetzt sind. S. Algorithmus 1.2.10• erweitertes Listenformat:vertausche rst(i 1 ) mit rst(i 2 )sowie alle i 1 <strong>und</strong> i 2 in rn. Dabei müssen in rn nur die Listen durchl<strong>auf</strong>enwerden, die Spalten beschreiben, welche in den Zeilen i 1 <strong>und</strong>i 2 besetzt sind.1.2.10 Algorithmus{vertauscht Zeilen i 1 <strong>und</strong> i 2 im erweiterten gepackten Format}vertausche rst(i 1 ) <strong>und</strong> rst(i 2 ) sowie rl(i 1 ) <strong>und</strong> rl(i 2 )for k = 0 to rl(i 1 ) − 1 do {L<strong>auf</strong> über Zeile i 1 }j := cn(rst(i 1 ) + k){Spalte j ist in Zeile i 1 besetzt}for l = 0 to cl(j) − 1 do {In Spalte j . . . }i = rn(cst(j) + l)if i = i 1 then {. . . wird Zeile i 1 durch i 2 . . . }rn(cst(j) + l) = i 2end ifif i = i 2 then{. . . <strong>und</strong> i 2 durch i 1 ersetzt}rn(cst(j) + l) = i 1end ifend forend forfor k = 0 to rl(i 2 ) − 1 do {jetzt dasselbe für Zeile i 2 }j := cn(rst(i 2 ) + k) {kommen i 1 <strong>und</strong> i 2 beide in Spalte j vor . . . }for l = 0 to cl(j) − 1 do {. . . wurden sie vorher schon vertauscht . . . }i = rn(cst(j) + l){. . . <strong>und</strong> jetzt nochmal}if i = i 1 thenrn(cst(j) + l) = i 2end ifif i = i 2 thenrn(cst(j) + l) = i 1end ifend forend for18


1.2. DÜNN BESETZTE MATRIZENAufwand: Falls |struct(A(i, :)| = O(c) <strong>und</strong> |struct(A :,j | = O(c): O(c 2 )Allgemeine Permutationen1.2.11 DefinitionSei π eine Permutation. Die zugehörige Permutationsmatrix erfüllt.(P x) π(i) = x i , i = 1, . . . , n für alle x ∈ R n .Dann ist P A eine Zeilenpermutation von A. P A erhält man in unseren Formateneinfach so:ersetze rst(i) durch rst(π(i)), i = 1, . . . , nersetze rl(i) durch rl(π(i)), i = 1, . . . , nsowie in rn jedes i durch π(i), i = 1, . . . , nAufwand: O(n) + O(nnz(A))AP T ist Permutation der Spalten. Man erhält AP T aus A durch analogeModifikation. Zeilen (cn) sind dann ungeordnet. A → P AP T entsprechend.Zur Übung: Entwickle Algorithmus zur Berechnung von y = Ax, x, A, y ingepacktem Format:A = [rst, rl, cn, cst, cl, rn, val]x = [indx, valx]1.2.12 Algorithmus{Berechnet y = Ax mit x, y, A gepackt; verwendet Hilfsvektor w vollerLänge}m := 0scatter(w, n, ind x , val x , nnz(x))for i = 1 to n doγ := 0for j = 0 to rl(i) − 1 dok := rst(i) + jγ := γ + val(k) · w(cn(k))end forif γ ≠ 0 thenm := m + 1val y (m) := γind y (m) := iend ifend for19


1.2. DÜNN BESETZTE MATRIZENBeachte:a) Zufällige Nullen werden (ausnahmsweise) berücksichtigt.b) Für den Aufwand gilt: O(nnz(A)). Setze c = nnz(A) (mittlere Zahl vonnNichtnullen pro Zeile), so ist der Aufwand also O(c · n). Zum Vergleich:A vollbesetzt O(n 2 ).Alternative: spaltenorientiertAx =alternativer Algorithmus damity := 0for k = 1 to nnz(x) doy := y + A·,indx(k)val x (k)end forn∑j=1; j∈struct(x)← SAXPYA·j · x jHierfür ist die volle Information zur Spalte ind x (k) (inklusive der Werte!)notwendig, was bei unseren Standardformaten nicht der Fall ist.1.2.13 Definitiona) Sind ind 1 <strong>und</strong> ind 2 zwei Indexvektoren ⊆ {1, . . . , n} <strong>und</strong> ist A ∈ R n×n ,so bezeichnet B = A(ind 1 , ind 2 ) die Matrix (b ij ) mitb ij = A(ind 1 (i), ind 2 (j)) , i = 1, . . . , |ind 1 |, j = 1, . . . , |ind 2 |( wie in MATLAB )b) Das Cliquenformat einer Matrix A ∈ R n×n ist eine Sammlung von <strong>Matrizen</strong>A k ∈ R n k×n k <strong>und</strong> Indexvektoren sk der Länge n k , k = 1, . . . , m,so dass giltA =m∑B k mit B k (s k , s k ) = A k , struct(B k ) ⊆ s k × s k .k=1Die <strong>Matrizen</strong> A k heißen Cliquen.Cliquen entstehen bei der Gauß-Elimination von symmetrischen <strong>Matrizen</strong> innatürlicher Weise.20


Abschnitt 1.3Die LDU-Zerlegung für volle <strong>Matrizen</strong>(eine Wiederholung)Im ganzen Abschnitt sei A ∈ R n×n regulär.1.3.1 DefinitionDie LDU-Zerlegung von A ist eine DarstellungA = LDU,L, D, U ∈ R n×nwobei L linke untere Dreiecksmatrix mit Einheitsdiagonale, D Diagonalmatrix,U rechte obere Dreiecksmatrix mit Einheitsdiagonale ist.⎡⎤ ⎡⎤1 0d 11 0l 2,1 1. .. .L =. .. . .., D =. ⎢⎣ . ⎥.. ,. .. 1 ⎦ ⎢⎣. ⎥ .. ⎦l n,1 · · · · · · l n,n−1 10 d nn⎡⎤1 u 1,2 . . . . . . u 1,n. 1 .. .U =. .. . ..⎢.⎥⎣1 u n−1,n⎦0 11.3.2 Bemerkunga) Die LDU-Zerlegung existiert nicht immer, z.B.( ) ( ) ( ) ( 0 1 1 0 d11 0 1 u12A = =2 3 l 21 1 0 d 22 0 1⇒ d 11 = 0 (aus Pos (1, 1) )⇒ 1 = d 11 u 12 (aus Pos (1, 2) ) nicht erfüllbar.b) Im Falle der Existenz ist die LDU-Zerlegung eindeutig. ( siehe Satz1.3.5))


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZEN1.3.3 Algorithmus (Gauß-Elimination (A = A (1) ))for k = 1 to n − 1 dobestimme s k mit |a (k)s k k | =maxni=k|a(k) ik |vertausche Zeilen k <strong>und</strong> s k in A (k) , ergibt Ã(k) .for i = k + 1 to n dol ik = ã (k)ij /ã(k) kkend forfor i = k + 1 to n dofor j = k + 1 to n doa (k+1)ij = ã (k)ij − l ik ã (k)kjend forend for(setze d kk = ã (k)kk , u kj = ã (k)kj /d kk, j = k + 1, . . . , n)end for{Spaltenpivotsuche}{Zeilenfaktoren}{restliche Zeilen}{restliche Spalten}1.3.4 LemmaDie Gauß-Elimination erfordert einen Aufwand von1Multiplikationen:3 n3 + O(n 2 )1Additionen:3 n3 + O(n 2 )nDivisionen: 2+ O(n)2( n 2 + O(n) bei Bestimmung von D <strong>und</strong> U)Beweis:Multiplikationen:∑n−1n∑n∑k=1 i=k+1 j=k+1k=1 i=k+11 ===∑n−1(n − k) 2k=1∑n−1k 2k=1(n − 1)n(2n − 1)6= 1 3 n3 + O(n 2 ).Additionen: Genauso.Divisionen:∑n−1n∑ ∑n−1∑n−11 = (n − k) = k = 1 2 n2 + O(n).k=122k=1


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZEN1.3.5 SatzEs sei⎡1L (k) =⎢⎣1⎡U (k) =⎢⎣1l k+1,k 1.. ..l n,k 0 1⎤ ⎡d 11 . .. , D (k) d=kk 1⎥ ⎢⎦ ⎣. ..1⎤1 u 1,2 . . . u 1,n. .. . .. .1 u k,k+1 . . . u k,nã (k)k+1,k+1. . . ã (k), A (k) = D (k) U (k)k+1,n⎥.. ⎦ã (k)n,k+1. . . ã n,n(k)P (k) ∈ R n×n Permutationsmatrix, welche k <strong>und</strong> s k vertauscht□⎤,⎥⎦(⇒ (P (k) ) −1 = P (k) ).Dann gilt:(1.3.1) P (k) A (k) = L (k) A (k+1) , k = 1, . . . , n − 1<strong>und</strong>(1.3.2) P A = LDUmitL = ˆL (1) . . . ˆL (n−1) ,ˆL (k) = [ Q (k)] −1L (k) Q (k) ,Q (k) = P (k+1) . . . P (n−1) , k = 1, . . . , n − 1 (Q (n−1) = I),U = U (n) , D (k) U (k) = A (k) , D = D (n) ,P = P (n−1) . . . P (1) .23


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZENBeweis: Es gilt⎡(L (k) ) −1 =⎢⎣1. ..1.−l k+1,k .... ..−l n,k 1⎤⎥⎦<strong>und</strong> P (k) A (k) = Ã(k) .Damit ergibt sich aus Algorithmus 1.3.3:A (k+1) = (L (k) ) −1 Ã (k) = (L (k) ) −1 P (k) A (k)⇐⇒ L (k) A (k+1) = P (k) A (k) ⇐⇒ (1.3.1).Zum Beweis von (1.3.2): Es gilt zunächst (nach (1.3.1))A (n−1) =P (n−1) L (n−1) A (n) = P (n−1) ˆL(n−1) DU⇒A (n−2) =P (n−2) L (n−2) A (n−1)=P (n−2) L (n−2) P (n−1) ˆL(n−1) DU=P (n−2) Q (n−2) [Q (n−2) ] −1 L (n−2) Q (n−2) ˆL(n−1) DU=P (n−2) Q (n−2) ˆL(n−2) ˆL(n−1) DU=P (n−2) P (n−1) ˆL(n−2) ˆL(n−1) DU⇒A (n−3) = . . . = P (n−3) P (n−2) P (n−1) ˆL(n−3) ˆL(n−2) ˆL(n−1) DU⇒ A =A (1) = P (1) . . . P (n−1) ˆL(1) . . . ˆL (n−1) DU⇒ P (n−1) . . . P (1) A = ˆL (1) . . . ˆL (n−1) DU⇒ P A =LDU.1.3.6 Bemerkung□a) Q (k) entspricht einer Permutation nur <strong>auf</strong> {k + 1, k + 2, . . . , n − 1}. Es24


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZENist deshalb⎡ˆL (k) = [Q (k) ] −1 L (k) Q (k) =⎢⎣1. ..1. ˆl k+1,k .... ..ˆl n,k 1⎤⎥⎦mitˆL(k)·k = [Q(k) ] −1 L (k)·k. Also ist insbesondere⎡1L = ˆL (1) . . . ˆL . (m−1) ˆl 2,1 ..= ⎢⎣ .. .. . ..ˆl n,1 . . . ˆln,n−1 1⎤⎥⎦ .b) Bei Implementierungen benötigt man nur ein (zweidimensionales) FeldA als Speicher; in Schritt k ist es dann wie folgt belegt:DULÃ (k)Zusätzlich muss man sich die angewandten Permutationen in einemIndexvektor merken.1.3.7 SatzA regulär ⇐⇒ ã kk ≠ 0 für k = 1, . . . , n. Insbesondere ist Gauß-Eliminationdurchführbar, wenn A regulär ist.Beweis:25


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZEN” ⇐“ Algorithmus 1.3.3 durchführbar, d.h. ã kk ≠ 0 für k = 1, . . . , n. Es folgtP A = LDU ⇐⇒ A = P −1 LDU ist regulär. (Da P −1 , L, D, U regulär).⇒“ Angenommen, es existiert (kleinstes) k mit ã(k)”kkfür i = k, . . . , n <strong>und</strong> damit die Matrix⎡∗ ∗ ∗ □ □ □∗ ∗ □ □ □0 ∗ □ □ □0 . . . . . . 0 □ □Ã (k) =⎢⎣. □ □0 □ □= 0 Dann ist ã(k)ik = 0singulär, denn Spalte k ist linear abhängig von Spalten 1 bis k−1. Damitist auch A (k) singulär <strong>und</strong> wegen (1) auch A (k−1) , A (k−2) , . . . , A (1) .⎤⎥⎦1.3.8 Bemerkung□a) ”Verschiedene“ Dreieckszerlegungen entstehen durch verschiedene ”Klammerung“in P A = LDU, z.B.P A = L(DU)” Gauß-Zerlegung“A = A T :{A = (LD 1 2 )(D 1 2 U)A = LDU, U = L T” Cholesky-Zerlegung“(U = LT )wurzelfreie Cholesky-Zerlegung“.”b) Die Berechnung der LDU-Zerlegung P A = LDU ist der <strong>auf</strong>wändigeBestandteil eines direkten Gleichungslösers. Man erhält x in Ax = bdurch⇐⇒⇐⇒Lz = P bDy = zUx = yP Ax = P bLDUx = P b” Dreieckssystem“, O(n2 )Diagonalsystem“, O(n)”” Dreieckssystem“, O(n2 ).c) Zur Vereinfachung formulieren wir jetzt weitere Faktorisierungsalgorithmenohne Pivotisierung, d.h. es ist P A = A = LDU.26


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZENVarianten der Gauß-Elimination entstehen, wenn man die Einträge in L, D, Uin anderer Reihenfolge berechnet als bei Gauß-Elimination. Dabei ändertsich der Zugriff <strong>auf</strong> die Daten von A unterschiedliche Eignung für unsereDatenformate. Wir gehen systematisch vor:ergibtalso durch Auflösen(1.3.3)(1.3.4)(1.3.5)a ij =d ii =l ij =u ij =min{i,j}∑k=1A = LDUl ik d kk u kj ,i, j = 1, . . . , na ii − i−1 ∑l ik d kk u ki (i = j)k=1()a ij − j−1 ∑l ik d kk u kj /d jj (i > j)k=1()a ij − i−1 ∑l ik d kk u kj /d ii (i < j).k=1Man kann (1.3.3) - (1.3.5) also direkt zur Bestimmung von L, D, U verwenden,vorausgesetzt, in die rechten Seiten gehen nur bekannte Größen ein.1. Möglichkeit: Zeilenweise durch D, L <strong>und</strong> U.1.3.9 Algorithmus (Doolittle-Algorithmus)for i = 1 to n dofor j =(1 to i − 1 do)l ij = a ij − j−1 ∑l ik d kk u kj /d jj {i-te Zeile von L}end ford ii = a ii − i−1 ∑k=1k=1l ik d kk u ki {i-te Zeile von D}for j = ( i + 1 to n do )u ij = a ij − i−1 ∑l ik d kk u kj /d ii {i-te Zeile von U}end forend fork=1Skizze für Schritt i:27


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZENDLUZugriffwird berechnetAZum Vergleich: Schema bei Gauß-Elimination ( ”kij-Form“).Skizze für Schritt k:DUZugriffwird berechnetLA (k)2. Möglichkeit: Spalten von L, Zeilen von U.28


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZEN1.3.10 Algorithmus (Crout-Algorithmus)for i = 1 to n dod ii = a ii − i−1 ∑l ik d kk u kik=1for s = ( i + 1 to n do )l si = a si − i−1 ∑l sk d kk u ki /d iik=1end forfor j = ( i + 1 to n do )u ij = a ij − i−1 ∑l ik d kk u kj /d iiend forend fork=1Skizze für Schritt i:DUZugriffwird berechnetLA29


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZEN1.3.11 Algorithmus( ”ikj-Form“)d 11 = a 11for i = 2 to n dofor s = i to n dou i−1,s = a (i−1)i−1,s /d i−1,i−1end forfor k = 1 to i − 1 dol ik = a (k)ik /d kkfor j = k + 1 to n doa (k+1)ijend forend ford ii = a (i)iiend for= a (k)ij− l ik d kk a (k)kjDieser Algorithmus berechnet alle Veränderungen von Zeile i <strong>auf</strong> ein Mal. Erensteht aus Doolittle bzw. Gauß-Elimination durch Vertauschen der Schleifenüber j <strong>und</strong> k bzw. k <strong>und</strong> i.Schema: Wie Doolittle, aber die i-te Zeile wird mehrfach durchl<strong>auf</strong>en.1.3.12 BemerkungZu allen <strong>Algorithmen</strong> existieren entsprechende spaltenorientierte Varianten.(außer für Crout)Diskussion der <strong>Algorithmen</strong> mit Blick <strong>auf</strong> <strong>dünn</strong> <strong>besetzte</strong> <strong>Matrizen</strong>:Gauß-Elimination: innere Schleife (über j): SAXPY mit Zeilen von A (k) .+: im Wesentlichen zeilenweiser Zugriff (<strong>auf</strong> A (k) )−: die Besetztheit von A (k) ändert sich mit kDoolittle: innere Schleife (über k): Innenprodukt mit Zeile von L, Spaltevon U.+: zeilenweise Berechnung von L <strong>und</strong> U−: spaltenweiser Zugriff <strong>auf</strong> U+: in L, U wird stets die Besetztheit der endgültigen Faktorisierungbenötigt30


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZENCrout: innere Schleife (über k): Innenprodukt mit Zeile von L, Spalte vonU.+: zeilenweise Berechnung von U, Zugriff <strong>auf</strong> L−: spaltenweise Berechnung von L, Zugriff <strong>auf</strong> U+: nur Besetztheit der endgültigen Faktorisierung nötigikj -Form: innere Schleife (über j): SAXPY mit Zeilen von A (k) .+: zeilenweiser Zugriff <strong>auf</strong> L, U <strong>und</strong> A (k)−: Besetztheit von A (k)i· in Schleife über k ändert sich ständig1.3.13 SatzIm Falle der Existenz ist die LDU-Zerlegung eindeutig.Beweis: Folgt direkt aus (1.3.2) - (1.3.4) bzw. Doolittle-Algorithmus.□1.3.14 KorollarA ∈ R n×n sei symmetrisch <strong>und</strong> es existiere die LDU-Faktorisierung A =LDU. Dann gilt U = L T .Beweis: LDU = A = A T = (LDU) T = U T DL T . Wegen Satz 1.3.13 folgtL = U T <strong>und</strong> L T = U.□Folge: Im Fall A = A T muss U gar nicht berechnet werden, die <strong>Algorithmen</strong>können entsprechend verkürzt werden. (Zugriff <strong>auf</strong> u kj ersetzen durch l jk .)Aus dem Doolittle-Algorithmus erhalten wir so:1.3.15 Algorithmus (Wurzelfreie Cholesky-Zerlegung, Doolittle)for i = 1 to n dofor j =(1 to i − 1 do)l ij = a ij − j−1 ∑l ik d kk l jk /d jjend ford ii = a ii − i−1 ∑end fork=1k=1l 2 ik d kkBeachte: Auf A <strong>und</strong> L wird nur zeilenweise zugegriffen.31


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZEN1.3.16 SatzIst A = A T positiv definit (spd), so existiert die LDU-Zerlegung <strong>und</strong> es istU = L T .Beweis: Wegen Existenz: siehe Satz 1.3.21. Wegen U = L T : siehe Korollar1.3.14. □1.3.17 BemerkungIst A = A T , so wird bei Spaltenpivotsuche (A → P A) die Symmetrie imAllgemeinen zerstört. Symmetrie bleibt erhalten bei der Transformation A →P AP T . Damit wird nur die Reihenfolge der Diagonalelemente geändert. FallsA nicht spd ist, kann so die Existenz der LDL T nicht gesichert werden.1.3.18 BemerkungAlgorithmus 1.3.15 ist die Vorlage für einen entsprechenden Algorithmus zurBerechnung der Cholesky-Zerlegung bei <strong>dünn</strong> <strong>besetzte</strong>n <strong>Matrizen</strong>.1.3.19 Satz (Wilkinson, 1965)Es seien L, Ũ die mit Gauß-Elimination ohne Pivotsuche bestimmte L(DU)-Zerlegung von A (Ũ = DU) <strong>auf</strong> einem Computer mit Maschinengenauigkeitɛ. Dann gilt: Es existiert eine Matrix H ∈ R n×n , H = (h ij ), so dass<strong>und</strong>|h ij | ≤ 5.01 ɛA + H = LŨnmaxk=1 |a(k) ij|, i, j = 1, . . . , n.Beweis: Siehe Numerik I oderN. Higham: Accuracy and Stability of Numerical Algorithms, 2nd edition,SIAM, Philadelphia, 2002.□(Dieser Satz gilt auch für die anderen <strong>Algorithmen</strong>. Es werden genau dieselben Berechnungen in anderer Reihenfolge durchgeführt.)Erinnerung an Definition von ɛ: Bezeichnet fl das Ergebnis einer Rechenoperation<strong>auf</strong> dem Computer (mit Gleitkomma-R<strong>und</strong>ung), so giltfl(a ◦ b) = (a ◦ b)(1 + ɛ ′ )mit |ɛ ′ | ≤ ɛ für ◦ ∈ {+, −, ∗, /}.Z.B. IEEE 754-Standard: Bei 64-Bit-Darstellung ist ɛ = 2 −53 ≈ 10 −16 .Folgerung aus Satz 5: Die Zahlen ρ ij = nmaxk=1 |a(k) ij| sind ein Maß für die(Rückwärts-) Stabilität der Gauß-Elimination. Pivotstrategien sollten so sein,dass die ρ ij möglichst klein bleiben.32


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZEN1.3.20 DefinitionDie Zahl ρ = max |ρ ij | heißt Wachstumsfaktor für die Gauß-Elimination.i,jSpaltenpivotsuche schließt nicht aus, dass ρ = 2 n−1 max |a ij |. (siehe Übungsblatti,j4)Für spd-<strong>Matrizen</strong> gilt aber:1.3.21 SatzA sei spd. Dann ist ρ = max |a ij |. (In diesem Sinne ist Gauß-Elimination bzwi,jCholesky-Faktorisierung von spd-Matizen ohne Pivotsuche stabil.)Beweis: Wir zeigen für B = A (2) (2 : n, 2 : n)a) B ist spdb) max |b ij | ≤ max |a ij |Der Satz folgt dann per Induktion.a): Bezeichnel =(1, a 12a 11, . . . , a 1na 11) T= 1a 11A·1 = 1a 11A T 1·.Es gilt:Also ist B symmetrisch.B = (A − a 11 ll T )(2 : n, 2 : n).Zu zeigen bleibt noch y T By > 0 für alle y ∈ R n−1 , y ≠ 0. Setze dazu( )0x = , x ≠ 0.yEs gilt:y T By = x T (A − a 11 ll T )x= x T Ax − a 11 (x T l) 2Andererseits gilt für z = x − (x T l, 0, . . . , 0) T = x − (x T l)e 1 ≠ 00 < z T Az = x T Ax − (x T l)e T 1 Ax − x T A(x T l)e 1 + (x T l) 2 e T 1 Ae 1= x T Ax − (x T l)a 11 l T x − (x T l)a 11 x T l + (x T l) 2 a 11= x T Ax − a 11 (x T l) 2 = y T By.33


1.3. DIE LDU-ZERLEGUNG FÜR VOLLE MATRIZENb): Für i = 2, . . . , n gilt0 < a) b i−1,i−1 = a (2)ii= a ii − a 11 l 2 i ≤ a iiSei i ≠ j, a (2)ij ≠ 0 <strong>und</strong> y = (0, . . . , 0, 1, 0, . . . , 0, −sgn(a (2)ij ), 0, . . . , 0) ∈R n−1 . Dann gilt wegen a):0 < y T By = b i−1,i−1 + b j−1,j−1 − 2b i−1,j−1 sgn(a (2)ij )= b i−1,i−1 + b j−1,j−1 − 2|b i−1,j−1 |⇒ |b i−1,j−1 | ≤ 1 2 (b i−1,i−1 + b j−1,j−1 ) ≤ ρ.□Konsequenz: Für A spd ist ρ unabhängig von jeder Transformation A →P AP T , P Permutation. Diese Transformation kann bei d.b. <strong>Matrizen</strong> alsoausschließlich mit Blick <strong>auf</strong> den entstehenden Rechen<strong>auf</strong>wand gewählt werden.Blick nach vorn:⎛⎞⎛⎞x x . . . xxx x 0A = ⎜⎝ . 0 . .⎟ . ⎠ spd L = x x⎜⎝.. ..⎟⎠ ” voll“x xx . . . . . . x⎛⎞⎛⎞x xx 0.P AP T .. . 0 .= ⎜⎝ . ⎟0 .. . ⎠ spd L = ..⎜⎝ . ⎟0 .. ⎠ ” optimal“.x . . . . . . xx . . . . . . x34


KAPITEL 2Dünn <strong>besetzte</strong> spd-<strong>Matrizen</strong>35


Abschnitt 2.1Gerüst für die FaktorisierungIm ganzen Kapitel sei A = A T ∈ R n×n positiv definit. Zu berechnen ist diewurzelfreie Cholesky-Zerlegung A = LDL T . Dies geschieht in zwei Phasen.1. Phase (symbolische Phase)a) Bestimmung einer geeigneter Permutation, so dass die Faktorisierungvon P AP T geringen Aufwand verursachtb) Erzeugung der Datenstruktur ( ”L/D-Datenstruktur“) zur Aufnahmevon L <strong>und</strong> D.2. Phase (numerische Phase)a) ändere die L/D-Datenstruktur so ab, dass (mindestens) die Zeileninformationgeordnet ist.b) übertrage P AP T in L/D-Datenstrukturc) berechne die Faktorisierung P AP T = LDL TKonvention: Die L/D-Datenstruktur ist bei uns das zeilenweise gepackte Format(bzw. Listenformat), bestehend aus rst, rl, cn, val (bzw. rst, cn, links,val) für das strikte untere Dreieck von L plus ein Vektor d für die Diagonalevon D. (rl(i) = 0 ist jetzt möglich!)Wir behandeln zuerst Phase 2, da wir hierfür bereits alle Elemente beisammenhaben.


Abschnitt 2.2Numerische PhaseWir ändern zuerst die L/D-Datenstruktur, so dass Information in den Zeilengeordnet ist. Vergleiche hierzu Übungs<strong>auf</strong>gabe 6. Wir behandeln nur dasgepackte Format.


2.2. NUMERISCHE PHASE2.2.1 Algorithmus(doppelte symbolische Transposition){Ändert die L/D-Datenstruktur, so dass Information in den Zeilen geordnetist.}for i = 1 to n docl(i) := 0end forfor k = 1 to nnz(L) do{Länge der Spalten bestimmen}cl(cn(k)) := cl(cn(k)) + 1end forcst(1) := 1for j = 2 to n docst(j) := cst(j − 1) + cl(j − 1)end forfor i = 1 to n docp(i) := cst(i){Anfangszeiger}end forfor i = 1 to n do{alle Zeilen}for k = rst(i) to rst(i) + rl(i) − 1 dorn(cp(cn(k))) := icp(cn(k))++end forend for{jetzt enthält rn(cst(i) : cst(i)+cl(i)−1) Zeilennummern der i-ten Spalte,<strong>und</strong> zwar sortiert! }(A) ——————for j = 1 to n do{Anfangszeiger}rp(j) := rst(j)end forfor j = 1 to n do{alle Spalten}for k = cst(j) to cst(j) + cl(j) − 1 docn(rp(rn(k))) := jrp(rn(k))++end forend for{jetzt ist also auch cn(rst(i) : rst(i) + rl(i) − 1) sortiert.}38


2.2. NUMERISCHE PHASE2.2.2 BemerkungBis zur Marke (A) wird die Datenstruktur für die Spalten von L, also dieZeilen von L T <strong>auf</strong>gebaut. Danach wird dieser Prozess wiederholt, d.h. dieSpaltenstruktur von L T = Zeilenstruktur von (L T ) T = L wird <strong>auf</strong>gebaut.2.2.3 BemerkungDer Aufwand von Algorithmus 2.2.1 istO(n) + O(nnz(L)).Übertragung von A in die (geordnete) L/D-Datenstruktur. Dabei iststruct(L) ⊇ struct(striktes unteres Dreieck von A).rst, rl, cn, val beziehen sich <strong>auf</strong> L, rsta, rla, cna, <strong>auf</strong> A.2.2.4 Algorithmus{Überträgt A in die L/D-Datenstruktur}for i = 1 to n doscatter A i· in vollen Vektor wd i := w ifor k = rst(i) to rst(i) + rl(i) − 1 doval(k) = w cn(k)end forfor k = rsta(i) to rsta(i) + rla(i) − 1 dow cna(k) := 0end forend forAufwand: O(nnz(L) + nnz(A)).Der Vektor w ist <strong>auf</strong> 0 zu initialisieren.Jetzt können wir die numerische Phase für die Cholesky-Zerlegung formulierenin Anlehnung an Algorithmus 1.3.15 (Doolittle für Cholesky)for i = 1 to n dofor j =(1 to i − 1 do)l ij = a ij − j−1 ∑l ik d kk l jk /d jjk=139


2.2. NUMERISCHE PHASEend ford ii = a ii − i−1 ∑k=1l 2 ik d kkend forBei <strong>dünn</strong> <strong>besetzte</strong>n <strong>Matrizen</strong> istj−1∑l ik d kk l jkk=1wie ein Innenprodukt mit gepackten, geordneten Vektoren, siehe Algorithmus1.1.7.2.2.5 Algorithmus(Cholesky-Faktorisierung für <strong>dünn</strong> <strong>besetzte</strong> Matrix,numerische Phase)for i = 1 to n dofor k = rst(i) to rst(i) + rl(i) − 1 do {Elemente von Zeile i}j = cn(k){Spaltenindex des Nichnullelements}j2 = rst(i) {jetzt Innenprodukt“ von Zeilen i <strong>und</strong> j}”for j1 = rst(j) to rst(j) + rl(j) − 1 dowhile (cn(j2) < cn(j1)) doj2++end whileif cn(j2) = cn(j1) thenval(k) = val(k) − val(j1)val(j2)d cn(j1)end ifend forval(k) = val(k)/d jend forfor j1 = rst(i) to rst(i) + rl(i) − 1 dod i = d i − val(j1) 2 d cn(j1)end forend for2.2.6 BemerkungDer Aufwand für Algorithmus 2.2.5 beträgtn∑∑i=1 j∈struct(L i·)[O(1) + O(rl(i)) + O(rl(j))].Gilt z.B. rl(i) ≤ c, i = 1, ..., n, so erhält man Aufwand O(c 2 n).40


Abschnitt 2.3Symbolische Phase für dieLDL T -FaktorisierungErinnerung an die symbolische Phase:a) Bestimmung einer geeigneten Permutationb) Bestimmung der L/D-DatenstrukturHier: Teil b); Teil a) wird in Kapitel 3 behandelt.Wir verwenden nur die strukturelle Information von A, nicht die numerischenWerte.2.3.1 DefinitionFür j = 1, . . . , n sei r(j) die Position des ersten Nicht-Null-Elements nachPosition j in Spalte L·j . (Wir setzen r(j) = n + 1, falls eine solche Positionnicht existiert.)Beispiel:Es ergibt sich⎛L =⎜⎝⎞xxxx x x∈ R 7×7x x x x⎟x x x ⎠x x xr(1) = 4, r(2) = 4, r(3) = 5, r(4) = 5, r(5) = 6, r(6) = 7, r(7) = 8.2.3.2 SatzEs gilt für j = 1, . . . , nstruct(L·j ) = struct(A·j (j : n)) ∪⋃k=1,...,j−1r(k)=jstruct(L·k (j + 1 : n)).


2.3. SYMBOLISCHE PHASE FÜR DIE LDL T -FAKTORISIERUNGBeweis: Wir zeigen zuerst(2.3.1) struct(L·j ) = struct(A·j (j : n)) ∪Beweis zu (2.3.1):j ∈ struct(L·j ), denn L jj = 1.j ∈ struct(A·j (j : n)), denn A ist spd.Sei i ∈ struct(L·j ), i ≠ j, also i > j.⋃k=1,...,j−1k∈struct(L j·)j−1∑0 ≠ l ij = a ij − l ik d kk l jkk=1struct(L·k (j + 1 : n)).l ij ≠ 0 ⇐⇒ a ij ≠ 0 oder ∃k ∈ {1, . . . , j − 1} mit l ik ≠ 0 <strong>und</strong> l jk ≠ 0⇐⇒⇐⇒Dies beweist (2.3.1).i ∈ struct(A·j (j + 1 : n)) oder∃k ∈ {1, . . . , j − 1} mit i ∈ struct(L·k ) <strong>und</strong> k ∈ struct(L j·)⋃i ∈ struct(A·j (j + 1 : n)) ∪ struct(L·k )k=1,...,j−1k∈struct(L j·)Zum Beweis des Satzes bemerken wir zunächst noch(2.3.2) r(k) < l ⇒ struct(L·k (l + 1 : n)) ⊆ struct(L·r(k) (l + 1 : n)),denn aus (2.3.1) mit j = r(k) folgtstruct(L·r(k) ) ⊇ struct(L·k (r(k) + 1 : n)) , da k ∈ struct(L r(k)·).Für ein k ∈ {1, . . . , j − 1}, k ∈ struct(L j·) giltr(k) = j oder r(k) < j.Per Induktion folgt: Für jedes k ∈ {1, . . . , j − 1}, k ∈ struct(L j·) gibt esein m ∈ N mit j = r m (k) (= r(r(. . . (r(k)) . . .))) <strong>und</strong> r l−1 (k) < r l (k) fürl = 1, . . . , m − 1. Wegen (2.3.2) gilt dann(2.3.3) struct(L·k (j + 1 : n)) ⊆ . . . ⊆ struct(L·r m−1 (k)(j + 1 : n)).Für k ′ = r m−1 (k) gilt r(k ′ ) = j. Aus (2.3.1) <strong>und</strong> (2.3.3) folgt somit⋃struct(L·j ) = struct(A·j (j : n)) ∪ struct(L·k (j + 1 : n)).42k=1,...,j−1r(k)=j


2.3. SYMBOLISCHE PHASE FÜR DIE LDL T -FAKTORISIERUNG□Aufbauend <strong>auf</strong> diesem Satz bietet sich folgende Methode zum Aufbau derDatenstruktur für L an:2.3.3 Algorithmus(Cholesky-Faktorisierung, symbolische Phase)for i = 1 to n doinitialisiere eine leere Liste L i{ L i nimmt alle Spalten j von L <strong>auf</strong> mit r(j) = i }end forfor j = 1 to n − 1 do {bestimme Spalte j}struct(L·j ) = struct(A·j (j : n)) ∪ ⋃k∈L jstruct(L·k (j + 1 : n))bestimme r(j)füge j in L r(j) einend for2.3.4 BemerkungDie Listen L k vermeiden die sonst <strong>auf</strong>wändige Suche nach l mit r(l) = k.Beim gepackten (spaltenweisen!) Format für L geht das einfach mit zweizusätzlichen Feldern headers <strong>und</strong> links der Länge n.Beispiel:⎡⎤xxx⎢ x x x⎥⎣ x x x ⎦x x x xi/k 1 2 3 4 5 6 7 8cl 2 2 1 2 0cst 1 3 5 6 8rn 4 5 4 6 6 5 6headers - - - 2 4 3 6links 0 1 0 0 0 5Die Vereinigungsoperation in Schritt j führt man z.B. folgendermaßen durch:{p : globaler Zeiger}43


2.3. SYMBOLISCHE PHASE FÜR DIE LDL T -FAKTORISIERUNGcst(j) := p; cl(j) := 0; r(j) := n + 1;scatter A·j in w{w globaler Vektor}for all k ∈ L j doscatter L·k in wend forfor l = csta(j) to csta(j) + cla(j) − 1 do {Spalte j von A}i = rna(l)if w i ≠ 0 thenw i := 0if i > j then{füge i in Struktur für L·j ein}rn(p) := icl(j)++p++if i < r(j) thenr(j) := iend ifend ifend ifend forfor all k ∈ L j do {relevante Spalten von L}for l = cst(k) to cst(k) + cl(k) − 1 doi = rn(l)if w i ≠ 0 thenw i := 0if i > j then{füge i in Struktur für L·j ein}rn(p) := icl(j)++p++if i < r(j) thenr(j) := iend ifend ifend ifend forend forif r(j) < n + 1 thenfüge j in die Liste L r(j) einend if44


2.3. SYMBOLISCHE PHASE FÜR DIE LDL T -FAKTORISIERUNGFür den Gesamtrechen<strong>auf</strong>wand erhalten wirO(n) +∑n−1j=1∑k∈L jO(cl(k)) + O(cla(k)).(O(cla(k)): k-te Spalte von A = O(cl(k)).)In dieser Doppelsumme kommt jeder Index k allerdings nur einmal vor. Außerdemist cla(k) ≤ cl(k). Der Aufwand ist alsoIm Fall cl(k) ≤ c also O(cn).∑n−1O(n) + O(cl(k)).k=145


KAPITEL 3Geeignete Permutationen beisymmetrischer Struktur46


Abschnitt 3.1Gr<strong>und</strong>begriffe aus der <strong>Graphen</strong>theorie3.1.1 DefinitionEin (ungerichteter) Graph G = (V, E) ist gegeben durchV = {1, . . . , n}” Knoten“,E ⊆ V × V” Kanten“.3.1.2 DefinitionDie Matrix A ∈ R n×n sei symmetrisch. Der zu A gehörige Graph G(A) istgegeben durchV = {1, . . . , n},E = {{i, j} ∈ V × V : a ij ≠ 0 ∧ i ≠ j}.3.1.3 Beispiel⎡A =⎢⎣x xx xx x x xx xx x x⎤⎥⎦G(A)1 ✉ 2 ✉3 ✉✉5✉43.1.4 DefinitionG = (V, E) sei ein Graph.


3.1. GRUNDBEGRIFFE AUS DER GRAPHENTHEORIEa) i, j ∈ V heißen verbindbar, falls i = i 0 , i 1 , . . . , i l = j ∈ V existieren mit{i ν , i ν+1 } ∈ E, ν = 0, . . . , l − 1. Dabei heißt k = (i = i 0 , i 1 , . . . , i l = j)ein Kantenzug der Länge l(k) = l von i 0 nach i l .b) G heißt zusammenhängend, falls alle i ≠ j ∈ V verbindbar sind.c) G heißt zyklusfrei, falls es keinen Kantenzug der Länge l > 2 gibt, sodassi ν ≠ i µ , ν ≠ µ, ν, µ = 0, . . . , l − 1, i l = i 0 .d) Ein zusammenhängender, zyklusfreier Graph heißt Baum.3.1.5 Beispiela) G(A) aus Beispiel 3.1.3 ist ein Baum. Es ist (1, 3, 5, 2) ein Kantenzugvon 1 nach 2. Auch (1, 3, 5, 3, 5, 2) ist ein solcher.b) Folgender Graph ist zusammenhängend, aber kein Baum.1 2✉ ✉✉ ✉3 4c) Folgender Graph ist nicht zusammenhängend, aber zyklusfrei1 ✉2 ✉4 ✉5 ✉✉ 36 ✉✉ 7Die Relation ”ist verbindbar mit“ wird zu einer Äquivalenzrelation, wennman per Definition festlegt, dass jeder Knoten mit sich selbst verbindbar ist.3.1.6 DefinitionSei G = (V, E) ein Graph.a) G ′ = (V ′ , E ′ ) heißt Teilgraph von G, falls V ′ ⊆ V , E ′ ⊆ E.b) Für V ′ ⊆ V heißt G ′ = (V ′ , E ′ ) der von V ′ induzierte Teilgraph von G,falls giltE ′ = {e ∈ E : e = {i, j}, i, j ∈ V ′ }.48


3.1. GRUNDBEGRIFFE AUS DER GRAPHENTHEORIEc) Die von den Äquivalenzklassen bezüglich ”verbindbar mit“ induziertenTeilgraphen von G heißen Zusammenhangskomponenten.3.1.7 BeispielDer Graph aus Beispiel 3.1.5 c) besitzt drei Zusammenhangskomponenten.3.1.8 SatzFür A ∈ R n×n , A = A T besitze G(A) die m Zusammenhangskomponenten(V i , E i ), i = 1, . . . , m. Es sei π eine Permutation der Menge {1, . . . , n}, dienach Zugehörigkeit zu den V i sortiert, d.h. es gelte∑i−1V i = {π(j i + 1), . . . , π(j i+1 )} mit j i = |V l |.Sei P die zugehörige Permutationsmatrix. Dann besitzt die Matrix P AP Tdie Blockdiagonalgestalt:⎛⎞P AP T =⎜⎝l=1= diag(B 1 , . . . , B m )⎟⎠mit B i ∈ R |V i|×|V i | , i = 1, . . . , m.Beweis: Eigentlich trivial. Für einen formalen Beweis:M i = {j i + 1, . . . , j i+1 }also π(M i ) = V iSind nun i, j so, dass i ∈ M l , j ∈ M k mit l ≠ k, so gilt π(i) ∈ V l , π(j) ∈ V k .Nach Voraussetzung ist dann 0 = a π(i),π(j) = (P AP T ) ij□Beim Lösen eines linearen Gleichungssystems kann man sich also <strong>auf</strong> dieeinzelnen Diagonalblöcke beschränken.Wie findet man Zusammenhangskomponenten? Mit den üblichen Technikenzum Durchl<strong>auf</strong>en eines <strong>Graphen</strong>.49


3.1. GRUNDBEGRIFFE AUS DER GRAPHENTHEORIE3.1.9 Algorithmus(bestimmt alle Zusammenhangskomponenten)nr := 0for v = 1 to n doif v nicht markiert thennr++markiere v mit nrfüge v in eine leere Datenstruktur D einwhile D ≠ ∅ doentferne Knoten w aus Dfor all Kanten {w, u} doif u noch nicht markiert thenmarkiere u mit nrfüge u in D einend ifend forend whileend ifend for{alle Knoten}D Schlange: ”breadth first“D Stapel: ”depth first“2 ✉5 ✉1 ✉3 ✉ ✉47 ✉8 ✉6 ✉50


3.1. GRUNDBEGRIFFE AUS DER GRAPHENTHEORIED SchlangeD 1 2 3 4 5 6 7 8∅ - - - - - - - -1 12,3 1 13,4 14,5 15,6 16∅7 28 2∅Der folgende Satz ist aus dem Gr<strong>und</strong>studium bekannt.3.1.10 Satza) Algorithmus 3.1.9 bestimmt die Zusammenhangskomponenten. Die ZusammenhangskomponenteV i besteht aus den mit i markierten Knoten.b) Der Aufwand beträgt O(|V | + |E|), wenn man den <strong>Graphen</strong> in einerAdjazenz-Listen-Darstellung abspeichert.c) Unser gepacktes Format (oder Listenformat) ohne val ist gerade einesolche Darstellung für G(A). Wir brauchen also nur ein Feld für dieMarkierungen <strong>und</strong> die Datenstruktur D.Ab jetzt gehen wir davon aus, dass G(A) zusammenhängend ist, d.h. dieZusammenhangskomponenten seien bereits gef<strong>und</strong>en.51


Abschnitt 3.2Reduktion des Profils3.2.1 DefinitionFür A = (a ij ) ∈ R n×n , eventuell unsymmetrisch, ist die Enveloppe gegebendurch zwei Vektoren p, q mitp(i) =iminj=1 {j : a ij ≠ 0}q(j) = jmini=1 {i : a ij ≠ 0}Es wird a ii ≠ 0 vorausgesetzt, also istlinke Enveloppe“,”obere Enveloppe“.”p(i) ≤ i, q(i) ≤ i.Beispiel:1 2 3 4 51 x x x2 x x x3 x x4 x x5 x x xp = (1, 1, 2, 3, 3)q = (1, 1, 3, 2, 1)Bei <strong>Matrizen</strong> mit symmetrischer Struktur ist p = q. Insbesondere gilt diesalso auch für symmetrische <strong>Matrizen</strong>.3.2.2 Definitiona) Das Profil einer Matrix A ist die MengeP r(A) = {(i, j) : p(i) ≤ j ≤ i oder q(j) ≤ i ≤ j}alias: Skyline“. ”Das Profil für obiges Beispiel ist


3.2. REDUKTION DES PROFILS1 2 3 4 51 x x x2 x x x3 x x4 x x5 x x xb) A ∈ R n×n heißt Bandmatrix mit den halben Bandbreiten b l , b u , fallsb l , b u minimal sind mitp(i) ≥ max{1, i − b l }q(j) ≥ max{1, j − b u }Halbe Bandbreiten für obiges Beispiel:1 2 3 4 51 x x x x x2 x x x3 x x4 x x5 x x x} {{ }b l⎫⎪⎬b u⎪⎭b l = 2, b u = 4.3.2.3 DefinitionA = (a ij ) heißt block-tridiagonal, falls es n 1 , . . . , n N ,N∑n i = ni=1gibt mit⎡A =⎢⎣B 1 C 1A 2 B 2 C 2A 3 B 3 C 3A 4 B 4. ..⎤⎥⎦. .. . ..mit B i ∈ R n i×n i, A i ∈ R n i×n i−1, C i ∈ R n i×n i+1. Falls A = A T ist, gilt B i = B T i<strong>und</strong> C i = A T i+1 . 53


3.2. REDUKTION DES PROFILSThema dieses Abschnitts: Suche Permutationen so, dass das Profil klein wird(d.h. p(i) möglichst groß). Die Struktur soll also nahe der Diagonalen konzentriertsein. Hintergr<strong>und</strong> ist der folgende Satz:3.2.4 SatzSei A = A T mit Enveloppe p A (= q A ). Dann gilt für L in A = LDL T (Existenzvorausgesetzt) für die Enveloppen p L , q Lp L = p A , q L (j) = j, j = 1, . . . , n.Beweis: q L (j) = j klar wegen unterer Dreiecksgestalt von L. Für i > j gilt:()j−1∑l ij = a ij − l ik d kk l jk /d jj (Algorithmus 1.3.15).k=1Für festes i bedeutet diesa ij = 0 ∧ l i1 , . . . , l i,j−1 = 0 ⇒ l ij = 0.Per Induktion über j ergibt sich damitj < p A (i) ⇒ l ij = 0j = p A (i) ⇒ l ij ≠ 0 (= a ij /d jj ).Also gilt p A = p L .□Bemerkung:a) Der Satz gilt auch, wenn man zufällige Nullen berücksichtigen würde.b) Sind ”innerhalb“ des Profils von A Einträge = 0, so sind sie in L imAllgemeinen ≠ 0.Siehe Übungs<strong>auf</strong>gabe 18 für mehr Details.Ab jetzt sei A symmetrisch oder wenigstens die Struktur. Wir benötigen:3.2.5 LemmaSei π eine Permutation <strong>auf</strong> {1, . . . , n}, A = A T ∈ R n×n , G(A) = (V, E) derzugehörige Graph, P die Permutationsmatrix zu π. Dann istG(P AP T ) = ({1, . . . , n}, E ′ )mit{i, j} ∈ E ′ ⇐⇒ {π(i), π(j)} ∈ E.54


3.2. REDUKTION DES PROFILSG(P AP T ) entsteht also aus G(A) durch Umnummerierung“ der Knoten.”Beweis: Trivial.□3.2.6 DefinitionG = ({1, . . . , n}, E) sei ein (zusammenhängender) Graph, S 1 ⊆ {1, . . . , n}fest. Dann sind (die zu S 1 gehörigen) Levelmengen S 1 , S 2 , . . . definiert durchS 2 = {v : ∃w ∈ S 1 mit {v, w} ∈ E} S 1S 3 = {v : ∃w ∈ S 2 mit {v, w} ∈ E} (S 1 ∪ S 2 ). =.S i = {v : ∃w ∈ S i−1 mit {v, w} ∈ E} (S 1 ∪ . . . ∪ S i−1 ).S i ist also gerade die Menge aller Knoten, die von S 1 durch einen Kantenzugder Länge i − 1 — <strong>und</strong> keinen kürzeren — erreichbar sind.3.2.7 LemmaFür die Levelmengen S i gilt:a) Es existiert ein i 0 ≥ 1, i 0 ≤ n, so dass S j = ∅ für j > i 0 .b) S i ∩ S j = ∅ für i ≠ j.c) ⋃ iS i = {1, . . . , n} (Voraussetzung: G ist zusammenhängend).d) S i = {v : ∃w ∈ S i−1 mit {v, w} ∈ E} (S i−1 ∪ S i−2 ).Beweis: Trivial.3.2.8 Beispiel□9✉ ✉ ✉10 11S 3✉ ✉ ✉ ✉ ✉4 5 6 7 8S 2✉ ✉ ✉1 2 3S 1Levelmengen startend mit S 1 = {1, 2, 3}:S 1 = {1, 2, 3}S 2 = {4, 5, 6, 7, 8}S 3 = {9, 10, 11}.55


3.2. REDUKTION DES PROFILSZugehörige Matrix P AP T :Also b u = b l = 5.1 2 3 4 5 6 7 8 9 10 111 x x x x2 x x x x3 x x x x4 x x x x5 x x x x x6 x x x x x7 x x x x x8 x x x x9 x x x x10 x x x x11 x x x x9✉ ✉ ✉10 11✉ ✉ ✉ ✉ ✉4 5 6 7 8✉ ✉ ✉1 2 3S 1 S 2 S 3 S 4 S 5Levelmengen startend mit S 1 = {4}:S 1 = {4}S 2 = {1, 5, 9}S 3 = {2, 6, 10}S 4 = {3, 7, 11}S 5 = {8}56


3.2. REDUKTION DES PROFILSZugehörige Matrix P AP T :Also b u = b l = 3.4 1 5 9 2 6 10 3 7 11 84 x x x x1 x x x x5 x x x x x9 x x x x2 x x x x6 x x x x x10 x x x x3 x x x x7 x x x x x11 x x x x8 x x x xAllgemein gilt: Ordnet man die Knoten in der Reihenfolge S 1 , S 2 , S 3 , . . . an,so besitzt die permutierte Matrix Block-Tridiagonalgestalt mit n i = |S i |.Insbesondere gilt für die halben Bandbreitenb l = b u ≤ n−1maxi=1 {|S i| + |S i+1 |} − 1.Der Algorithmus von Cuthill-McKee (1969) verwirklicht eine Nummerierungnach Levelmengen in einer breadth-first-Suche. Er verwendet für S 1 eine einelementigeMenge.57


3.2. REDUKTION DES PROFILS3.2.9 Algorithmus(Cuthill-McKee){bestimmt die CM-Anordnung π; Ausgangsmenge S 1 = {v}}l := 1; s(v) := 1; π(v) = 1;enqueue(S, v){füge v in die leere Schlange S ein}while S ≠ ∅ dow = dequeue(S) {entferne w aus S}for all x mit {w, x} ∈ E doif x nicht markiert thenl++π(x) = ls(x) = s(w) + 1enqueue(S, x){füge x in die Schlange ein}end ifend forend whileBeachte: ”nicht markiert“ ̂= π(x) nicht definiert. s(w) : w ∈ S s(w)Algorithmus 3.2.9 ist ein Spezialfall von Algorithmus 3.1.9, also:Aufwand: O(|V | + |E|).3.2.10 Lemmaa) Der Algorithmus bestimmt die Levelmengen S i von G(A) bei StartS 1 = {v}, wobei S i = {w : s(w) = i}.b) Für die CM-Anordnung π gilt für die permutierte Matrix B = P AP TBeweis:(i) B ist block-tridiagonal.(ii) Für die Enveloppe p von B gilt: p(i) ≤ p(i + 1), i = 1, . . . , n − 1.a) (eigentlich Info II)Vorüberlegung: ist S = [x 1 , . . . , x p ] die Schlange in irgendeinem Momentdes Algorithmus, so gilt:(3.2.1) s(x 1 ) = . . . = s(x p )58


3.2. REDUKTION DES PROFILSoder(3.2.2) s(x 1 ) ≤ . . . ≤ s(x p ) = s(x 1 ) + 1Beweis dazu: Am Anfang (S = {v}) ist das trivial. Die dequeue-Operation beläßt (3.2.1) bei (3.2.1) oder (3.2.2) bei (3.2.2) oder überführt(3.2.2) nach (3.2.1). Die enqueue-Operation fügt nach zuvor erfolgtendequeue von x 1 einen Knoten x mit s(x) = s(x 1 ) + 1 am Endean.Jetzt zum Beweis:Per Induktion über i zeigen wir S i = {x : s(x) = i}.i = 1: S 1 = {v}. Einziger Knoten mit s(x) = 1 ist gerade v.i i + 1: Sei x ∈ S i+1 <strong>und</strong> (v, . . . , ˜w, x) ein Kantenzug der Länge i+1von v nach x. Dann gilt ˜w ∈ S i , also nach Induktionsannahmes( ˜w) = i.Fall 1: x wird markiert bei Entfernung von ˜w aus S. Dannist s(x) = s(w) + 1 = i + 1.Fall 2: x wurde früher markiert, bei Entfernung von ŵ.Dann ist s(ŵ) ≤ s( ˜w) wegen (3.2.1), (3.2.2).Angenommen, s(ŵ) < s( ˜w). Nach Indunktionsannahme istdann ŵ ∈ S s(ŵ) mit s(ŵ) < i. Es existiert also ein Kantenzugder Länge s(ŵ) von v nach ŵ; durch Verlängerung um {ŵ, x}wird dies ein Kantenzug der Länge ≤ i von v nach x. Widerspruch zu x ∈ S i+1 .Also ist s(ŵ) = s( ˜w) = i <strong>und</strong> s(x) = i + 1. Damit istgezeigt: S i+1 ⊆ {x : s(x) = i + 1}. Sei nun s(x) = i + 1<strong>und</strong> x sei markiert worden von w aus mit s(w) = i. NachInduktionsannahme existiert ein Kantenzug der Länge i vonv nach w, also der Länge i + 1 von v über w nach x. Das(x) = i+1 gilt nach Induktionsannahme x ∉ (S 1 ∪. . .∪S i ).Also ist x ∈ S i+1 .b) Nach Konstruktion von π gilt¯S i = π(S i ) = {n i−1 + 1, . . . , n i }, i = 1, . . . , k(0 = n 0 < n 1 < . . . < n k = n). Also besitzt B Tridiagonalgestalt mitBlöcken der Dimension m i = n i − n i−1 . ( A i = C T i−1 )59


3.2. REDUKTION DES PROFILSKein CiT besitzt eine Nullzeile, denn jeder Knoten aus ¯S i ist mit einemaus ¯S i−1 verb<strong>und</strong>en. Also ist schon klar:Zu zeigen bleibt noch:n i−1 + 1 ≤ p(l) ≤ n i − 1, n i + 1 ≤ l ≤ n i+1 .n i + 1 ≤ l < k ≤ n i+1 ⇒ p(l) ≤ p(k).Es sei l = π(l ′ ), k = π(k ′ ). Wegen l < k wurde l ′ also vor k ′ markiert.Es ist p(l) = π(w), wenn l ′ in Kante {w, l ′ } bei der Entnahmevon w markiert wurde. Entsprechend ist p(k) = π( ˜w), wobei ˜w späteruntersucht wurde als w oder w = ˜w, also ist π( ˜w) ≥ π(w).Aufgr<strong>und</strong> von Lemma 3.2.10 hat das Profil von B ”Treppengestalt“:⎡⎢⎣⎤xx xx 0 xx 0 xx 0 0 xx xx 0 x⎥x x ⎦x 0 x□Hierbei werden ”innere Nullen“ nicht ausgenutzt. Ein ”Einrücken“ der Skylinewäre aber durchaus wünschenswert.Idee: Bei CM hat das Profil, ”von unten betrachtet“ durchaus solche Einrükkungen.Wir spiegeln deshalb die Matrix an der Antidiagonalen /, d.h. wirdrehen die Ordnung um.3.2.11 DefinitionDie sogenannte umgekehrte CM-Anordnung (RCM = reverse Cuthill-McKee)ist gegeben durch die Permutation ρBezeichnung:ρ(i) = n + 1 − π(i), i = 1, . . . , n.B = P AP T ” CM“60


3.2. REDUKTION DES PROFILSC = RAR T ” RCM“Dann istC(i, 1 : i) = C(1 : i, i) = B(n : −1 : n + 1 − i, n + 1 − i).(i-te Zeile von C (bis Diagonale) = n+1−i-te Spalte von B (ab Diagonale).)3.2.12 Beispiel✉ 1✉ 3✉ 7G(A) =2✉✉ 6✉ 4✉ 5S 1 = {1}, S 2 = {2}, S 3 = {3, 4, 5, 6, 7}⇒ CM-Anordnung liegt bereits vor.RCM-Anordnung:1 2 3 4 5 6 71 x x2 x x x x x x x3 x x4 x x5 x x6 x x7 x x7 6 5 4 3 2 17 x x6 x x5 x x4 x x3 x x2 x x x x x x x1 x x61


3.2. REDUKTION DES PROFILSRCM hat sich in der Praxis (insbesondere bei finiten Elementen) gut bewährt<strong>und</strong> ist stets besser als CM in folgendem Sinne:3.2.13 SatzSei A = A T ∈ R n×n , P sei CM-Permutationsmatrix, R sei RCM-Permutationsmatrix.Dann gilt für die Profile der permutierten <strong>Matrizen</strong>|P r(RAR T )| ≤ |P r(P AP T )|.Beweis: Formal eher abstoßend; im Prinzip aber klar am Bild:Pr(RAR T)+Pr(PAP T)□CM bzw. RCM hängen von der Wahl des Startknotens v mit S 1 = {v} ab.Gute Wahl dann, wenn |S i | klein ist für alle i (denn dann ist p(l) groß). Esist schwer, v mit Blick <strong>auf</strong> |S i | optimal zu wählen. Stattdessen versuchen wir,die Zahl der Levelmengen möglichst groß zu machen.3.2.14 DefinitionSei G = (V, E) ein zusammenhängender Graph.a) Ein Kantenzug in G heißt Pfad, wenn der Kantenzug keinen Knotenmehrfach enthält. Die Länge eines Kantenzuges k bezeichnen wir mitl(k).b) Für v, w ∈ V ist der Abstand d(v, w) definiert alsd(v, w) = min{l(k) : k ist Kantenzug, der v mit w verbindet}62


3.2. REDUKTION DES PROFILS= min{l(k) : k ist Pfad, der v mit w verbindet}.c) Die Exzentrizität eines Knotens v ∈ V ist gegeben durchɛ(v) = max d(v, w).w∈Vd) Der Durchmesser d von G ist gegeben durchd(G) = max ɛ(v).v∈V3.2.15 LemmaG = (V, E) sei zusammenhängend. Für die von S 1 = {v} induzierten Levelmengengilt(i) S i ≠ ∅, i = 1, . . . , ɛ(v) + 1.(ii) S i = ∅, i > ɛ(v) + 1.Beweis: Trivial.3.2.16 DefinitionSei G = (V, E) zusammenhängend. Dann heißt v ∈ V(i) peripher, wenn ɛ(v) = d(G).□(ii) pseudoperipher, wenn giltd(u, v) = ɛ(v) ⇒ ɛ(u) = ɛ(v).Ist v peripher <strong>und</strong> d(u, v) = ɛ(v) = d(G), so folgt ɛ(u) ≥ ɛ(v) = d(G) wieauch ɛ(u) ≤ d(G). Also ist ɛ(u) = ɛ(v) = d(G), d.h. periphere Knoten sindpseudoperipher. Pseudoperiphere <strong>und</strong> periphere Knoten liegen ”weit außen“im <strong>Graphen</strong>. Pseudoperiphere Knoten sind einfach zu bestimmen ( Algorithmus3.2.18).3.2.17 Beispiela)1✉2✉3✉4✉5✉6✉7✉8✉9✉10✉11✉12✉✉13✉14✉15✉1663


3.2. REDUKTION DES PROFILSb)peripher: 1, 4, 13, 16; d(G) = 6pseudoperipher: 1, 4, 13, 161✉2✉3✉4✉5✉6✉7✉8✉9✉10✉11✉12✉✉13✉14✉15✉16✉17✉18peripher: 4,17; d(G) = 7pseudoperipher: 4, 17 <strong>und</strong> 1, 16Wie bestimmt man einen pseudoperipheren Knoten? Wir berechnen iterativKnoten v i mit:v i nicht pseudoperipher ⇒ ɛ(v i+1 ) > ɛ(v i ).Ein solches Verfahren stoppt nach spätestens d(G) Iterationen.64


3.2. REDUKTION DES PROFILS3.2.18 Algorithmus(Gibbs, Pool, Stockmeyer; 1976){Bestimmt einen pseudoperipheren Knoten}wähle v beliebigT = {v}, m = 0while T ≠ ∅ doentferne w aus TS 1 = {w}bestimme ɛ(w) durch Berechnung aller Levelmengen (Algorithmus 3.2.9)if ɛ(w) > m thensetze T = S ɛ(w)+1 ( ”letzte“ Levelmenge)m = ɛ(w)v = wend ifend while3.2.19 SatzAlgorithmus 3.2.18 bestimmt einen pseudoperipheren Knoten v mit ɛ(v) =m.Beweis: Der Algorithmus bricht ab, da in T nur eingefügt wird, wenn sichɛ(w) erhöht. Das geschieht höchstens d(G) mal. Als v bestimmt wurde, hatsich ɛ(w) letztmalig erhöht. Für alle u ∈ S ɛ(w)+1 ist also ɛ(u) ≤ ɛ(w). Alsosogar ɛ(u) = ɛ(w). u ∈ S ɛ(w)+1 ist aber äquivalent zu d(u, w) = ɛ(u). Also giltɛ(u) = d(u, w), also ɛ(u) = ɛ(w).□Vorbereitend zur nächsten Methode:3.2.20 DefinitionG = (V, E) sei ein Graph.a) Der Knoten v heißt inzident mit Kante e, falls e = {v, w}, w ∈ V .b) Der Grad deg(v) istdeg(v) = |{e ∈ E : v ist inzident mit e}|(Anzahl der Kanten, <strong>auf</strong> denen v liegt).c) Für W ⊆ V ist adj(W ), die Adjazenzmenge von W , die Levelmenge S 2bezüglich W (also alle Knoten, die über eine Kante mit einem v ∈ Wverb<strong>und</strong>en sind <strong>und</strong> nicht in W liegen).65


3.2. REDUKTION DES PROFILSWir notieren adj G (W ), wenn der Verweis <strong>auf</strong> den zugehörigen <strong>Graphen</strong> wichtigist.Der Algorithmus von King versucht, das Profil klein zu halten, aber nichtunbedingt die Bandbreite.3.2.21 Algorithmus(King, 1970){Bestimmt die King-Reihenfolge}wähle Knoten v mit minimalem Grad.A = {v}, B = adj(A), C = V (A ∪ B)π(v) = 1, l = 1while A ≠ V dowähle w aus B mit minimalem Grad in G| B∪C (induzierter Teilgraph)l++π(w) = lA = A ∪ {w}, B = adj(A), C = V (A ∪ B)end while3.2.22 Beispiel✉ ✉10 11✉8✉9✉ ✉ ✉567✉ ✉ ✉ ✉1 2 3 4King-Reihenfolge: Start mit Knoten vom Grad 2, z.B. 1, 2, 7, 8, 9, 10, 11.Nehme 1:1 2 5 8 10 11 3 6 4 7 966


3.2. REDUKTION DES PROFILS1 2 5 8 10 11 3 6 4 7 91 x2 x x5 x x8 x x10 x x11 x x3 x x6 x x x x4 x x x7 x x9 x x xCM-Anordnung mit Start 10:Profil ̂= 33 Elemente10 8 11 5 6 1 9 3 4 2 7.RCM-permutierte Matrix:7 2 4 3 9 1 6 5 11 8 107 x2 x4 x x3 x x x9 x x1 x x6 x x x x5 x x x11 x x8 x x10 x x x xProfil ̂= 36 Elemente67


Abschnitt 3.3Die Minimum-Degree (MD)-AnordnungSei A ∈ R n×n symmetrisch (bzw. besitze wenigstens symmetrische Struktur).Wir betrachten jetzt eine Variante der Gauß-Elimination, bei der dieVertauschungen (Pivotwahl) implizit durchgeführt werden. Im Schritt k wirddie Pivotposition π k bestimmt; es seiS k = {π 1 , . . . , π k−1 }, T k = {1, . . . , n} S k .Die Berechnung von A (k+1) in Schritt k ist wie folgt zu formulieren:3.3.1 Algorithmusfor i ∈ T k+1 dol ik = a (k)iπ k/a π (k)k π kend forfor i, j ∈ T k+1 do= a (k)ija (k+1)ijend for− l ik a (k)π k j3.3.2 DefinitionZu A ∈ R n×n mit Permutation π = (π 1 , . . . , π n ) gehört die Folge von EliminationsgraphenG k = G(A (k) ) = (T k , E k )mit3.3.3 SatzEs giltT k = {1, . . . , n} S k , S k = {π 1 , . . . , π k−1 },E k = {e = {i, j} : a (k)ij ≠ 0, i, j ∈ T k }.E k+1 = {e = {i, j} ∈ E k : i, j ∈ T k+1 }∪ {e = {i, j} : i ≠ j ∧ i, j ∈ adj Gk (π k )},d.h. ”alte Kanten“ ∪ ”entstehende Kanten“, wenn man zufällige Nullen ausschließt.


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNGBeweis: Per Induktion über k; k = 1 genügt. Nach Algorithmus 3.3.1 istklar:{i, j} ∈ E 2 ⇐⇒ {i, j} ∈ E 1 ( oder {i, π 1 } ∈ E 1 <strong>und</strong> {π 1 , j} ∈ E 1 )⇐⇒ {i, j} ∈ E 1 oder i, j ∈ adj G1 (π 1 ).Für <strong>dünn</strong> <strong>besetzte</strong> <strong>Matrizen</strong> ist Algorithmus 3.3.1 äquivalent zu:.for i, j ∈ adj Gk (π k ) doa (k+1)ij = a (k)ij − l ik a (k)π k jend forDer Rechen<strong>auf</strong>wand für Schritt k wird also minimal, wenn π kwird, dass |adj Gk (π k )| = deg Gk(π k ) minimal ist.□so gewählt3.3.4 DefinitionDie Minimum-Degree (MD)-Anordnung ist eine Anordnung π 1 , . . . , π n , fürdie giltdeg Gk(π k ) = minw∈T kdeg Gk(w).Die MD-Anordnung ist im Allgemeinen nicht eindeutig. ”Greedy“-Strategiezur Verringerung des Rechen<strong>auf</strong>wandes.Mit F (A), dem Fill-in, bezeichnen wir die Menge der neuen Kanten in demEliminationsgraphenF (A) = (E 2 ∪ . . . ∪ E n ) E 1 .Nach Satz 3.3.3 gilt für jede Anordnungwobei d k = deg Gk(π k ).|E k+1 E k | ≤( )dk,2In diesem Sinne ist die MD-Strategie auch eine Greedy-Strategie zur Minimierungdes Fill-in.3.3.5 SatzG(A) sei ein Baum. Bei MD-Anordnung entsteht dann keinerlei Fill-in. Genauergilt(3.3.1) G k = G| Tk<strong>und</strong> G k ist ein Baum.69


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNGBeweis: Es genügt der Beweis für k = 2. Knoten mit minimalem Grad ineinem Baum sind die Blätter w, deg(w) = 1. Bei MD-Anordnung ist alsodeg(π 1 ) = 1. Nach Satz 3.3.3 istE 2 = {e ∈ E 1 : e = {i, j}, i, j ≠ π 1 } ∪ {{i, j} : i ≠ j, i, j ∈ T 2 , i, j ∈ adj G1 (π 1 )}= {e ∈ E 1 : e = {i, j}, i, j ≠ π 1 } ∪ ∅,da |adj G1 (π 1 )| = 1. Damit gilt E 2 ⊆ E 1 <strong>und</strong> G| T2 hat keinen Zyklus. Zu zeigenbleibt, dass G| T2 = G 2 zusammenhängend ist. Dies folgt aus dem nächstemSatz.□3.3.6 SatzEs sei G(A) zusammenhängend. Dann ist auch G k für jede Pivotwahl zusammenhängend.Beweis: Wieder reicht k = 2. Sei p = (i 0 = i, i 1 , . . . , i l−1 , i l = j) ein Pfadwelcher i, j ∈ T 2 in G 1 verbindet, i ≠ j.Fall 1: i ν ≠ π 1 für ν = 1, . . . , l − 1 ⇒ p ist ein Pfad in G 2 .Fall 2: i ν = π 1 für genau ein ν ∈ {1, . . . , l−1}. Dann ist {i ν−1 , i ν }, {i ν , i ν+1 } ∈E 1 , also nach Satz 3.3.3 {i ν−1 , i ν+1 } ∈ E 2 , also ist p ′ = {i 0 , . . . , i ν−1 , i ν+1 , . . . , i l }ein Kantenzug, der i = i 0 mit j = i l in G 2 verbindet.□3.3.7 Beispiel✉6✉7✉5Baum:3✉✉4✉1✉2Knoten in MD-Anordnung: 1 ,2, 3, 4, 6, 7, 570


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNGProfil bei MD-Anordnungxxx x xxxxxx x x x71


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNG3.3.8 BeispielMD-Anordnung für Beispiel 3.2.2110 111185 6 791085 6 791 2 3 4111 2 3 411987 15 685 691 2 3 4112 3 41189 45 685 62 3 411112 3285 68 115 65 6335 6 363372


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNG⊗: Fill-in-Positionen.10 7 1 9 4 2 8 11 5 3 610 x7 x1 x9 x x4 x ⊗ x2 x x8 x x11 x ⊗ x5 x ⊗ x ⊗ x3 x x ⊗ x6 x x x x x xIm Rest dieses Abschnitts behandeln wir effiziente <strong>Algorithmen</strong> <strong>und</strong> Datenstrukturenzur Berechnung der MD-Anordnung.Prototyp:for k = 1 to n − 1 dobestimme Knoten π k mit minimalem Grad in G k .bestimme G k+1 (d.h. E k+1 , z.B. nach Satz 3.3.3)end forDie Bestimmung von G k+1 aus G k über Satz 3.3.3 ist zu rechen- <strong>und</strong> vor allemspeicher<strong>auf</strong>wändig. Deshalb stellen wir nun zuerst Rüstzeug für raffiniertere<strong>Algorithmen</strong> zur Verfügung.Zitat (aus dem Buch von Duff, Erisman, Reid): Verbesserungen bei der MD-Berechnung führten 1970-1980 zu Beschleunigungen um Faktor 100.3.3.9 DefinitionG = (V, E) sei ein Graph, S ⊆ V , x ∈ V S, x ≠ y ∈ V . Dann heißt xvon y über S erreichbar, wenn ein Kantenzug (y, x 1 , . . . , x l−1 , x) existiert mitx 1 , . . . , x l−1 ∈ S. Die von y über S erreichbare Menge ( ”reachable set“) istReach(y, S) = {x ∈ V S : x ist von y über S erreichbar}.Beachte: Reach(y, S) ⊇ adj(y) \ S (̂= l = 1).73


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNG3.3.10 Beispiel✉ ✉ ✉ ✉ ✉1 2✉ ✉ ✉3 4✉5Die mit Doppelkreis dargestellten Knoten entsprechen S.Reach(1, S) = {2}, Reach(2, S) = {1, 3, 4},Reach(3, S) = {2, 4}, Reach(4, S) = {2, 3, 5},Reach(5, S) = {4}.Mit dem Reach-Operator kann man G k über G 1 charakterisieren:3.3.11 SatzSeien π 1 , π 2 , . . . die Pivotknoten, G 1 , G 2 , . . . die zugehörigen EliminationsgraphenG k = (T k , E k ); T k = {1, . . . , n} S k , S k = {π 1 , . . . , π k−1 }. Dann gilt füry ∈ T kadj Gk (y) = Reach G1 (y, S k ).Beweis: k = 1 : S 1 = ∅k k + 1: Sei y ∈ T k+1 , x ∈ T k+1x ∈ adj Gk+1 (y)Reach G1 (y, ∅) = adj G1 (y) nach Definition⇐⇒ x ∈ adj Gk (y) oder x, y ∈ adj Gk (π k )⇐⇒ x ∈ Reach G1 (y, S k ) oder x, y ∈ Reach G1 (π k , S k )⇐⇒ x ist von y erreichbar über S k oder x <strong>und</strong> y sind von π k erreichbarüber S k⇐⇒ x ist von y erreichbar über S k oder x ist von y erreichbar über S k+1⇐⇒ x ist von y erreichbar über S k+1 also x ∈ Reach G1 (y, S k+1 ).Mit dem Reach-Operator haben wir eine implizite (im Vergleich zu den Eliminationsgraphen)Darstellung der Gauß-Elimination erreicht. Im Prinzip istso die MD-Anordnung ohne zusätzlichen Speicher<strong>auf</strong>wand bestimmbar, aberimmer noch mit zu hohem Rechen<strong>auf</strong>wand. neues Konzept zur Bestimmungvon Reach.74□


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNG3.3.12 DefinitionG = (V, E) sei ein Graph <strong>und</strong> V = {V 1 , . . . , V m } eine Partition von V , d.h.∅ ≠ V i ,m⋃V i = V, V i ∩ V j = ∅ für i ≠ j.i=1Dann ist der Quotientengraph G = G/V gegeben durch G = (V, E) mit{V i , V j } ∈ E ⇐⇒ ∃ v i ∈ V i , v j ∈ V j mit {v i , v j } ∈ EStatt mit V 1 , . . . , V m kann man die Knoten in G mit 1, . . . , m bezeichnen oderaber auch durch ausgewählte v i ∈ V i .Zusätzliche Bezeichnung: Für u ∈ V ist [u] die Menge V i ∈ V mit u ∈ V i .(Äquivalenzklasse bezüglich der Relation ”u ist in derselben Menge V i wiev“.).3.3.13 Beispiel✉ ✉ ✉ ✉ ✉1 6 7 2 8✉ ✉ ✉3 4 95✉G = G/V :V = {{1}, {6, 7}, {2}, {3, 4, 8, 9}, {5}}✉ ✉ ✉ ✉ ✉1 6,7 2 3,4,8,9 5Knoten in G, die mehreren Knoten aus G entsprechen, nennen wir Superknoten.3.3.14 DefinitionSei G = (V, E) ein Graph, π 1 , . . . , π n Pivotknoten, S k = {π 1 , . . . , π k−1 },T k = {1, . . . , n} S k . Die Quotienten-Eliminationsgraphen G k sind definiertwie folgt:V k = Zusammenhangskomponenten von G| Sk ∪ {{w} : w ∈ T k },G k = G/V k .75


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNG3.3.15 BeispielG aus Beispiel 3.3.8.✉ ✉10 11✉8✉9✉ ✉ ✉567✉ ✉ ✉ ✉1 2 3 4k = 7; S 7 = {10, 7, 1, 9, 4, 2}G 7 :✉ ✉10 11✉11✉8✉85✉✉65✉✉6✉ ✉ ✉1,2 3 4,7,9✉3Vergleich mit G 7 aus Beispiel 3.3.8: Kanten in G 7 entsprechen Kanten in G 7zwischen normalen Knoten oder Kantenzug der Länge 2 über Superknoten.Bezeichnung: C(S k ): Menge der Zusammenhangskomponenten (nur Knotenmenge)von G| Sk .3.3.16 SatzFür y ∈ T k gilt⋃Reach G1 (y, S k ) =[x][x]∈Reach Gk ([y],C(S k ))oder, kürzer, in falscher Notation aber verständlich (wir identifizieren Mengenvon Mengen mit der Menge aus allen Elementen!)Beweis:Reach G1 (y, S k ) = Reach Gk ([y], C(S k )).76


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNG” ⊆“: Sei u ∈ Reach G 1(y, S k ).1. Fall: u ∈ adj G1 (y). Wegen y ∉ S k ist [y] = {y}. Es ist also [u] ≠ [y].u ∈ adj G1 (y) ⇒ [u] = [y] (wurde gerade ausgeschlossen)oder [u] ∈ adj Gk ([y])⇒ [u] ∈ Reach Gk ([y], C(S k )).2. Fall: u ∉ adj G1 (y).u ∉ adj G1 (y) ⇒ ∃ Kantenzug (y, x 1 , . . . , x l−1 , u) in G 1mit x 1 , . . . , x l−1 ∈ S k⇒ x 1 , . . . , x l−1 ∈ [x 1 ]⇒ ∃ Kantenzug ([y], [x 1 ], [u]) in G k⇒ [u] ∈ Reach Gk ([y], C(S k )).” ⊇“: Sei [u] ∈ Reach G k([y], C(S k )). Sei ([y], [x 1 ], . . . , [x l−1 ], [u]) ein Kantenzug,über den [y] in C(S k ) erreichbar ist. Da die [x ν ] zusammenhängendsind, ist l = 1 oder l = 2. Im Fall l = 1 ist {y, u} ∈ E 1 , im Falll = 2 ist u in G 1 über [x 1 ] erreichbar. In beiden Fällen ist also u ∈Reach G1 (y, S k ). Sei ũ ∈ [u], ũ ≠ u. Dann ist ũ mit u über einen Kantenzugaus [u] ⊆ S k verb<strong>und</strong>en. Also folgt auch ũ ∈ Reach G1 (y, S k ).□Wichtige Bemerkung: Der Beweis zeigt, dass in G k die erreichbaren Knotenimmer über Kantenzüge der Länge ≤ 2 erreichbar sind.3.3.17 Algorithmus( Bestimmung von Reach Gk (y, C(S k )), y ∉ S k , grobe Fassung )R = ∅for all [x] ∈ adj Gk ([y]) doif [x] ∈ C(S k ) then{Superknoten}R := R ∪ adj Gk ([x])elseR := R ∪ {x}end ifend forR = R {y}77


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNGWir wollen im Detail ausarbeiten, wie man die Folge der G k algorithmischbestimmt. Wir weisen zuerst nach, dass man keinerlei zusätzlichen Speicherbraucht als für G 1 .3.3.18 LemmaSei G = (V, E), C ⊆ V so, dass G| C zusammenhängend ist. Dann gilt∑|adj(x)| ≥ |adj(C)| + 2(|C| − 1).x∈CBeweis: Die Kantenmenge von G| C bezeichnen wir mit V C . In ∑ x∈C |adj(x)|wird jede Kante aus V C zweimal gezählt, jede andere Kante (von C nachV C) nur einmal. Also gilt∑|adj(x)| = 2|V C | + |adj(C)|.x∈CWeil G| C zusammenhängend ist, ist V C ≥ |C| − 1.□3.3.19 LemmaFür y ∈ T k = {1, . . . , n} S k gilt|adj Gk−1 (y)| ≥ |adj Gk (y)|.Beweis: Übungs<strong>auf</strong>gabe 24.1).□3.3.20 SatzFür die Quotienten-Eliminationsgraphen G k = (V k , E k ) gilt|E k+1 | ≤ |E k | ≤ |E|, k = 1, . . . , n − 1.Beweis: k = 1 ist ok, da G 1 = G 1 . Die Behauptung gelte für k − 1. Sei π knächster Pivotknoten.1. Fall: π k ∉ adj Gk (C(S k ))<strong>und</strong> E k+1 = E k .2. Fall: π k ∈ adj Gk (C(S k ))⇒ C(S k+1 ) = C(S k ) ∪ {{π k }}⇒ C(S k ) = {[x 1 ], . . . , [x l ]}; C(S k+1 ) = {[x 1 ], . . . , [x m ], [y]},78


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNGm < l. (π k ∈ adj([x ν ]), ν = m+1, . . . , l, [y] = {π k }∪[x m+1 ]∪...∪[x l ]).Nun gilt|E k | = 1 ∑|adj Gk ([x])|2[x]∈V k= 1 ∑|adj Gk ([x])| + 1 22∑|adj Gk ([x])|[x]∈V k[x]≠π k ,[x m+1 ],...,[x l ][x]∈V k[x]=π k ,[x m+1 ],...,[x l ]≥≥ 1 21. Term + 1 2 |adj G k([y])|∑[x]∈V k[x]≠π k ,[x m+1 ],...,[x l ]= 1 ∑|adj Gk+1 ([x])| = |E k+1 |2[x]∈V k+1( L.3.3.18 mit C = {π k , [x m+1 ], . . . , [x l ]} )|adj Gk+1 ([x])| + 1 2 |adj G k+1([y])|□Wir benötigen noch eine geeignete Datenstruktur, um (Folge von) Quotienten-<strong>Graphen</strong>darzustellen. Ähnlich wie beim Listenformat für A stellenwir einen (zunächst gewöhnlichen) <strong>Graphen</strong> G = (V, E) durch seineAdjazenzlisten-(Kantenlisten)-Darstellung dar.Felder: start, adj, links1 2✉ ✉✉34✉ ✉5i/k 1 2 3 4 5 6 7 8 9 10start 1 3 4 7 9adj 2 3 1 1 4 5 3 5 3 4links 2 0 0 5 6 0 8 0 10 0Wichtige Bemerkung:<strong>Matrizen</strong> haben wirIm Vergleich zum Listenformat für <strong>dünn</strong><strong>besetzte</strong>• kein val,79


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNG• keine ”Diagonale“, d.h. es können leere Listen <strong>auf</strong>treten, falls G nichtzusammenhängend ist. Dann istzu setzen.Für alle Quotientengraphenstart(v) = 0• repräsentieren wir eine Menge V i ⊂ V durch einen ihrer Knoten. Dazuverwenden wir ein Feld super; super(v) = 1 ⇐⇒ v repräsentiert ein V i ,sonst super(v) = 0,• verwenden wir adj <strong>und</strong> links für die Kantenliste von G, was nachSatz 3.3.20 <strong>und</strong> Lemma 3.3.19 ausreicht,• führen wir ein Feld elim, welches alle (irgend)einem Superknoten angehörigenKnoten markiert.Beispiel: Obiges Beispiel mit V = {{1, 3} ̂= 1, 2, {4, 5} ̂= 4}✉ 2✉ 1,3✉ 4,5i/k 1 2 3 4 5 6 7 8 9 10start 1 3 4 7 9adj 2 4 1 1links 2 0 0 0elim 1 0 1 1 1super 1 0 0 1 0Bemerkung: Die Adjazenzliste für einen Superknoten kann eventuell denPlatz der Adjazenzlisten mehrerer Knoten ∈ Superknoten beanspruchen. (ImBeispiel nicht der Fall.) Der Platz reicht aber immer aus (siehe Beweis zuSatz 3.3.20).Nicht mehr verwendete Knoten v (elim(v) = 1 aber super(v) = 0) werdennicht systematisch entfernt.Gerüst für einen Algorithmus zur Bestimmung der MD-Anordnung.80


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNG3.3.21 Algorithmus(Bestimmt MD-Anordnung π(1), π(2), . . . , π(n))for i = 1 to n dodeg(i) = |adj(i)|{Initialisierung}end forS = ∅, T = {1, . . . , n}for i = 1 to n do{bestimme Anordnung unter Verwendung von Quotienten-<strong>Graphen</strong>}finde Knoten π(i) mit minimalem Grad aus Tbestimme R = Reach(π(i), C(S))bilde neuen Superknoten aus π(i) <strong>und</strong> den adjazenten SuperknotenS = S ∪ {π(i)}, T = T {π(i)}{datiere G <strong>auf</strong>}datiere die Adjazenzliste R für Superknoten π(i) <strong>auf</strong>for all w ∈ R do{nur hier hat sich G geändert}ersetze in Adjazenzliste für w den ersten eliminierten Knoten ymit super(y) = 0 durch π(i)datiere deg(w) <strong>auf</strong>end forend forDefinition“: In einem Algorithmus zur Faktorisierung einer <strong>dünn</strong><strong>besetzte</strong>n”Matrix ist eine O(n 2 )-Falle“ ein Teil des Algorithmus mit Aufwand Ω(n 2 ).”Hintergr<strong>und</strong>: <strong>Algorithmen</strong> sollten Aufwand O(n) bzw. O( nnz2 ) besitzen.n3.3.22 BeispielGegeben ist ein Feld a[1], . . . , a[n] ∈ R. Gesucht ist m = minna[i].i=1Bekannt: Aufwand ist Ω(n).Im MD-Algorithmus (Algorithmus 3.3.21) existiert folgende Schleifefor i = 1 to n do.(1) finde m = minw∈T deg(w)(2) datiere deg(w) <strong>auf</strong> für alle w ∈ Rend for81


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNGIst T gegeben durch {1, . . . , n} {π(1), . . . , π(i − 1)}, so ergibt sich derAufwand für (1) zu Ω(n − i), für Algorithmus 3.3.21 alson∑Ω(n − i) = Ω(n 2 )i=1← O(n 2 )-Falle.Alternativen:a) Verwende einen Heap. Dann giltAufwand für (1): O(1)Aufwand für (2): |R| · Ω(log(n − i)) Gesamt<strong>auf</strong>wand: c · Ω(n log n) (falls |R| ≤ c∀i).b) ”Threshold Searching“Gegeben: a[1], . . . , a[n] ∈ N, thresh ≤minna[j] ( =“ sehr wahrschein-j=1 ”lich)Gesucht: i mit a[i] =nminj=1 a[j].Prinzip: Berechne i wie bei Beispiel 3.3.22, aber stop, falls Wert threshgef<strong>und</strong>en wird.min1 = a[1], i1 = 1, i = 0while (i < n <strong>und</strong> nicht gef<strong>und</strong>en) doi++gef<strong>und</strong>en = ( a[i] == thresh )if a[i] < min1 theni1 = imin1 = a[i]end ifend while{jetzt gilt: gef<strong>und</strong>en <strong>und</strong> a[i] = thresh oder i = n <strong>und</strong>a[i1] = min a[j]}if nicht gef<strong>und</strong>en theni = i1thresh = a[i]{=Minimum}end if82


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNGWorst case-Abschätzung bei Einbau in MD-Algorithmus wie in denvorliegenden Matlab-Programmen: Ω(n 2 ) (thresh jedes Mal zu klein).Unter folgenden Annahmen ergibt sich ein Aufwand O(n)(i) thresh habe mit Wahrscheinlichkeit ≥ 1 −d (i-ter Schritt) denn−irichtigen“ Wert (d fester Wert),”(ii) alle vorkommenden Grade sind in jedem Schritt im Intervall [mindeg, c](c fest) gleichverteilt.Dann ergibt sich für den Aufwand im MittelAufwand ≤n∑ dn∑n − i (n − i) + 1 · O(c) = O(n(c + d))i=1i=1c) ”Listenverwaltung“ (= ”Hashing“)Wir legen Listen L i an, i = 0, . . . , n − 1. Liste L i enthält alle Knotenmit Grad i. Es soll mit Aufwand O(1) möglich sein, einen gegebenenKnoten aus der Liste zu entfernen. Dies ist mit drei (!) Feldern derDimension n möglich. Position i entspricht stets Knoten i.Beispiel n = 7Knoten 1 2 3 4 5 6 7Grad 2 0 2 3 4 4 2Operationen:deg/Knoten 0/1 1/2 2/3 3/4 4/5 5/6 6/7degstart 2 - 1 4 5 - -vorg 0 0 1 0 0 5 3nachf 3 0 7 0 6 0 0(i) entferne einen Knoten, z.B. Knoten 3. Aufwand O(1), wenn Gradbekannt ist.deg/Knoten 0/1 1/2 2/3 3/4 4/5 5/6 6/7degstart 2 - 1 4 5 - -vorg 0 0 1 0 0 5 1nachf 7 0 7 0 6 0 0(ii) Ändern des Grades eines Knotens, z.B. Knoten 5 bekommt Grad3. Füge in neue Liste ein, lösche aus alter Liste.83


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNGKnoten 1 2 3 4 5 6 7Grad 2 0 2 3 3 4 2Aufwand: O(1), wenn der alte Grad bekannt ist.deg/Knoten 0/1 1/2 2/3 3/4 4/5 5/6 6/7degstart 2 - 1 5 6 - -vorg 0 0 1 5 0 0 1nachf 7 0 7 0 4 0 0Folgerung: Es gelte mindeg ≤ c, |R| ≤ d in allen Stufen des MD-Algorithmus. Verwendet man die obige Datenstruktur, so gilt für denAufwand für (1) <strong>und</strong> (2):(1) : O(c) (suche erste nichtleere Liste)(2) : O(d)⇒ Gesamt<strong>auf</strong>wand O(n(c + d)).Zum Abschluss besprechen wir noch eine letzte Verbesserung für den MD-Algorithmus.Ausgangsüberlegung: Zwei Knoten haben ”die gleiche Nachbarschaft in G k “.3✉ ✉2✉1✉✉4✉Reach(1, S) = {2, 3, 4} Reach(2, S) = {1, 3, 4}.Es gilt dann deg Gk(1) = deg Gk(2), was sich auch in den nächsten Schrittennicht mehr ändert. Zusätzlich gilt:Wenn ein Knoten derjenige mit minimalem Grad wird (z.B. 1 = π(k)), sokann man π(k+1) = 2 nehmen (siehe Satz 3.3.27 unten). Einsparung beimAufdatieren des <strong>Graphen</strong> <strong>und</strong> bei der Minimumsbestimmung. Wir gehen diesjetzt systematisch an.3.3.23 DefinitionSei G = (E, V ), S ⊆ V , T = V S <strong>und</strong> x, y ∈ T . Dann heißen x, y nichtunterscheidbar bezüglich S ( ”nubS“), falls giltReach(x, S) ∪ {x} = Reach(y, S) ∪ {y}.84


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNG3.3.24 SatzZu G = (V, E) seien x ≠ y nubS <strong>und</strong> S ⊆ S ′ ⊆ V , x, y ∉ S ′ . Dann sindx, y nubS ′ .Beweis: Es genügt zu zeigen, dassReach(x, S ′ ) ∪ {x} ⊆ Reach(y, S ′ ) ∪ {y}gilt (wegen Symmetrie gilt dann auch ”⊃“). Nach Voraussetzung giltReach(x, S) ∪ {x} = Reach(y, S) ∪ {y}.Klar ist: y ∈ Reach(x, S ′ ), da y ∉ S ′ . Sei nun z ∈ Reach(x, S ′ ), z ≠ y. Dannexistiert ein Kantenzug (x, s 1 , . . . , s n , z), alle s i ∈ S ′ .1. Fall: Alle s i ∈ S oder n = 0. Dann ist z ∈ Reach(x, S) ⊆ Reach(y, S) ∪{y} ⇒ z ∈ Reach(y, S) ⇒ z ∈ Reach(y, S ′ ).2. Fall: Es existiert ein kleinstes i, so dass s i ∈ S ′ S ist. Dann ist s i ∈Reach(x, S) ⊆ Reach(y, S) ∪ {y} <strong>und</strong> damit z ∈ Reach(y, S ′ ). Insgesamtist alsoReach(x, S ′ ) ∪ {x} ⊆ Reach(y, S ′ ) ∪ {y}.3.3.25 LemmaSei y ∉ S, S ′ = S ∪ {y}. Dann giltReach(x, S ′ ) ={Reach(x, S) für x ∉ Reach(y, S)Reach(x, S) ∪ Reach(y, S) {x, y}sonst.□Beweis: Trivial.□3.3.26 KorollarIn der Situation von Lemma 3.3.25 gilt|Reach(x, S ′ )| ≥ |Reach(x, S)| − 1.Beweis: Im Fall x ∉ Reach(y, S) gilt |Reach(x, S ′ )| = |Reach(x, S)|. Andernfallsfolgt wegen x ∈ Reach(y, S), x ∉ Reach(x, S) die Behauptung.□85


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNG3.3.27 SatzSei x ≠ y ∉ S, x, y nubS. Weiter besitze x minimalen Grad im entsprechendenEliminationsgraphen, d.h.|Reach(x, S)| ≤ |Reach(z, S)| ∀z ∈ T.Sei S ′ = S ∪ {x}, T ′ = T {x}. Dann besitzt y minimalen Grad im nächstenEliminationsgraphen, d.h. es giltBeweis: Es giltAlso gilt für z ∈ T|Reach(y, S ′ )| ≤ |Reach(z, S ′ )| ∀z ∈ T ′ .Reach(y, S ′ ) = Reach(y, S) {x} (da x, y nubS)|Reach(y, S ′ )| = |Reach(y, S)| − 1= |Reach(x, S)| − 1≤ |Reach(z, S)| − 1≤ |Reach(z, S ′ )|.□Folgerung: Wird x = π(k) als Knoten mit minimalem Grad gef<strong>und</strong>en, kannman für die MD-Anordnung als nächstes alle Knoten y mit x, y nubS k wählen.Es entfällt also die Suche nach Knoten mit kleinstem Grad.Wie findet man nub-Knoten einfach? Für die Praxis benötigt man nicht notwendigalle. Das folgende Kriterium hat sich bewährt.3.3.28 SatzSei S ⊆ V , C 1 , C 2 zwei Zusammenhangskomponenten von G| S . Sei R 1 =adj(C 1 ), R 2 = adj(C 2 ). Dann sind alle Knoten y mity ∈ Y = {y ∈ R 1 ∩ R 2 : adj(y) ⊆ R 1 ∪ R 2 ∪ C 1 ∪ C 2 }nubS <strong>und</strong> Reach(y, S) ∪ {y} = R 1 ∪ R 2 .Beweis:” ⊆“: y ∈ R 1 ∩ R 2 ⇒ y ∈ R 1 ∪ R 2 . Sei z ∈ Reach(y, S) <strong>und</strong> (y, s 1 , . . . , s m , z)der zugehörige Kantenzug. Falls m = 0, istz ∈ adj(y) S ⊆ R 1 ∪ R 2 ∪ C 1 ∪ C 2 S ⊆ R 1 ∪ R 2 .Falls m > 0, ist s 1 ∈ adj(y)∩S ⊆ C 1 ∪C 2 . Also ist {s 1 , s 2 , . . . , s m } ⊆ C 1oder ⊆ C 2 . Also z ∈ R 1 ∪ R 2 .86


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNG” ⊇“: z ≠ y ∈ R 1 ∪ R 2 ⇒ o.B.d.A. z ∈ R 1 . Da C 1 in G| S zusammenhängendist, ist y mit z über C 1 verb<strong>und</strong>en, also auch über S <strong>und</strong> damit z ∈Reach(y, S).□87


3.3. DIE MINIMUM-DEGREE (MD)-ANORDNUNGDamit erhalten wir folgende Form des MD-Algorithmus3.3.29 Algorithmus(Berechnet die MD-Anordnung)S = ∅, T = {1, . . . , n}while T ≠ ∅ dofinde Knoten p aus T mit minimalem Gradnummeriere p <strong>und</strong> alle bekannten, von p nubS Knoten als nächstefür die MD-Anordnunglege alle in S; entferne alle aus Tbilde neue Superknoten, datiere G <strong>auf</strong> (wie Algorithmus 3.3.21)identifiziere dabei Knoten nubS nach Satz 3.3.28end whileFinale Bemerkung: Knoten nubS verwaltet man ebenfalls als Superknoten,d.h. G ist Quotientengraph bezüglich der Zusammenhangskomponenten in S<strong>und</strong> bezüglich der Mengen von nubS Knoten.88


Abschnitt 3.4One-way-Dissection <strong>und</strong> Nested Dissection3.4.1 DefinitionA ∈ R n×n besitzt Blockdiagonalform mit Rand, falls⎡(3.4.1) A =⎢⎣mit A ii ∈ R n i×n i, ∑ Ni=1 n i = n gilt.⎤A 11A 1NA 22 0 .. .. .⎥0 A N−1,N−1 A N−1,N⎦A N1 . . . . . . A N,N−1 A NNIst A symmetrisch, so gilt A Ni = A T N i, A ii = A T ii. Die Form (3.4.1) ist günstigfür (Block-) Gauß-Elimination bzw. Cholesky-Faktorisierung wegen3.4.2 SatzFalls alle nachstehenden <strong>Matrizen</strong> D ii ∈ R n i×n i, i = 1, . . . , N − 1 regulärsind, gilt2A =64II. ..A N1 D −111 . . . A N,N−1 D −1N−1,N−1I3 2D7 65 4ID −111 A 1N. ... ... .. D−1N−1,N−1 A N−1,NI375mit D ii = A ii , i = 1, . . . , N − 1, D NN = A NN − ∑ N−1j=1 A NjD −1jj A jN.Beweis: Nachrechnen!□Bemerkung: Ist A spd, so ist D ii spd, i = 1, . . . , N. Insbesondere sind alleD ii dann regulär. S. Übung.Die Darstellung aus Satz 3.4.2 ist eine Block-Faktorisierung. Zu berechnenist lediglich D NN :for j = 1 to N − 1 dolöse die n N Systeme D jj V j = A jN{D jj ist vermutlich <strong>dünn</strong> besetzt}


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTIONend forsetze D NN = A NN − N−1 ∑A Nj V jj=1Die Lösung von Ax = b erfolgt dann so:{A Nj ist vermutlich <strong>dünn</strong> besetzt}(L(D(Ux)) = b) (Bezeichnung x i ̂= Blockkomponente von x).3.4.3 Algorithmus(Lösen von Ax = b bei Block-Faktorisierung)z = bfor j = 1 to N − 1 do {̂= L}löse D jj w j = z jz N = z N − A Nj w jend forfor j = 1 to N do {̂= D}löse D jj y j = z jend forfor j = 1 to N − 1 do {̂= U}löse D jj v j = A jN y Nx j = y j − v jend forx N = y NWeil die D jj im Allgemeinen wieder <strong>dünn</strong> besetzt sind, wird man die Systememit D jj über eine Faktorisierung von D jj als db <strong>Matrizen</strong> lösen.3.4.4 DefinitionSei G = (V, E) ein zusammenhängender Graph <strong>und</strong> S ⊆ V . Dann heißt SSeparator von G, falls G| V S nicht zusammenhängend ist.90


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTIONBeispiel:1 2 3 4 56 7 8 9 1011 12{9} ist Separator ( 3 Zusammenhangskomponenten){2} ist Separator ( 2 Zusammenhangskomponenten){6, 7} ist Separator ( 4 Zusammenhangskomponenten){2, 6, 7} ist Separator ( 6 Zusammenhangskomponenten)3.4.5 LemmaA sei symmetrisch, G(A) sei zusammenhängend, S ⊆ V sei Separator, dieMengen V 1 , V 2 , . . . , V m seien (Knotenmengen der) Zusammenhangskomponentenvon G| V S . π sei eine Permutation, die zuerst alle Knoten von V 1 ,dann alle in V 2 , . . ., dann alle in V m <strong>und</strong> dann alle von S anordnet. P seizugehörige Permutationsmatrix. Dann besitzt P AP T Blockdiagonalform mitRand⎡⎤A 11A 1,m+1.P AP T .. .= ⎢⎥⎣A mm . ⎦A m+1,1 . . . . . . A m+1,m+1mit A ii ∈ R n i×n i, n i = |V i |, i = 1, . . . , m, n m+1 = |S|.Beweis: Trivial, da ein Knoten aus V i mit keinem aus V j , j ≠ i adjazent ist.□Wünschenswert sind Separatoren S mit |S| klein <strong>und</strong> m groß.Beispiel von vorhin: S = {2, 6, 7}V 1 = {1, 4}, V 2 = {3}, V 3 = {5}, V 4 = {8}, V 5 = {9, 11, 12}, V 6 = {10}.91


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTION1 4 3 5 8 11 12 9 10 2 6 71 x xx4 x xx x3 x x5 x x x8 x x11x x12x x9x x x x x10 x x2 x x x xx6 xxxx x7xx x xLevelmengen liefern ”gute“ Separatoren.3.4.6 LemmaS 1 , . . . , S k seien die Levelmengen eines <strong>Graphen</strong> G = (V, E) startend mit S 1 .Dann gilt(i) S i ist Separator für i = 2, . . . , k − 1.(ii) Für jede Indexmenge I ⊆ {2, . . . , k − 1} mit der Eigenschaft i, j ∈I, i ≠ j ⇒ |i − j| > 1 istS = ⋃ i∈IS iBeweis:Separator, so dass G| V S mindestens |I| + 1 Zusammenhangskomponentenbesitzt.(i) ist Spezialfall von (ii).(ii) Sei |I| = t ≥ 1 <strong>und</strong> I = {i 1 , . . . , i t } mit i 1 < i 2 < . . . < i t . Dann istklar:C 1 = S 1 ∪ . . . ∪ S i1 −1C 2 = S i1 +1 ∪ . . . ∪ S i2 −1besteht aus so vielen Zusammenhangs-Komponenten in G| V S wie G| S1 ,besteht aus so vielen Zusammenhangs-Komponenten wie G| Si1 +1 ,.92


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTIONC t+1 = S it+1 ∪ . . . ∪ S kbesteht aus so vielen Zusammenhangs-Komponenten wie G| Sit +1 .Außerdem sind die C i untereinander nicht verb<strong>und</strong>en.3.4.7 Algorithmus(One-Way-Dissection, George 1980){Eingabe ist ein zusammenhängender Graph G, Ausgabe ist eine Anordnungals Permutation π <strong>auf</strong> der Knotenmenge}bestimme pseudoperipheren Knoten vbestimme alle Levelmengen S 1 , . . . , S k mit S 1 = {v}nehme geeignetes I ⊆ {1, . . . , k} <strong>und</strong> setze S = ⋃finde die Permutation π wie folgt:p = 0for i = 1 to k doif i ∉ I thenfor all Knoten w ∈ S i dop++π(w) = pend forend ifend forfor i = 2 to k − 1 doif i ∈ I thenfor all Knoten w ∈ S i dop++π(w) = pend forend ifend forS ii∈I□Wie findet man geeignete Menge I?√3Empfehlung (empirisch): setze δ =n k +13<strong>und</strong> nehme:2Genauer:i ∈ I ⇐⇒ i ≈ µδ, µ ∈ N.i ∈ I ⇐⇒ i = ⌊µδ + 0.5⌋, µ = 1, . . . , m (⌊mδ + 0.5⌋ < k ≤ ⌊(m + 1)δ + 0.5⌋).93


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTION3.4.8 BeispielG sei ein m × l-GitterR 1 R 21✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈.m✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈✈ ✈ ✈ ✈ ✈ ✈ ✈ ✈1 · · · li 1 i 2Im Gegensatz zu Algortihmus 3.4.7 nehmen wir S 1 = erste Spalte des Gitters S k = k-te Spalte des Gitters.Ansatz:i ∈ I ⇐⇒ i = σj, σ ≥ 2, j = 1, . . . , l σ − 1.(Wir setzen voraus: σ teilt l, N := l σ ).94


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTIONEntstehende Blockdiagonalgestalt mit Rand(σ − 1)m{ }} { {}}{mD 1,1A 1,ND N−1,N−1} {{ }} {{ }N − 1 = l σBeachte: A Nj , A jN , A NN sind selbst wieder strukturiert.A jN : nur ≤ 2 <strong>besetzte</strong> Blockspalten der Breite m,A Nj : nur ≤ 2 <strong>besetzte</strong> Blockzeilen der Höhe m,A NN : blockdiagonal mit ( l σ− 1) Blöcken der Größe m.Jede Nichtnullspalte von A jN (bzw. -zeile von A Nj ) besitzt genau ein Nichtnullelement.Wir nummerieren außerdem innerhalb jeder Zusammenhangskomponente R idie Knoten zeilenweise. jedes D ii ist Bandmatrix mit halber Bandbreiteσ − 1.95


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTIOND iWeitere Beobachtung:D NN = A NN −N−1∑j=1A Nj D −1jj A jNbesitzt Blocktridiagonalgestalt; insbesondere die halbe Bandbreite 2m.Wir analysieren jetzt die Größenordnung aller Berechnungen in Algorithmus3.4.3, inklusive der Berechnung von D NN . Dazu3.4.9 LemmaC ∈ R k×k besitze halbe Bandbreite b. Dann besitzt L in C = LDL T diehalbe Bandbreite b. Die Berechnung von L, D kostet O(kb 2 ); jede Lösungvon LDL T x = c kostet O(kb).96


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTIONBeweis: Bekannt.Berechnung von D NN :□1. Faktorisierung von D jj , j = 1, . . . , N − 1pro j: O((σ − 1)m(σ − 1) 2 ).2. Lösen von D jj V j = A jN (maximal 2m Stück)pro j: O((2m(σ − 1)m(σ − 1)), j = 1, . . . , N − 13. Multiplikation A Nj V j (nur Nichtnullblöcke)Jede Zeile von A Nj hat höchstens eine Nichtnull, j = 1, . . . , N − 1pro j: O(m 2 )Gesamt<strong>auf</strong>wand:O(m(σ − 1) 3 )(N − 1) + O(m 2 (σ − 1) 2 )(N − 1) + O(m 2 )(N − 1)( ) ( ) (= O m σ3 l+ O m 2 σ2 l+ O m 2 l )(denn N − 1 = l σσσσ )= O(mσ 2 l) + O(m 2 σl)Durchführung von Algorithmus 1:1. Schleife (̂= L): O(mσ 2 ), j = 1, . . . , N − 12. Schleife (̂= D): O(mσ 2 ), j = 1, . . . , N − 1O(( l σ − 1)mm2 ) (für D NN inklusive Faktorisierung(als Bandmatrix))3. Schleife (̂= U): O(mσ 2 ), j = 1, . . . , N − 1Insgesamt für Algorithmus 1 also(O mσ 2 l ) (+O mσ 2 l )+Oσσ( lσ m3 )+O(mσ 2 l )( ) l= O (mσl)+Oσσ m3Mit der Berücksichtigung der Berechnung von D NN beträgt der Aufwandalso( ) lO(mσ 2 l) + O(m 2 σl) + O(mσl) + Oσ m3( ) l= O(mσ 2 l) + O(m 2 σl) + Oσ m3Wähle nun σ = σ(m, l) so, dass der dominierende O-Term möglichst kleinwird.97


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTIONSpezialfall: m = lAnsatz: σ = l α O(mσ 2 l) = O(l 2+2α )O(m 2 σl) = O(l 3+α )( ) lOσ m3 = O(l 4−α )max{2 + 2α, 3 + α, 4 − α} wird minimiert für α = 1 2 .Gesamt<strong>auf</strong>wand dann: O(l 7/2 ).Zum Vergleich: Faktorisierung bei zeilenweiser Anordnung des gesamten Gitters( halbe Bandbreite ist l) ergibt Aufwand O(l 2 l 2 ) = O(l 4 ).Praktische Vorteile von One-Way-Dissection gegenüber MD:a) einfacher zu implementieren,b) σ kann auch bezüglich des Speicher<strong>auf</strong>wandes optimiert werden. günstig bei knappem Speicher.Nested Dissection: Rekursive Anwendung von One-Way-Dissection.Idee: Finde ”kleinen“ Separator S, so dass G| V S (möglichst) zwei, ungfährgleich große Zusammenhangskomponenten R 1 , R 2 besitzt. Wiederhole dasselbefür G| R1 <strong>und</strong> G| R2 .Entstehende Struktur von P AP T :⎡P AP T = ⎣⎤A 11 0 A 130 A 22 A 23⎦A 31 A 32 A 33wobei A 11 , A 22 dieselbe Gestalt wie P AP T besitzen. Ab jetzt gehen wir davonaus, dass immer genau 2 Zusammenhangskomponenten R 1 , R 2 entstehen.98


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTION3.4.10 Algorithmus(Nested-Dissection, George/Liu 1978){ Eingabe ist ein zusammenhängender Graph G, Ausgabe ist eineAnordnung als Permutation π <strong>auf</strong> der Knotenmenge}bestimme pseudoperipheren Knoten vbestimme alle zugehörigen Levelmengen S 1 , . . . , S lif l ≤ 2 thenπ = idelsesetze j = ⌊(l + 1)/2⌋, setze S = {y ∈ S j : adj(y) ∩ S j+1 ≠ ∅}{S ist Separator}setze R 1 = S 1 ∪ . . . ∪ S j−1 ∪ S j S, R 2 = S j+1 ∪ . . . ∪ S lπ1 = Ergebnis von Algorithmus 3.4.10 bei Eingabe G| R1π2 = Ergebnis von Algorithmus 3.4.10 bei Eingabe G| R2π = (π1, π2, id| S ) {zuerst π1, dann π2, dann Identität <strong>auf</strong> Separator}end ifNested Dissection ist bei planaren <strong>Graphen</strong> häufig ”optimal“ im O-Sinne.Wir weisen dies nach für das l × l-Gitter aus Beispiel 3.4.8.3.4.11 Lemmak ∈ R + sei fest, n ∈ N.(i) Es gelte f(n) = f( n 2 ) + kn3 + O(n 2 log n). Dann giltf(n) ≤ 8 7 kn3 + O(n 2 log n).(ii) Es gelte f(n) = 2f( n 2 ) + kn3 + O(n 2 log n). Dann giltf(n) ≤ 4 3 kn3 + O(n 2 log n).(iii) Es gelte f(n) = 4f( n 2 ) + kn3 + O(n 2 ). Dann giltf(n) ≤ 2kn 3 + O(n 2 log n).Beweis: Übungs<strong>auf</strong>gabe□Das Gitter sei diesmal quadratisch:99


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTION✈ ✈ ✈ ✈ ✈✈ ✈ ✈ ✈ ✈✈ ✈ ✈ ✈ ✈✈ ✈ ✈ ✈ ✈✈ ✈ ✈ ✈ ✈Wir betrachten stets zwei Rekursionsschritte von Algorithmus 3.4.10 zusammen;Separatoren wie in der Skizze (also nicht Levelmengen zu pseudoperipherenPunkten wie in Algortihmus 3.4.10).In der Aufwandsanalyse betrachten wir für jede Zusammenhangskomponenteden Aufwand für die Faktorisierung des Diagonalblocks in der Matrix(̂= A 11 , A 22 ) zusammen mit der Transformation der zugehörigen Randblöcke(Anteil A 31 A −111 A 13 bzw. A 32 A −122 A 23 .)Randblock ̂= Kopplungen zu Separatoren. Bei mehrfacher Rekursion entstehenKopplungen an verschieden vielen Rändern:Typ 2: Kopplung an 2 RändernTyp 3: Kopplung an 3 RändernTyp 4: Kopplung an 4 Rändern100


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTIONMatrix nach 2 Rekursionsschriten:Für jeden Typ bezeichnen wir den Aufwand mit θ(n, i) (n Gitterbreite; iTyp)i = 0 ̂= Anfangsgitteri = 1 kommt nicht vor.Damit erhalten wir folgende Rekursionen im Fall n = 2 N − 1⎧θ(n, 0) = 4θ( n−1⎪⎨, 2) + Φ 2 0(n)θ(n, 2) = θ( n−1n−1n−1, 4) + 2θ( , 3) + θ(2 2(3.4.2), 2) + Φ 2 2(n)θ(n, 3) = 2θ(⎪⎩n−1n−1, 4) + 2θ( , 3) + Φ 2 2 3(n)θ(n, 4) = 4θ( n−1,4) + Φ 2 4(n)Φ 0 , Φ 2 , Φ 3 , Φ 4 : Aufwand für Faktorisierung des ”Separatorblocks“ (̂= A 33 ) istjeweils ≤ kn 3 .3.4.12 SatzNested Dissection für Beispiel 3.4.8 (mit m = l = n) erfordert AufwandO(n 3 ).101


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTIONBeweis: Zur Vereinfachung sind wir etwas schlampig: Wir verwenden (3.4.2)so, als ob rechts statt n−1 immer n stünde. Dann können wir Lemma 3.4.112 2anwenden:Aus (3.4.2) <strong>und</strong> Lemma 3.4.11 (iii):Aus (3.4.2) <strong>und</strong> Lemma 3.4.11 (ii):Aus (3.4.2) <strong>und</strong> Lemma 3.4.11 (i):θ(n, 4) = 2kn 3 + O(n 2 log n).θ(n, 3) = 2kn 3 + O(n 2 log n).θ(n, 2) = 7 4 kn3 + O(n 2 log n).Und damitθ(n, 0) = 7 8 kn3 + kn 3 = O(n 3 ).Höchstinteressanterweise ist dieser Aufwand asymptotisch optimal.□3.4.13 LemmaSei G = (V, E) der Graph des n × n-Gitters. Es seien weiter x 1 , . . . , x m ,(m = n 2 ) die gewählten Pivotknoten. Dann existiert ein i ∈ {1, . . . , m − n}mit|Reach(x i , {x 1 , . . . , x i−1 })| ≥ n − 1.Beweis:✉✉x 1✉ ✉ ✉✉x 3 x i✉ ✉ ✉✉✉x 2102


3.4. ONE-WAY-DISSECTION UND NESTED DISSECTIONSei i die kleinste Nummer, so dass mit i erstmalig eine ganze Zeile oderSpalte des Gitters in {x 1 , . . . , x i } liegt. O.B.d.A sei dies eine Spalte. Damitsind mindestens n − 1 Zeilen nicht ganz in {x 1 , . . . , x i }. In jeder dieser Zeilenist wenigstens ein Knoten ∉ {x 1 , . . . , x i } <strong>und</strong> mit x i über {x 1 , . . . , x i−1 }verb<strong>und</strong>en.□3.4.14 SatzBei jeder Anordnung der Knoten besitzt die Gauß-Elimination zur Faktorisierungder Matrix A = A T mit G(A) = n × n-Gitter den Aufwand Ω(n 3 ).Beweis: Nach Lemma 3.4.13 existiert ein i, so dass nach dem i-ten EliminationsschrittA (i) (i : m, i : m) eine voll<strong>besetzte</strong> (n − 1) × (n − 1)-Teilmatrixbesitzt (Clique). Für die Faktorisierung dieses Teils ist der Aufwand bereitsΩ(n 3 ).□103


Abschnitt 3.5QuotientenbäumeAusgangssituation: V sei Partition von V in G = (V, E), so dass G = G/Vein Baum ist.Erinnerung an Satz 3.3.5: Bei MD (oder RCM)-Anordnung entsteht im Baumkeinerlei fill-in.3.5.1 Beispiela) G(A) mit A blockdiagonal mit Rand, V = {V 1 , . . . , V N } einzelne Blöcke.⇒ G ist Stern (= spezieller Baum).✉✉✉✉✉✉b) G ist angeordnet nach Levelmengen, V = {S 1 , . . . , S k } ⇒ G ist Kette(= spezieller Baum).✉ ✉ ✉ ✉ ✉ ✉Es sei nun G ein Baum, <strong>und</strong> die Knoten in V seien entsprechend der MD-Anordnung nummeriert, |V| = m. Dann heißt• der Knoten m die Wurzel des Baumes,• für x ≠ m der Knoten y > x mit {x, y} ∈ E Vater von x. Bezeichnung:y = v(x).


3.5. QUOTIENTENBÄUMEBeispiel:✉98✉ 7 ✉ ✉6✉54✉ ✉ ✉3 2✉1v(1) = 4), v(2) = 5, Wurzel ist 9.In Übertragung von Satz 3.3.5 <strong>und</strong> Verallgemeinerung von Satz 3.4.2 gilt3.5.2 SatzA ∈ R n×n sei spd, G = G(A)/V sei Baum, wobei Knoten von V nach der MD-Anordnung nummeriert seien. Dann existiert folgende Blockfaktorisierungvon A: ⎡A =⎢⎣⎤A 11 . . . A 1N⎥. . ⎦ , A ij ∈ R n i×n j, n i = |V i |A N1 . . . A NNmit⎡⎤ ⎡I 0 I(3.5.1) A =A 21 D11−1 . ..⎢⎣.. . . .. . ..⎥⎦ D ⎢⎣A N1 D11 −1 A N2 D22 −1 . . . Iwobei A ij ≠ 0 ⇐⇒ i = v(j) oder j = v(i) <strong>und</strong>(3.5.2) D ii = A ii −∑i−1j=1;v(j)=iBeweis: Wir rechnen blockweise nach:1. Fall: i > j; rechte Seite von (3.5.1):k=111 A 21 . . . D11 −1 A ⎤N1. .. . .. D−122 A N2. ⎥.. . ⎦ID −1A ij D −1jj A ji.j−1∑A ik D −1kk A kj + A ij .105


3.5. QUOTIENTENBÄUMEEin Term A ik D −1kk A kj ist ≠ 0, falls i = v(k) <strong>und</strong> j = v(k). Da m Wurzeldes Baumes ist, existieren Kantenzüge von i nach m <strong>und</strong> von m nach j.Durch Hinzunahme von {i, k} <strong>und</strong> {k, j} entsteht ein Zyklus. Ein Baum istaber zyklusfrei. Also sind {i, k} <strong>und</strong> {k, j} nicht beide Kanten. Damit giltA ik D −1kk A kj = 0.2. Fall: i = j; rechte Seite von (3.5.1):∑i−1A ik D −1kk A ki + D ii = A ii ,k=1d.h. (3.5.2).3. Fall: i < j klar aus Symmetrie. □Die Lösung des LGS geht analog zu Algorithmus 3.4.3.Erwünscht: Partition V mit möglichst vielen Teilmengen V i , so dass G/V einBaum ist.Nach Beispiel 3.5.1b erhalten wir einen ”groben“ Baum über die Levelmengen.Dann kann man aber noch ”verfeinern“ nach folgenderIdee: G| Si besitze die Zusammenhangskomponenten T ij , j = 1, . . . , s i . DerQuotientengraph bezüglich der T ij ist nicht notwendig ein Baum. Er wird esaber, wenn man T ij geeignet zusammenfasst.3.5.3 Beispiel1✉2 ✉✉ 3✉ ✉ ✉ ✉4 5 6 7✉8 9✉106


3.5. QUOTIENTENBÄUMELevelmengen:S 1 = {1} T 1,1 = {1}S 2 = {2, 3} T 2,1 = {2}, T 2,2 = {3}S 3 = {4, 5, 6, 7} T 3,1 = {4, 5}, T 3,2 = {6, 7}S 4 = {8, 9} T 4,1 = {8}, T 4,2 = {9}.T 1,1✉ S 1✉G/ S G/ T✉ S 2T 2,1✉✉T 2,2✉ S 3T 3,1✉✉T 3,2✉ S 4T 4,1✉✉T 4,2Beobachtung: Fasst man T 2,1 <strong>und</strong> T 2,2 zusammen, so entsteht als Quotientengraphein Baum.✉✉✉✉✉✉Ziel ist also, einige T i,j bei festem i so zu Mengen V i,ν zusammenzufassen,dass ein Baum entsteht. Ein Baum entsteht, wenn ein V i,ν zu genau einemV i−1,µ adjazent ist.107


3.5. QUOTIENTENBÄUME3.5.4 Algorithmus(verfeinerte Quotientenbäume, George/Liu 1978){Gegeben: Partition S 1 , . . . , S k bzgl. welcher derQuotientengraph ein Baum ist. (z.B. Levelmengen). Väter haben größereNummern als Söhne (umgekehrt wie in Beispiel 3.5.3.).Gesucht: für i = 1, . . . , k Partitionierung V i1 , . . . , V i,ri von S i , so dass derQuotientengraph bezüglich aller V iν immer noch Baum ist.}for i = 1 to k dobestimme die Zusammenhangskomponenten T ij , j = 1, . . . , s i von G/S i .end forsetze V 1,j = T 1,j , j = 1, . . . , s 1for i = 2 to k do{fasse T ij geeignet zusammen}setze P = {T ij , j = 1, . . . , s i } { Partition von S i }for j = 1 to r i−1 doentnehme alle P ∈ P mit P ∈ adj(V i−1,j )füge ihre Vereinigung wieder in P einend for{V i1 , . . . , V i,ri } = Pend forGeeignete Datenstruktur: siehe UNION/FIND-Problem.108


3.5. QUOTIENTENBÄUMEArbeitsweise an folgendem Beispiel (= Quotientengraph bezüglich der T ij )1512 13 1410 115 6 7 8 91 2 3 4Ausgangsbaum: Kette (Levelmengen)ergibt1512 13 1410 115 6 79 81 2 3 4Verfeinerter Quotientenbaum109


KAPITEL 4Unsymmetrische <strong>Matrizen</strong>110


Aufgabe jetzt: Berechne A = LDU für Matrix A mit• A <strong>dünn</strong> besetzt,• A ist nicht spd (symmetrisch indefinit oder unsymmetrisch).Genauer: Bestimme zwei Permutationsmatrizen P, Q, so dass P AQ T = LDUmit P, Q, so dassa) Faktorisierung numerisch stabil,b) L, U besitzen wenig Fill-ins.a) <strong>und</strong> b) können in der Regel nicht gleichzeitig optimal erreicht werden.Deshalb entfällt bei unsymmetrischen <strong>Matrizen</strong> auch die bisher gewohnteTrennung von numerischer <strong>und</strong> symbolischer Phase.Wir kümmern uns zuerst um Fragen der numerischen Stabilität.111


Abschnitt 4.1Schwellen-PivotwahlWir betrachten folgende Variante der Gauß-Elimination (Algorithmus 1.3.1)mit einem vorgegebenen Schwellenparameter u ∈ (0, 1].4.1.1 Algorithmus(Gauß-Elimination mit Schwellen-Pivotwahl)for k = 1 to n − 1 dowähle ein s k mit |a (k)s k ,k | ≥ u ·vertausche Zeilen s k <strong>und</strong> kfor i = k + 1 to n dol ik = a (k)ik /a(k) kkend forfor i = k + 1 to n dofor j = k + 1 to n doa (k+1)ij = a (k)ij − l ik a (k)kjend forend forend fornmaxi=k|a(k) ik |{Schwellen-Pivotwahl}Bemerkungen:a) u = 1 ” übliche“ Gauß-Elimination mit Spaltenpivotsuche.b) Auch Algorithmus 4.1.1 bestimmt (implizit) eine Zerlegung P A =LDU.c) u < 1: mehr Freiheit bei der Wahl des Pivot-Elements ⇒ verwendbarzur Vermeidung von Fill-in.Wie hängt die Stabilität von u ab?Erinnerung an Definition 1.3.20 <strong>und</strong> Satz 1.3.19:ρ ij :=nmaxk=1 |a(k) ij |


4.1. SCHWELLEN-PIVOTWAHLρ =nmaxi,j=1 ρ ij” Wachstumsfaktor“ρ ist ein Maß für die Rückwärts-Stabilität der Gauß-Elimination (Satz 1.3.19).4.1.2 SatzBei Schwellen-Pivotwahl giltρ ≤(1 +u) 1 n−1n· max |a ij|.i,j=1Die obere Schranke wird auch angenommen.Beweis: Übungs<strong>auf</strong>gabe.□Für <strong>dünn</strong> <strong>besetzte</strong> <strong>Matrizen</strong> ist dieses Resultat aber viel zu pessimistisch.4.1.3 SatzEs sei P A = LDU berechnet mit Algorithmus 4.1.1, Schwellenparameter u.Für j = 1, . . . , n sei p j die Zahl der Nichtnullen in U·j , exlusive Diagonale,also 0 ≤ p j ≤ j − 1. Weiter seiρ (k)j = maxni=1 |a(k) ij| j, k = 1, . . . , n.Dann gilta) ρ (k+1)j{≤ (1 + 1 u ρ(k) j ) falls j ≥ k + 1 <strong>und</strong> a (k)sj ≠ 0 (s: Pivotzeile)= ρ (k)j sonst,b) ρ (k)j ≤ (1 + 1 u )p jρ (1)j ,(c) ρ ≤Beweis:nmaxj=1(1 + 1 u) pj)nmaxi,j=1 |a ij|.a): Obere Zeile erhält man wie Satz 4.1.2, siehe also Übung. Untere Zeile:Ist j ≤ k oder a s (k)j= 0, so bleibt die j-te Spalte von A (k) unverändertbei Transformation A (k) A (k+1) (bis <strong>auf</strong> die Vertauschung von zweiZeilen), also ist ρ (k+1)j = ρ (k)j .b): folgt aus a), wenn man weiß, für wieviele k bei festem j jemals a (k)sj ≠ 0ist. Da nach dem Vertauschen a (k)sj ≠ 0 in Zeile k gelangt (<strong>und</strong> dann113


4.1. SCHWELLEN-PIVOTWAHLdort bleibt), ist die Anzahl dieser k gleich p j + 1 (+1 für Diagonal-Element). Für das letzte solche k (=Diagonalelement) wird Spalte jnicht mehr verändert. Alsoρ (k)j≤(1 + 1 ) pjρ (1)j .uc): Folgt aus b).□Folgerung: Für <strong>dünn</strong> <strong>besetzte</strong> <strong>Matrizen</strong> ist p j ≪ n; das Stabilitätsproblemalso wesentlich gutartiger als bei dichten <strong>Matrizen</strong>. Für u können relativkleine Werte genommen werden, z.B. u = 1100 .In Praxis: Satz 4.1.3 liefert nur eine Worst-Case-Abschätzung. Man solltealso z.B. während der Berechnung von P A = LDU die Größeρ (k) =jeweils mitberechnen <strong>und</strong> <strong>auf</strong>datieren.nmax |a (l)ij |i,j=1,...,n/l=1,...,kWeitere Möglichkeit: Man berechnet a posteriori-Schranken nach folgendemSatz.4.1.4 SatzEs sei P A = LDU(=: A). Dann gilt für p, q ∈ [1, ∞], 1 p + 1 q= 1 (i, j ≥ k)(4.1.1)(4.1.2)|a (k)ij | ≤ ‖(l ik, . . . , l ii )‖ p · ‖(d kk u kj , . . . , d jj u jj )‖ q≤ ‖L i·‖ p · ‖(DU)·j ‖ q .Beweis: (4.1.2) folgt sofort aus (4.1.1), da ‖ · ‖ p nicht kleiner wird, wenn dieVektoren verlängert werden. Für (4.1.1): Für festes k partitionieren wirAus A = L(DU) folgtL = [L 1 |L 2 ] L 1 hat k − 1 Spalten[ ]D1 0D =D0 D 1 ∈ R k−1×k−12[ ]U1U =UU 1 hat k − 1 Zeilen2A = [L 1 |L 2 ][ ]D1 U 1= LD 2 U 1 (D 1 U 1 ) + L 2 (D 2 U 2 ).2114


4.1. SCHWELLEN-PIVOTWAHL⇒ A − L 1 (D 1 U 1 ) = L 2 (D 2 U 2 ).⇐⇒ A (k) = L 2 (D 2 U 2 ).Damit gilt⎜ij = (L 2 (D 2 U 2 )) ij = (l ik , . . . , l in ) ⎝a (k)⎛⎞d kk u kj⎟. ⎠ .d nn u njDamit folgt (4.1.1) direkt aus der Hölder-Ungleichung.□Bemerkung: Bei Schwellen-Pivotwahl ist|l ik | ≤ 1 u , also ‖L i·‖ ∞ ≤ 1 u .Nimmt man also p = ∞, q = 1, so ist zu berechnen‖(DU)·j ‖ 1, j = 1, . . . , nmit Aufwand nnz(U). Dann ist 1 ufür ρ.nmaxj=1 ‖(DU)·j‖ 1 a posteriori obere Schranke115


Abschnitt 4.2Digraphen <strong>und</strong> starkeZusammenhangskomponenten4.2.1 DefinitionEin Digraph (gerichteter Graph) ist ein Paar D = (V, E) mit E ⊆ V × V .i ∈ V : Knoten(i, j) ∈ E : KantenBeachte: (i, j) ≠ (j, i) (während bei ungerichteten <strong>Graphen</strong> {i, j} = {j, i})4.2.2 Beispiel✉✶ 13✉✙ ✛ ❯ ✉24.2.3 DefinitionDer zu A ∈ R n×n gehörige Digraph D(A) ist gegeben durch V = {1, . . . , n},E = {(i, j) : a ij ≠ 0 ∧ i ≠ j}.Beispiel: Für⎛∗ ∗⎞∗A = ⎝ ∗ ∗ ⎠∗ ∗ist D(A) der Digraph aus Beispiel 4.2.2.4.2.4 DefinitionDer zu einem Digraphen D = (V, E) gehörige ungerichtete Graph G = |D| =(V, E ′ ) ist gegeben durchE ′ = {{i, j} : (i, j) ∈ E oder (j, i) ∈ E}.


4.2. DIGRAPHENBeispiel: Für D aus Beispiel 4.2.2 ist |D|✉ 13✉✉24.2.5 Definitiona) Die Begriffe verbindbar, Kantenzug <strong>und</strong> Zyklus werden für Digraphen— jetzt mit gerichteten Kanten — analog zu ungerichteten <strong>Graphen</strong>definiert. (Ausnahme: Zyklen können jetzt bereits Länge 2 haben.)b) D heißt zusammenhängend, wenn |D| zusammenhängend ist. Zusammenhangskomponentenentsprechend.Beobachtung: Besitzt A die Block-Dreiecksgestalt⎡⎤A 11 0⎢A = ⎣.. ..⎥⎦A N1 . . . A NNmit A ii ∈ R n i×n i, ∑ ni=1 n i = n, so lässt sich Ax = b ”blockweise“ lösen durch(x = (x 1 , . . . , x N ), x i ∈ R n i)for i = 1 to N do∑i−1löse A ii x i = b i − A ij x jend forj=1Wir benötigen also nur die LDU-Faktorisierung der Diagonalblöcke A ii .4.2.6 DefinitionA ∈ R n×n heißt irreduzibel, wenn (n = 1 <strong>und</strong> A ≠ 0) oder im zugehörigenDigraphen D(A) jeder Knoten i mit jedem Knoten j ≠ i verbindbar ist.Andernfalls heißt A reduzibel.4.2.7 LemmaDie folgenden Aussagen sind äquivalent für n ≥ 2:117


4.2. DIGRAPHENa) A ist reduzibel.b) Es existiert eine Permutationsmatrix P <strong>und</strong> n 1 ∈ {1, . . . , n − 1} so,dass( )P AP T A11 0=A 21 A 22mit A 11 ∈ R n 1×n 1, A 22 ∈ R n 2×n 2mit n 2 = n − n 1 .c) Es gibt zwei disjunkte Mengen S 1 , S 2 , S 1 ≠ ∅ ≠ S 2 , S 1 ∪S 2 = {1, . . . , n}mit a ij = 0 falls i ∈ S 1 , j ∈ S 2 .Beweis:a) ⇒ c)“: Es seien v ≠ w zwei Knoten, welche in D(A) nicht verbindbar”sind. Es existiert also kein Kantenzug von v nach w. SetzeS 1 = {x : es ex ein Kantenzug von v nach x} ∪ {v}S 2 = {1, . . . , n} S 1 ⊇ {w}.Dann gilt: S 1 ∩ S 2 = ∅, S 1 ≠ ∅ ≠ S 2 , S 1 ∪ S 2 = {1, . . . , n}.Angenommen für ein (i, j) ∈ S 1 ×S 2 wäre a ij ≠ 0. Dann existiertein Kantenzug von v über i nach j, also j ∈ S 1 im Widerspruchzu j ∈ S 2 . Also ist a ij = 0.” c) ⇒ b)“: Wähle die Permutation π so, dass S 1 = {π(1), . . . , π(n 1 )}, S 2 ={π(n 1 + 1), . . . , π(n)}. Sei P die zugehörige Permutationsmatrix.Dann gilt: (P AP T ) ij = a π(i)π(j) <strong>und</strong> für i ∈ {1, . . . , n 1 }, j ∈ {n 1 +1, . . . , n} ist π(i) ∈ S 1 , π(j) ∈ S 2 , also a π(i)π(j) = 0.” b) ⇒ a)“: Sei π die zu P gehörige Permutation. In D(P AP T ) gibt es keinen(gerichteten) Kantenzug von 1 nach n. Also gibt es in D(A)keinen Kantenzug von π −1 (1) nach π −1 (n). Also ist A reduzibel.4.2.8 DefinitionDie reduzible Normalform einer Matrix A ist eine Darstellung der Gestalt⎡(4.2.1) P AP T =⎢⎣⎤A 11 0.. ..⎥⎦A N1 . . . A NNwobei A ii ∈ R n i×n ientweder irreduzibel ist, oder ein 1 × 1-Block mit Wert 0;P ist Permutationsmatrix.118□


4.2. DIGRAPHENUns interessieren <strong>Algorithmen</strong> zur Bestimmung von P in (4.2.1). Dies stelltsich als ein ”Problem <strong>auf</strong> dem Digraphen D(A)“ heraus.4.2.9 DefinitionD = (V, E) sei ein Digraph. v, w ∈ V heißen stark verb<strong>und</strong>en in D, fallsv = w oder (es existieren Kantenzüge von v nach w <strong>und</strong> von w nach v).4.2.10 Satzstark verb<strong>und</strong>en“ ist eine Äquivalenzrelation <strong>auf</strong> V .”Beweis: Siehe Übung.□Folgerung: V wird durch die zugehörigen Äquivalenzklassen C k partitioniert.Die C k heißen starke Zusammenhangskomponenten.Folgerung: A ∈ R n×n , n ≥ 2, ist irreduzibel, genau dann wenn D(A) genaueine starke Zusammenhangskomponente besitzt.4.2.11 DefinitionDer Quotientengraph D eines Digraphen bezüglich einer Partitionist gegeben durch D = (V, E) mitV = {V 1 , . . . , V k } mit V =k⋃i=1E = {(V i , V j ) : ∃ v ∈ V i , w ∈ V j mit (v, w) ∈ E}.4.2.12 LemmaDie folgenden Aussagen für einen Digraphen D sind äquivalent:a) C ist eine starke Komponente von D.b) Für alle v ∈ C gilt: existiert ein Zyklus, der v <strong>und</strong> w ≠ v enthält, sogilt w ∈ C.c) Es existiert ein v ∈ C mitC = {w ∈ V : es ex Zyklus, der v <strong>und</strong> w enthält} ∪ {v}.V iBeweis: Übungs<strong>auf</strong>gabe.□4.2.13 SatzDer Quotientengraph D von D bzgl. der starken Komponenten ist azyklisch,d.h. er enthält keinen (gerichteten) Zyklus.119


4.2. DIGRAPHENBeweis: Angenommen, es existiert ein Zyklus (i 1 , i 2 , . . . , i l ) mit i 1 = i l , l ≥ 3in D, also (i ν , i ν+1 ) ∈ E für ν = 1, . . . , l − 1. O.B.d.A. sind bis <strong>auf</strong> i 1 = i l alleKnoten verschieden; wir nummerieren o.B.d.A. i 1 = 1, . . . , i l−1 = l−1, i l = 1.Es existieren also in D = (V, E) Knoten v 1 , . . . , v l−1 <strong>und</strong> w 2 , . . . , w l mitv i , w i ∈ C i , i = 1, . . . , l−1, w l ∈ C 1 <strong>und</strong> (v i , w i+1 ) ∈ E, i = 1, . . . , l−1. Da C istarke Komponente ist, existiert ein Weg von w i nach v i , i = 2, . . . , l − 1 <strong>und</strong>von w l nach v 1 . Durch Zusammensetzen erhält man also einen Zyklus, welcheralle v i <strong>und</strong> w i enthält. Damit folgt nach Lemma 4.2.12 (b) insbesonderev 2 ∈ C 1 . Widerspruch!□4.2.14 SatzJeder azyklische Digraph kann topologisch sortiert werden, d.h. es existierteine Permutation π <strong>auf</strong> V , so dass gilt(i, j) ∈ E ⇒ π(i) < π(j).Beweis: Siehe Info II (Knoten mit Eingangsgrad 0 nach vorne sortieren;Aufwand O(|E| + |V |)).□4.2.15 SatzA ∈ R n×n besitzt die reduzible NormalformP AP T =⎡⎢⎣⎤A 11 0.. ..⎥⎦A N1 . . . A NNmit A ii ∈ R n i×n i, A ii irreduzibel oder (n i = 1, A ii = 0) genau dann, wennfür die zu P gehörige Permutation π gilta) die starken Komponenten von D(A) sindC k = {π(m k−1 + 1), . . . , π(m k )}, k = 1, . . . , N, m k =k∑n i ,i=1b) π sortiert die C k umgekehrt topologisch, d.h. für alle i, j ∈ {1, . . . , n}gilt π(i) ∈ C k , π(j) ∈ C k ′ <strong>und</strong> a ij ≠ 0 ⇒ k ′ ≤ k.Beweis: Wir verwenden:(4.2.2)⇐⇒A irreduzibel oder (A ∈ R, A = 0)D(A) besitzt genau eine starke Komponente (trivial).120


4.2. DIGRAPHEN⇐“ Aus a) <strong>und</strong> (4.2.2) folgt: Für k = 1, . . . , N sind die Blöcke”(P AP T ) i,j=mk−1 +1,...,m k= (a π(i),π(j) ) i,j=mk−1 +1,...,m k= (a µν ) µ,ν∈Ckirreduzibel, oder = 0 ∈ R. In der Blockdarstellung⎡⎤A 11 . . . A 1NP AP T ⎢⎥= ⎣ . . ⎦A N1 . . . A NNsind die Diagonalblöcke dann irreduzibel oder = 0 ∈ R. Zu zeigenbleibt A kk ′ = 0 für k ′ > k. Angenommen, für k ′ > k ist A kk ′ ≠ 0. Dannexistieren π(i) ∈ C k , π(j) ∈ C k ′ mit a π(i)π(j) ≠ 0. Nach b) ist aber dannk ′ ≤ k. Widerspruch!” ⇒“ Geht genauso. □Vorgehensweise zur Bestimmung der reduziblen Normalform damit1) Bestimme die starken Komponenten von D(A).2) Sortiere den zugehörigen Quotientengraphen topologisch.3) Bestimme eine Permutation, welche die topologisch sortierten Komponentender Reihe nach nummeriert, d.h. ist C k = {i 1,k , . . . , i nk ,k}, k =1, . . . , N (bereits topologisch sortiert), so istUns interessiert jetzt Teil 1).π : 1 → i 1,1.n 1 → i n1 ,1n 1 + 1 → i 1,2n 1 + n 2 → i n2 ,2Zur Vorbereitung benötigen wir eine ”Verfeinerung“ der Depth-first-Suche ineinem Digraphen, bei welcher die erreichbaren Knoten zwei Mal nummeriertwerden:121..


4.2. DIGRAPHEN• bei erstmaliger Entdeckung: a(v),• bei Beendigung der depth-first-Suche ausgehend von diesem Knoten:e(v).4.2.16 Algorithmusdfs(s){depth-first search in Digraphen, ausgehend von Knoten s. Für alleentdeckten Knoten v werden Nummern a(v) <strong>und</strong> e(v) vergeben}for all v ∈ V doa(v) := 0; e(v) := 0end fork := 0; l := 0k++, a(s) := kdfr(k, l, a, e, s)l++; e(s) := lwobei4.2.17 Algorithmusdfr(k, l, a, e, v){rekursiver Teilalgorithmusfür dfs; v ist aktueller, zu untersuchender Knoten; a, e sind Vektoren mitbisher vergebenen Nummern; k, l sind zuletzt vergebene Nummern}for all von v ausgehenden Kanten (v, w) doif a(w) = 0 thenk++; a(w) = kdfr(k, l, a, e, w)l++; e(w) = lend ifend forWir hatten früher eine nicht-rekursive Beschreibung der depth-first Suchekennengelernt unter Verwendung der Datenstruktur Stack. Diese ist mit derrekursiven Variante nicht identisch, wohl aber der folgende Algorithmus.122


4.2. DIGRAPHEN4.2.18 AlgorithmusDepth-First mit Nummern, nicht rekursiv{zu dfs(s) äquivalenter Algorithmus, verwendet einen Stack}k := 0, l := 0k + +, a(s) := kfüge s in leeren Stack S einwhile S ≠ ∅ dov := oberstes Element von Sif es ex. nicht markiertes w mit (v, w) ∈ E thenwähle ein solches wk + +, a(w) := k{jetzt gilt w als markiert}füge w in S einelseentnehme v aus Sl + +, e(v) := lend ifend whileWichtige Folgerung: Gilt a(w) < a(v) <strong>und</strong> e(w) > e(v), so existiert einWeg von w nach v. (Der Stack S stellt immer einen Weg von seinem unterstenzum obersten Element dar.)Beispiel1 ✉7 ✉2❑3✉✰❫✿ ✉4✲ ✉5123


4.2. DIGRAPHEN1234 54.2.19 Bemerkunga) Algorithmus 4.2.16 bzw. 4.2.18 entdeckt“ nur die Knoten des Teilgraphen˜D, dessen Knoten von v aus erreichbar sind. Sei ˜D = ( Ṽ , Ẽ), so”gilt |Ẽ| ≥ |Ṽ − 1|, denn jeder Knoten w ∈ Ṽ , w ≠ v ist Endpunktmindestens einer Kante.b) Der Aufwand für Algorithmus 4.2.17 ist O(|Ẽ|), denn jede Kante wirdgenau einmal betrachtet mit Aufwand O(1).c) Der Aufwand für Algorithmus 4.2.16 <strong>und</strong> 4.2.18 ist O(|Ẽ| + |V |).4.2.20 DefinitionEin Knoten s eines Digraphen heißt Wurzel, falls ein Kantenzug von s zujedem Knoten v ≠ s existiert.4.2.21 DefinitionSei D = (V, E) ein Digraph. Dann ist D T = (V, E T ) mit E T = {(i, j) :(j, i) ∈ E} der zugehörige transponierte Digraph.Der folgende Algorithmus von Aho, Hopcroft, Ullman (1983) bestimmt diestarken Komponenten in einem Digraphen mit Wurzel s.124


4.2. DIGRAPHEN4.2.22 Algorithmus{ bestimmt die starken Komponenten im Digraphen D mit Wurzel s}k = 1bestimme mit dfs(s) die Endnummern e(v) für Dsetze H = D T = (V, E T )while V ≠ ∅ dowähle r aus V mit e(r) maximalbestimme Anfangsnummern a ′ (w) <strong>auf</strong> H mittles dfs(r)setze C k = {w ∈ V : a ′ (w) ≠ 0}setze V = V C k , H = H| Vk = k + 1end while4.2.23 SatzAlgorithmus 4.2.22 berechnet die starken Komponenten eines Digraphen Dmit Wurzel s. Der Aufwand ist O(|E|).Beweis: Aufwand: Nach Bemerkung 4.2.19 ist |V | = O(|E|). Einmalige Anwendungvon dfs(s) <strong>auf</strong> D hat Aufwand: O(|V | + |E|) = O(|E|).dfs(s) in Schleife: Aufwand jeweils O(|E r |), wobei E r Menge der von r auszugänglichen Kanten in H, also⋃” r ∈ Schleife“ E r ⊆ E T ; E r paarweise disjunkt.Es ist∑” r ∈Schleife“ |E r | ≤ |E T | = |E|.Gesamt<strong>auf</strong>wand also O(|E|).Korrektheit: Wir zeigen, dass C 1 starke Komponente von D ist. Der Restfolgt dann durch Induktion. Dazu zeigen wir:(i) Existiert im Digraphen D ein Weg von v nach r, so ist v ∈ C 1 .(ii) Ist v ∈ C 1 , so existiert ein Weg von v nach r <strong>und</strong> von r nach v in D.zu (i): Wenn in D ein Weg von v nach r existiert, gibt es in D einen von rnach v. Bei dfs(r) wird a ′ (v) also geändert, d.h. v kommt in C 1 .125


4.2. DIGRAPHENzu (ii): v ≠ r ∈ C 1 ⇒ es existiert ein Weg von r nach v in H ⇒ es existiertein Weg von v nach r in D. Sei a() die Anfangsnummer von dfs <strong>auf</strong> D(!). Angenommen, es wäre a(r) > a(v). Da in D ein Weg von v nach rexistiert, folgt e(r) < e(v) im Widerspruch zur Wahl von r. Also gilta(r) < a(v) (<strong>und</strong> e(r) > e(v)). Es existiert in D also ein Weg von rnach v.Für den Induktionsschritt muss man noch überlegen, dass die starkenKomponenten von D nach Entfernung von C 1 gerade die übrigen starkenKomponenten sind. Lemma 4.2.26(i).□Um alle starken Komponenten eines Digraphen zu bekommen, ist 4.2.22mehrfach anzuwenden.4.2.24 DefinitionD = (V, E) sei ein Digraph, s ∈ V . Dann istV (s) = {v ∈ V : es ex in D ein Weg von s nach v}.s ist also Wurzel von D| V (s) .4.2.25 Algorithmus{bestimmt alle starken Komponenten eines Digraphen}for all Knoten v doa(v) = 0; e(v) = 0;end forwhile Knoten s existiert mit a(s) = 0 dowähle einen solchen Knotenbestimme die starken Komponenten von V (s) mit Algorithmus 3{dabei wird D verändert}end whileDie Korrektheit dieses Algorithmus beweist folgendes Lemma.4.2.26 LemmaSei D = (V, E) ein Digraph, C 1 , . . . , C ls ∈ V . Dann gilt für k = 1, . . . , l:seine starken Komponenten <strong>und</strong>126


4.2. DIGRAPHEN(i) Die starken Komponenten von D| C2 ∪...∪C lsind C 2 , . . . , C l .(ii) C k ⊆ V (s) oder C k ∩ V (s) = ∅.(iii) Im Fall C k ⊆ V (s) ist C k auch starke Komponente von D| V (s) .Beweis:(i):(ii):Übungs<strong>auf</strong>gabe.Übungs<strong>auf</strong>gabe.(iii): C k ⊆ V (s) ⇒ D| Ck ⊆ D| V (s) . Also ist C k auch in D| V (s) stark zusammenhängend.Gäbe es einen Knoten w ∈ V (s), w ∉ C k , welcher miteinem Knoten v ∈ C k stark verb<strong>und</strong>en wäre in D| V (s) , so wäre w mit vauch in D stark verb<strong>und</strong>en. Also wäre w ∈ C k , Widerspruch!□127


4.2. DIGRAPHENBeispiel2✉✛D1✉✢✲✉3✉✠❘ ✉4 56❄✠ ✉Wir starten mit s = 1, V (1) = {1, 5, 6, 4}, Teilgraph.1 ✉D 1 = D| V (1)4✉✠❘ ✉4 53261❄✠ ✉e(v) <strong>auf</strong> D 1128


4.2. DIGRAPHEND T 111 ✉✒ ■✉✉4 ✒ 5362✉❄C 1 = {1, 5, 6}, C 2 = {4}.Jetzt nehmen wir z.B. s = 3D = D| V (3)✉2❑D T = D❯✉3C 3 = {2, 3}129


Abschnitt 4.3Strukturelle Singularität <strong>und</strong> Transversale4.3.1 DefinitionA ∈ R n×n heißt strukturell singulär, falls gilt:Für alle A ′ mit struct(A ′ ) = struct(A) ist A ′ singulär.4.3.2 Beispiel⎡A = ⎣∗∗∗∗⎤⎦ ist strukturell singulär.4.3.3 LemmaA ∈ R n×n ist nicht strukturell singulär ⇐⇒ es existiert eine PermutationsmatrixP mit (P A) ii ≠ 0, i = 1, . . . , n.Beweis:” ⇐“ Wir setzen ⎧⎪⎨ n für i = jB ij = 1 für i ≠ j, (i, j) ∈ struct(P A)⎪⎩0 sonst.Dann ist B streng diagonaldominant, insbesondere regulär. Setze A ′ =P −1 A. Dann ist A ′ regulär <strong>und</strong> struct(A ′ ) = struct(A).⇒“: Folgt aus Satz 4.3.8. (Korrektheitsbeweis zu Algorithmus 4.3.6, siehe”unten.)4.3.4 DefinitionEine Permutation π heißt Transversale von A, falls□A π(i),i ≠ 0, i = 1, . . . , ngilt (also gilt (P A) ii ≠ 0, wenn P die zugehörige Permutationsmatrix ist).


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALEStrukturell singuläre <strong>Matrizen</strong> sind also solche ohne Transversale.Idee zur Entwicklung eines Algorithmus, der Transversale berechnet, bzw.erkennt, dass keine existiert:In Schritt k sei Permutation π k bekannt mit a πk (i),i ≠ 0, i = 1, . . . , k − 1. ZurVereinfachung der Notation sei A ← P A, also a ii ≠ 0, i = 1, . . . , k − 1.Jetzt suchen wir Permutation σ k mit a σk (i),i ≠ 0, i = 1, . . . , k.Einfacher Fall: struct(A(k : n, k)) ≠ ∅ (σ k vertauscht j <strong>und</strong> k)Schwieriger Fall: struct(A(k : n, k)) = ∅ (σ k ist als Zykel zu bestimmen, s.u.)4.3.5 Definition(i, j) bezeichne die ”Transposition“ von i <strong>und</strong> j, also die Permutation π mitπ(k) = k falls k ≠ i, j.π(i) = j,π(j) = i,(k, k) oder (k) bezeichnet beides die Identität. Eine Permutation der Gestaltheißt Zykel (der Länge l), abgekürztσ = (i l , i l−1 ) ◦ (i l−1 , i l−2 ) ◦ . . . ◦ (i 2 , i 1 )σ = (i l , i l−1 , . . . , i 1 ).Falls die i ν paarweise verschieden sind, gilt dannσ(i 1 ) = i lσ(i 2 ) = i 1σ(i l ) = i l−1Wir versuchen, einen Zykel σ k der Gestalt⎧σ k = (i 1 , . . . , i l ) mit i 1 = k; i ν < k, ν = 2, . . . , l − 1; i l ≥ k mit⎪⎨i ν , 1 ≤ ν ≤ l paarweise verschieden(4.3.1)a iν+1 ,i ν≠ 0, ν = 1, . . . , l − 1⎪⎩a i1 ,i l ≠ 0zu finden. Dann gilt nämlichi ∈ {1, . . . , k} {i 1 , . . . , i l } a σk (i),i = a ii ≠ 0.i = i ν , ν ∈ {1, . . . , l} a σk (i ν),i ν= a iν+1 ,i ν≠ 0.131


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALE4.3.6 Algorithmus(Algorithmus von Hall)fortsetzen(σ, k){σ = (i 1 , . . . , i l ) ist Zykel mit i 1 = k, i ν < k, ν = 2, . . . , l, alle verschieden,a iν+1 ,i ν≠ 0, ν = 1, . . . , l − 1. Der Zykel wird jetzt um eins verlängert; nachMöglichkeit wird (4.3.1) erreicht.}if existiert j ≥ k mit a j,il ≠ 0 then{look-ahead}setze σ = (i 1 , . . . , i l , j) im Fall j ≠ kbzw. σ = (i 1 , . . . , i l ) im Fall j = k <strong>und</strong> stoppe { Zykel gef<strong>und</strong>en}else{depth-first-Suche}for all j mit a j,il ≠ 0 do {j < k !}if j nicht markiert thenmarkiere jfortsetzen((i 1 , . . . , i l , j), k)end ifend forend if4.3.7 Algorithmuszykel(k){startet Algorithmus 4.3.6}markiere kσ = (k) { Identität }fortsetzen(σ, k)if σ = (k) thenmelde ”Zykel existiert nicht“elsegebe Zykel σ ausend if132


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALEBeispiel für den Abl<strong>auf</strong> des Algorithmus:1 2 3 4 51 x x2 x x3 x x x4 x x x5 06 xσ markiert wird( 5 ) 5( 5 4 ) 4( 5 4 3 ) 3( 5 4)( 5 )( 5 2 ) 2( 5 2 1) 1(5 2 1 6)Der gesuchte Zykel ist (5216); nach Permutation haben wir1 2 3 4 51 x2 x x3 x x x4 x x x5 x x64.3.8 SatzEndet zykel(k) mit der Ausgabe ”Zykel existiert nicht“, so ist A strukturellsingulär.Beweis: Für diesen Fall bezeichne K die Menge aller im Depth-first-Teilmarkierten Indizes j. Es giltj ∈ K ⇒ j < k.Im depth-first-Teil werden für jedes i ∈ K alle j mit a ij ≠ 0 markiert (<strong>und</strong>alle sind < k). Sei K = {j 1 , . . . , j p }. Die p Spalten j 1 , . . . , j p von A besitzenalso Nichtnulleinträge höchstens in den Zeilen j 1 , . . . , j p . Dasselbe gilt auch.133


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALEfür die Spalte k. Also haben wir p + 1 Spalten, welche nur in p Zeilen besetztsind; sie sind also für jede Belegung ihrer Struktur linear abhängig. □Folgerung Ist A nicht strukturell singulär, so besitzt A eine Transversale<strong>und</strong> der folgende Algorithmus berechnet sie.4.3.9 Algorithmus(Transversale)P = I, π 0 = idfor k = 1 to n doif a kk = 0 thenzykel(k){liefert σ k oder Meldung}if Meldung Zykel existiert nicht“ then”stoppe{Transversale existiert nicht}elseQ k = zu σ −1kgehörige PermutationsmatrixA = Q k A; P = Q k Pend ifend ifend forAufwandsanalyseAufwand von Algorithmus 4.3.7 / Algorithmus 4.3.6 ist über alle k zu summieren(jedenfalls wenn in Algorithmus 4.3.9 statt A ← Q k A, P ← Q k Pimplizit vertauscht wird).Aufwand von Algorithmus 4.3.6 hat zwei Anteile:1) Depth-First. Im worst-case werden alle Nichtnulleinträge von A(1 :k, 1 : k) betrachtet. Aufwand also O(nnz(A(1 : k, 1 : k))).2) Look-ahead. Angenommen, Spaltenstruktur ist über gepacktes Formatoder Listenformat zugänglich.Worst-case: Jeder look-ahead-Schritt durchläuft die ganze (<strong>besetzte</strong>)Spalte i l , i l ∈ {1, . . . , k}. Aufwand also O(nnz(A(1 : n, 1 : k))).Gesamt<strong>auf</strong>wand:n∑O(nnz(A(1 : k, 1 : k))) + O(nnz(A(1 : n, 1 : k))) = O(n · nnz(A)).k=1Da im Allgemeinen nnz(A) = Ω(n) ist dies im Prinzip eine potenzielle O(n 2 )-Falle!134


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALEAber: Wir haben großzügig abgeschätzt. Für Anteil 2 kann der Aufwandmit Hilfe von Zeigern (siehe Duff, Erisman, Reid) <strong>auf</strong> O(nnz(A)) reduziertwerden.Fazit: Algorithmus 4.3.9 hat sich in der Praxis bewährt.Wir behandeln als Alternative jetzt den Algorithmus von Hopcroft <strong>und</strong> Karpzur Bestimmung einer Transversale. Er hat eine theoretisch bessere Komplexitätals das Verfahren von Hall.Der neue Algorithmus verwendet ”maximale Matchings“.4.3.10 DefinitionSei G = (V, E) ein Graph.(i) Eine Menge M ⊆ E von Kanten heißt Matching, falls jeder Knoten mithöchstens einer Kante aus M inzident ist.(ii) Knoten, die mit keiner Kante des Matchings M inzident sind, heißenfrei.(iii) Ein Matching M heißt maximal, wenn es kein Matching mit mehr Elementengibt.4.3.11 DefinitionEin Graph P = (V, E) heißt bipartit oder paar, wenn es eine Partition V =B∪G gibt, so dass alle Kanten nur zwischen B <strong>und</strong> G verl<strong>auf</strong>en, E ⊆ {{b, g} |b ∈ B, g ∈ G}.B: ’boys’, G: ’girls’.4.3.12 DefinitionFür A ∈ R n×n ist P (A) = (V, E) der bipartite Graph mitB = {z 1 , . . . , z n }, G = {s 1 , . . . , s n }, V = {{z i , s j } | a ij ≠ 0}.Abbildung 4.1 zeigt ein Beispiel.Folgerung: Die Matrix A besitzt eine Transversale, wenn P (A) ein maximalesMatching der Größe n besitzt (man sagt auch: P (A) ist ein Heiratsgraph).Denn ist M = {{z i1 , s j1 }, . . . , {z in , s jn }} ein solches Matching, <strong>und</strong> sind π z<strong>und</strong> π s die Permutationen mit π s (l) = i l , π z (l) = j l sowie P z <strong>und</strong> P s diezugehörigen Permutationsmatrizen, so besitzt P z APsT eine voll<strong>besetzte</strong> Diagonale.Es geht also darum, in P (A) ein maximales Matching zu bestimmen (<strong>und</strong> zuzeigen, dass es die Größe n hat).135


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALE⎛A =⎜⎝0 x 0 0 00 x 0 x 0x 0 0 0 x0 0 x x 00 0 x 0 0⎞⎟⎠z 1 s 1z 2 s 2z 3 s 3z 4 s 4z 5 s 5Abbildung 4.1: Matrix <strong>und</strong> zugehöriger bipartiter Graph4.3.13 DefinitionSei M ein Matching von G = (V, E) (nicht notwendig bipartit). Ein Pfadp = (v 1 , . . . , v 2k ) in G heißt zunehmender Pfad bzgl. M, falls gilt(i) v 1 <strong>und</strong> v 2k sind freie Knoten,(ii) genau jede zweite Kante von p liegt in M. Betrachtet man p als Kantenmenge,so bedeutet dasp ∩ M = {{v 2 , v 3 }, {v 4 , v 5 }, . . . , {v 2k−2 , v 2k−1 }}Zunehmende Pfade haben immer ungerade Länge.Mit A ⊕ B bezeichnen wir die symmetrische Differenz zweier Mengen:A ⊕ B = (A \ B) ∪ (B \ A) = (A ∪ B) \ (A ∩ B).4.3.14 LemmaEs seien A, B, C ⊆ Y Teilmengen von Y <strong>und</strong> A c = {x ∈ Y | x ∉ A} dasKomplement von A. Dann gilt• A \ B = A ∩ B c <strong>und</strong> damit A ⊕ B = (A ∩ B c ) ∪ (A c ∩ B).• A ⊕ (B ⊕ C) = (A ⊕ B) ⊕ C.• A ⊕ (A ⊕ B) = B.Beweis:Übung.Das folgende Resultat ist klar, s. Abbildung 4.2.4.3.15 LemmaIst M ein Matching <strong>und</strong> p ein zunehmender Pfad bzgl. M, so ist M ⊕ p einMatching mit |M ⊕ p| = |M| + 1.136


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALEG = (V,E)Matching Mzunehmender Pfad p − − −Matching M pAbbildung 4.2: Matching <strong>und</strong> zunehmende Pfade137


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALE4.3.16 SatzM <strong>und</strong> N seien Matchings mit |M| = r < |N| = s. Dann enthält M ⊕ Nmindestens s − r knotendisjunkte zunehmende Pfade bzgl. M.Beweis: Betrachte den <strong>Graphen</strong> H = (V, M ⊕ N). In H ist jeder Knotenhöchstens mit einer Kante aus M \ N <strong>und</strong> einer aus N \ M inzident. Für jedeZusammenhangskomponente C 1 , . . . C g (kurz: C) von H gilt deshalb einerder drei folgenden Fälle:• C ist ein (in H) isolierter Knoten• C ist ein Zyklus gerader Länge mit Kanten abwechselnd in M \ N <strong>und</strong>N \ M• C ist ein Pfad mit Kanten abwechselnd in M \ N <strong>und</strong> N \ MSei C i = (V i , E i ), setze δ i = |E i ∩ N| − |E i ∩ M|. Dann ist δ i ∈ {−1, 0, 1}, <strong>und</strong>δ i = 1 genau dann, wenn E i ein zunehmender Pfad bzgl. M ist. Außerdemgiltg∑δ i =i=1g∑|E i ∩ N| −i=1g∑|E i ∩ M|i=1= |(M ⊕ N) ∩ N| − |(M ⊕ N) ∩ M|= |N \ M| − |M \ N| = |M| − |N| = s − r.Also ist δ i = +1 für mindestens s−r verschiedene Werte von i. Die zugehörigenV i sind als Knotenmengen von Zusammenhangskomponenten disjunkt.□4.3.17 KorollarM ist ein maximales Matching genau dann, wenn es keinen zunehmendenPfad bezüglich M gibt.4.3.18 KorollarIst M ein Matching mit |M| = r <strong>und</strong> hat ein maximales Matching die Größes > r, so existiert ein zunehmender Pfad bzgl. M mit höchstens der Länge2 · ⌊r/(s − r)⌋ + 1.Beweis: N sei ein maximales Matching, |N| = s. Nach Satz 4.3.16 enthältM ⊕ N mindestens s − r knotendisjunkte (<strong>und</strong> damit kantendisjunkte) zunehmendePfade bzgl. M. Alle solchen Pfade zusammen enthalten höchstensr Kanten aus M, also enthält einer von ihnen höchstens ⌊r/(s − r)⌋ Kanten138


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALEaus M. Dieser Pfad hat eine Gesamtlänge von höchstens 2 · ⌊r/(s − r)⌋ + 1.□Uns interessieren die Längen kürzester zunehmender Pfade.4.3.19 SatzM sei ein Matching <strong>und</strong> p ein kürzester zunehmender Pfad bzgl. M <strong>und</strong> p ′ein zunehmender Pfad bzgl. M ⊕ p. Dann ist|p ′ | ≥ |p| + 2|p ∩ p ′ |.Beweis: Setze N = M ⊕ p ⊕ p ′ . N ist Matching mit |N| = |M| + 2. NachSatz 4.3.16 gibt es in M ⊕ N zwei knotendisjunkte zunehmende Pfade p 1 , p 2bzgl. M. Nach Lemma 4.3.14 ist M ⊕ N = p ⊕ p ′ <strong>und</strong> damit(4.3.2) |p ⊕ p ′ | ≥ |p 1 | + |p 2 | ≥ 2|p| (da p kürzester Pfad).Andererseits gilt für jede symmetrische Differenz |p⊕p ′ | = |p|+|p ′ |−2|p∩p ′ |.Dies ergibt|p ′ | = |p ⊕ p ′ | − |p| + 2|p ∩ p ′ | (4.3.2)≥ |p| + 2|p ∩ p ′ |.Wir wollen einen Algorithmus formulieren, der eine Folge von Matchings nachfolgendem algorithmischen Gerüst <strong>auf</strong>baut:M 0 = ∅für i = 0, 1, . . .setze M i+1 = M i ⊕ p i , wobei p i kürzester zunehmender Pfad bzgl. M iSatz 4.3.19 zeigt, dass die Längen der p i immer größer werden. Es gilt sogar4.3.20 LemmaEs gilt im obigen Algorithmus(i) |p i | ≤ |p i+1 |(ii) für alle i ≠ j mit |p i | = |p j | sind p i <strong>und</strong> p j knotendisjunkt.Beweis: nur zu (ii): Angenommen, |p i | = |p j | für i < j <strong>und</strong> p i <strong>und</strong> p j sindnicht knotendisjunkt. Dann existieren zwei Indizes k, l mit i ≤ k < l ≤ jso dass |p k | = |p l |, p k <strong>und</strong> p l sind nicht knotendisjunkt, aber alle p m sindknotendisjunkt mit p k <strong>und</strong> p l , k < m < l. Der Pfad p l besitzt keine Kantenaus p k+1 , . . . , p l−1 . Damit ist p l ein zunehmender Pfad nicht nur bzgl. M l139□


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALEsondern auch bzgl. M k+1 = M k ⊕p k , also |p l | ≥ |p k |+|p k ∩p l | nach Satz 4.3.19.Wegen |p k | = |p l | folgt daraus, dass p k <strong>und</strong> p l keine gemeinsamen Kantenbesitzen. Andererseits besitzen p k <strong>und</strong> p l nach Annahme einen gemeinsamenKnoten v. Die Kante aus M k ⊕p k , mit welcher v inzident ist, gehört zu p k <strong>und</strong>p l (denn p l ist zunehmender Pfad bzgl. M k ⊕ p k ). Dies ist ein Widerspruch.□4.3.21 SatzSei s die Größe eines maximalen Matchings. Die Anzahl der verschiedenenZahlen in der Folge|p 0 |, |p 1 |, . . . , |p i |, . . . , |p s−1 |ist kleiner oder gleich 2⌊ √ s⌋ + 1.Beweis: Nehme r = ⌊s − √ s⌋ < s. Dann ist |M r | = r <strong>und</strong> nach Korollar4.3.18 ist⌊ ⌋ ( )rs|p r | ≤ 2 + 1 = 2s − r⌈ √ s⌉ − 1 + 1( ) s√s≤ 2 · − 1 + 1 = 2 √ s − 1 ≤ 2⌊ √ s⌋ + 1.Damit: Die verschiedenen Werte von |p 0 |, . . . , |p r | sind höchstens alle ungeradennatürlichen Zahlen ≤ 2⌊ √ s⌋ + 1, also höchstens ⌊ √ s⌋ + 1 Stück. Anzahlder verschiedenen Werte in |p r+1 |, . . . , |p s−1 | sind höchstens s−1−(r+1)+1 =s−r−1 ≤ ⌈ √ s⌉−1 ≤ ⌊ √ s⌋. Insgesamt also höchstens 2⌊ √ s⌋+1 verschiedeneWerte.□Auf der Gr<strong>und</strong>lage von Lemma 4.3.20 können wir das Algorithmus-Gerüstwie folgt konkretisieren.4.3.22 AlgorithmusM = ∅while (es existiert ein zunehmender Pfad bzgl. M) do{zentraler Schritt}sei l(M) die Länge des kürzesten solchen Pfadesfinde eine maximale Menge {Q 1 , . . . , Q t } mit(i) jedes Q i ist ein zunehmender Pfad bzgl. M der Länge l(M)(ii) die Q i sind paarweise knotendisjunktM = M ⊕ Q 1 ⊕ . . . ⊕ Q tend while140


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALE(Eine Menge heißt maximal bezüglich einer Eigenschaft, wenn keine echteObermenge diese Eigenschaft besitzt.)Beachte: Satz 4.3.21 zusammen mit Lemma 4.3.20 besagt, dass die while-Schleife aus zentralen Schritten höchstens 2 √ s+2-mal durchl<strong>auf</strong>en wird (dasletzte Mal, um festzustellen, dass kein zunehmender Pfad exisitiert). Wennwir jeden zentralen Schritt mit Aufwand O(|E| + |V |) durchführen können,erhalten wir eine Gesamtkomplexität von O( √ |V |(|E| + |V |)), denn s ≤|V |/2.Wir behandeln den zentralen Schritt jetzt für den Fall eines bipartiten <strong>Graphen</strong>P = (V, E) mit V = B ∪G. Dazu sei M ⊆ E das vorliegende Matching.Zu P definieren wir den gerichteten <strong>Graphen</strong> D = (V, Ē), indem wir denKanten Richtungen geben:Ē = {(u, v) | {u, v} ∈ M, u ∈ B, v ∈ G}∪ {(v, u) | {u, v} ∈ E \ M, u ∈ B, v ∈ G}.Jeder zunehmende Pfad bzgl. M ist damit ein gerichteter Pfad in D, dervon einem freien ’girl’ (v ∈ G) zu einem freien ’boy’ (u ∈ B) führt. Wirkonstruieren eine Teilgraphen ˆD von D, dessen gerichtete Pfade von freiengirls zu freien boys genau den kürzesten zunehmenden Pfaden bzgl. M (in D)entsprechen. Dazu konstruieren wir ‘umgekehrte’ Levelmengen L 0 , L 1 , L 2 , . . ..L 0 = {u ∈ B, u ist frei } freie boysE i = {(u, v) | (u, v) ∈ Ē, v ∈ L i, u ∉ L 0 ∪ . . . ∪ L i },L i+1 = {u ∈ V | ex. v ∈ V mit (u, v) ∈ E i },i = 0, 1, 2, . . .Sei i ∗ die kleinste Zahl i mit L i ∩ { freie girls } ≠ ∅, <strong>und</strong> setze ˆD = ( ˆV , Ê)mitˆV =Ê =i⋃∗ −1i=0i ∗ −2L i ∪ (L i ∗ ∩ { freie girls }) ,⋃E i ∪ {(u, v) | (u, v) ∈ E i ∗ −1, u ist freies girl }.i=0(s. Abbildung 4.3.)4.3.23 LemmaˆD hat folgende Eigenschaften:141


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALE• die Knoten der geraden Levels L 0 , L 2 , . . . sind alle boys, die der ungeradenL 1 , L 3 , . . . sind alle girls.• (u, v) ∈ Ê ⇒ ex. i mit v ∈ L i, u ∈ L i+1 .• ˆD enthält keine Zyklen.• die kürzesten zunehmenden Pfade bzgl. M in E haben die Länge i ∗<strong>und</strong> entsprechen eins zu eins den gerichteten Pfaden von einem freiengirl zu einem freien boy in ˆD.Beweis: klar <strong>auf</strong> Gr<strong>und</strong> der Konstruktion von ˆD, s. auch Abbildung 4.3.Wir ergänzen ˆV um zwei Knoten q (Quelle) <strong>und</strong> s (Senke) <strong>und</strong> Ê um gerichteteKanten von q zu allen freien girls ∈ ˆV <strong>und</strong> von allen freien boys ∈ ˆV zus. Das Ergebnis nennen wir wieder ˆD = ( ˆV , Ê). Für den zentralen Schritt interessiertjetzt die Bestimmung einer maximalen Menge von (bis <strong>auf</strong> s <strong>und</strong> q)knotendisjunkten gerichteten Pfaden von q nach s. Dies erreicht man mittelseiner Variante der klassischen Tiefensuche ähnlich zu Algorithmus 4.2.18.4.3.24 Algorithmusi = 1{Zähler für Pfade}füge q in leeren Stack S einwhile S ist nicht leer dobetrachte oberstes Element u von Sif es existiert ein nicht markierter Knoten v mit (u, v) in Ê thenwähle einen solchen {falls v = s gibt’s keine weiteren}if v = s thengebe S (ohne q) als gesuchten Pfad Q i aus, i + +füge q in nun wieder leeren Stack S einelsemarkiere vfüge v in S einend ifelseentferne u aus Send ifend whileDie Q i sind knotendisjunkt, da bereits mit einem Q i ausgegebene Knotenmarkiert sind. Der Algorithmus entfernt alle Knoten von ˆV höchstens einMal aus S, er betrachtet insgesamt alle Kanten aus Ê höchstens einmal <strong>und</strong>142


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALEz1s1z1s1z2s2z2s2z3s3z3s3z4s4z4s4z5girlss5boysz5girlss5boysbipartiter Graphgerichteter Graphs2z3s1z1s5z4s3z2L0 L1 L2 L3^Teilgraph Ds2z3s1z1ss5z4s3z2qL0 L1 L2 L3^Dmit Quelle <strong>und</strong> SenkeAbbildung 4.3: Matching im bipartiten <strong>Graphen</strong> <strong>und</strong> ˆD143


4.3. STRUKTURELLE SINGULARITÄT UND TRANSVERSALEer gibt in allen Q i insgesamt höchstens alle Knoten aus, denn die Q i sindknotendisjunkt. Deshalb ist der Aufwand O(| ˆV | + |Ê|) = O(|V | + |E|).Angenommen, es gibt einen zu den ausgegebenen Q i knotendisjunkten Pfad(v 1 , . . . , v m ). Hierin ist v 1 markiert (denn der Algorithmus markiert alle zuq benachbarten Knoten). Ebenso ist v m nicht markiert, denn sonst wäre v mim nach Untersuchung der Kante (v m , s) (die einzige, die von v m ausgeht)ausgegebenen Pfad Q i . Sei k, 1 < k ≤ m der kleinste Index, so dass v knicht markiert ist. Weil v k−1 markiert ist, wurde es in S eingefügt. Weil v knicht markiert ist, wurde die Kante (v k−1 , v k ) nie betrachtet, d.h. der StackS wurde irgendwann einmal ausgegeben als Pfad Q i , welcher v k−1 enthält.Damit ist Q nicht knotendisjunkt zu den Q i , Widerspruch. Damit haben wir4.3.25 Satz(i) Algorithms 4.3.24 bestimmt eine maximale Menge von knotendisjunktengerichteten Pfaden von q nach s mit Aufwand O(| ˆV | + |Ê|) =O(|V | + |E|).(ii) Wendet man Algorithmus 4.3.22 mit Algorithmus 4.3.24 an <strong>auf</strong> denbipartiten <strong>Graphen</strong> P (A) von A ∈ R n×n , so beträgt sein AufwandO( √ n(n + nnz(A))).Duff, Erisman <strong>und</strong> Reid berichten, dass der Algorithmus von Hopcroft <strong>und</strong>Karp wegen der <strong>auf</strong>wendigeren Implementierung dem von Hall in der Praxisdoch unterlegen ist, obwohl die Worst-Case-Komplexität um die Ordnung√ n besser ist.144


Abschnitt 4.4B-reduzible NormalformErinnerung an Abschnitt 4.2: Reduzible Normalform (RNF)⎡⎤A 11 0P AP T ⎢= ⎣.. ..⎥⎦ , A ii ∈ R n i×n iirreduzibelA N1 . . . A NNIn Abschnitt 4.2 haben wir (implizit) gezeigt:4.4.1 SatzDie RNF ist eindeutig bis <strong>auf</strong>• Permutationen innerhalb jedes (Diagonal-) Blocks (̂= starke Zusammenhangskomponentevon D(A)),• bestimmte Permutationen der Blöcke als Ganzes. (̂= andere topologischeSortierung des Quotientengraphen).Was gewinnt man, wenn man allgemeiner P AQ T betrachtet, Q Permutationsmatrix?4.4.2 Definition(i) A ∈ R n×n heißt beidseitig reduzibel (b-reduzibel), falls PermutationsmatrizenP, Q existieren mit[ ]P AQ T B11 0=, BB 21 B 11 , B 22 quadratisch <strong>und</strong> n ≥ 222oderAndernfalls heißt A b-irreduzibel.( n = 1 <strong>und</strong> A = 0).(ii) Eine b-reduzible Normalform (BRNF) von A ist eine Darstellung⎡⎤B 11 0(4.4.1) P AQ T ⎢= ⎣.. ..⎥⎦ , B ii ∈ R n i×n i,B N1 . . . B NN


4.4. B-REDUZIBLE NORMALFORMmit{b-irreduzibel oderB ii( n i = 1 <strong>und</strong> B ii = 0).Wir zeigen nun: Falls A eine Transversale besitzt, ist die BRNF ”im Wesentlichen“eindeutig <strong>und</strong> man erhält sie in zwei Schritten:a) bestimme eine Transversale, d.h. P 1 , so dass (P 1 A) ii ≠ 0, i = 1, . . . n(siehe Abschnitt 4.3)b) bestimme P 2 so, dass P 2 (P 1 A)P T 2 RNF von P 1 A ist (siehe Abschnitt 4.2)nehme P = P 2 P 1 , Q = P 2 .4.4.3 LemmaSei B = P AQ T eine BRNF von A, siehe (4.4.1). π ̂= P , σ ̂= Q, d.h. b ij =a π(i),σ(j) .(i) AQ T besitzt eine Transversale genau dann, wenn A eine solche besitzt.(ii) A besitze eine Transversale, τ sei eine beliebige Transversale von AQ T .Dann gilt(4.4.2){τ(m i + 1), . . . , τ(m i+1 )} = {π(m i + 1), . . . , π(m i+1 )},∑i−1wobei m i = n l .l=1i = 1, . . . , N,Beweis: Zu (i): s.u. (Lemma 4.4.5).Zu (ii): Letzte Blockspalte von AQ T hat Nichtnullen nur in den n N Zeilenπ(m N−1 + 1), . . . , π(m N ). Die Transversale τ permutiert diese Zeilen <strong>auf</strong> dieNummern m N + 1, . . . , m N+1 . Dies beweist (4.4.2) für i = N. Streiche jetztBlockzeile N <strong>und</strong> Blockspalte N <strong>und</strong> wiederhole das Argument induktiv. □4.4.4 FolgerungIn der Situation von Lemma 4.4.3 gilt (T = Permutationsmatrix zu τ): B 1 =T AQ T ist ebenfalls BRNF (4.4.1) mit denselben Blockgrößen n i .4.4.5 LemmaSei Π(A) die Menge aller Transversalen von A, Q sei Permutationsmatrix zurPermutation σ. Dann giltΠ(AQ T ) = Π(A) ◦ σ = {π ◦ σ, π ∈ Π(A)}.146


4.4. B-REDUZIBLE NORMALFORMBeweis:˜π ∈ Π(AQ T ) ⇐⇒ (AQ T )˜π(i),i ≠ 0, i = 1, . . . , n⇐⇒⇐⇒⇐⇒A˜π(i),σ(i) ≠ 0, i = 1, . . . , nA˜π(σ −1 (i)),i ≠ 0, i = 1, . . . , n˜π ◦ σ −1 ∈ Π(A)⇐⇒ ˜π = π ◦ σ, π ∈ Π(A) (π = ˜π ◦ σ −1 ).4.4.6 FolgerungSei B = P AQ T eine BRNF von A, τ sei Transversale von A, T zugehörigePermutationsmatrix. AusB = P AQ T = (P T T )(T A)Q T (T T = T −1 )ergibt sich nach Folgerung 4.4.4, dass B ′ = T ′ (T A)Q T mit T ′ ̂= Transversalevon (T A)Q T dieselbe Struktur (4.4.1) hat wie B, also auch BRNF ist. Es istid Transversale von T A, nach Lemma 4.4.5 also id ◦ σ (σ ̂= Q) Transversalevon (T A)Q T . Insbesondere kann also T ′ = Q gewählt werden <strong>und</strong>Q(T A)Q T = B ′′besitzt die selbe Struktur (4.4.1) wie B ′ , B.4.4.7 FolgerungJede BRNF von A ergibt sich also als Q(T A)Q T für jede Transversale T .Die ”Freiheiten“ bei den BRNF sind also neben der Wahl von T dieselbenwie bei RNF (Satz 4.4.1). Insbesondere ist die BRNF in diesem Sinne ”imWesentlichen“ eindeutig. Sie wird berechnet durch die beschriebene 2-Stufen-Methode1) bestimme Transversale τ ↔ T ,2) bestimme RNF von T A.□4.4.8 Beispiel⎡A =⎢⎣0 × × × 0× 0 0 × ×0 0 × 0 00 0 0 × ×0 × 0 × 0⎤⎥⎦147


4.4. B-REDUZIBLE NORMALFORMz1z2z3z4z5s1s2s3s4s5Abbildung 4.4: P (A) für A aus Beispiel 4.4.8Abbilding 4.4 zeigt P (A). Man erkennt: Eine Transversale ist τ mit τ(1) =4, τ(2) = 1, τ(3) = 3, τ(4) = 5, τ(5) = 2. Damit ergibt sich⎡⎤× 0 0 × ×0 × 0 × 0T A =⎢ 0 0 × 0 0⎥⎣ 0 × × × 0 ⎦0 0 0 × ×D(T A):15234Digraph D(TA)Starke Komponenten von D(T A):C 1 = {1}, C 2 = {2, 4}, C 3 = {3}, C 4 = {5}.Umgekehrte topologische Sortierung des Quotientengraphen z.B.:C 3 , C 2 , C 4 , C 1148


4.4. B-REDUZIBLE NORMALFORMBRNF von A ist also⎡Q(T A)Q T =⎢⎣Zum Vergleich: Ohne Transversale ist D(A):× 0 0 0 00 × × 0 0× × × 0 00 0 × × 00 0 × × ×⎤⎥⎦13452Digraph D(A)mit den starken Zusammenhangskomponenten C 1 = {3}, C 2 = {1, 2, 4, 5},bereits umgekehrt toplogisch sortiert. Die RNF von A ist also⎡⎤× 0 0 0 00 × 0 × ×P AP T =⎢ 0 0 × × 0⎥⎣ × 0 × × 0 ⎦0 0 0 × ×149


Abschnitt 4.5Rückgriff <strong>auf</strong> symmetrische StrukturenGegeben: A ∈ R n×n , nicht symmetrisch, beidseitig irreduzibel. Vorgehen zurFaktorisierung (wird in der Praxis häufig verwendet):a) bilde die symmetrische Struktur struct(A + A T ),b) bestimme mit einer der Methoden aus Kapitel 3 eine Permutation P(für A + A T ),c) A ← P AP T ,d) faktorisiere A als A = LDU, L in die L-Datenstruktur von P (A +A T )P T , U in (L-Datenstruktur) T von P (A + A T )P T ,e) schätze ρ nach oben ab (Abschnitt 4.1).In diesem Fall hat man also wieder eine symbolische <strong>und</strong> numerische Phase.Falls struct(A) unsymmetrisch ist, sind in L <strong>und</strong> U einige ”nicht-zufällige“Nullen explizit gespeichert.4.5.1 Beispiel⎡A =⎢⎣× 0 × 0 0× × 0 × 00 0 × × ×0 × 0 × ×0 0 × 0 ×⎤⎥⎦⎡A + A T =⎢⎣× ⊗ × 0 0× × 0 × 0⊗ 0 × × ×0 × ⊗ × ×0 0 × ⊗ ×⎤⎥⎦


4.5. RÜCKGRIFF AUF SYMMETRISCHE STRUKTURENG(A + A T ):13254MD-Anordnung für A + A T : G(A + A T ) ist z.B. 1, 2, 3, 4, 5 ̂= id, d.h. A + A Tist bereits in MD-Anordnung. Bei Gauß-Elimination ergibt sich⎡⎤ ⎡⎤× ⊗ × 0 0 × ⊗ × 0 0× × 0 × 0⎢ ⊗ 0 × × ×⎥⎣ 0 × ⊗ × × ⎦ × × × × 0⎢ ⊗ ⊗ × × ×⎥⎣ 0 × ⊗ × × ⎦0 0 × ⊗ × 0 0 × ⊗ ×⎡⎤ ⎡⎤× ⊗ × 0 0× ⊗ × 0 0× × × × 0⎢ ⊗ ⊗ × × ×⎥⎣ 0 × × × × ⎦ . . . × × × × 0⎢ ⊗ ⊗ × × ×⎥⎣ 0 × × × × ⎦0 0 × ⊗ ×0 0 × × ×⎛ L =⎜⎝×× ×⊗ ⊗ ×0 × × ×0 0 × × ×⎞⎟⎠⎛U =⎜⎝× ⊗ × 0 0× × × 0× × ×× ××Die ⊗ markieren Positionen, die in der Datenstruktur vorhanden sind, abermit Wert 0 belegt sind.nnz(L) = 12; bei Berücksichtigung der Nullen nnz(L) = 10,nnz(U) = 12; bei Berücksichtigung der Nullen nnz(U) = 11.Die beschriebene Vorgehensweise ignoriert Probleme, die wegen zu kleiner(oder gar verschwindender) Pivotelemente <strong>auf</strong>treten können. Man erkenntsolche Probleme aber, wenn die Schranke für den Wachstumsfaktor ρ zugroß wird.151⎞⎟⎠


4.5. RÜCKGRIFF AUF SYMMETRISCHE STRUKTURENEine Heurstik zur Vermeidung kleiner Pivots ist, anfänglich große Diagonalelementezu erreichen. Wir beschreiben eine kürzlich vorgestellte solcheHeuristik im Folgenden 1 .4.5.2 DefinitionSei A ∈ R n×n . Dann istdiagmin(A) =nmini=1 |a ii|.4.5.3 DefinitionEine Transversale τ für A ∈ R n×n , A nicht strukturell singulär, heißt Flaschenhals-Transversale, falls giltdiagmin(T A) =max diagmin(P A),πTransversalewobei T, P Permutationsmatrix zu τ, π. Wir schreibendiagmin(T A) = bn(A).Eine Flaschenhalstransversale τ ist also charakterisiert durchnmini=1 |a τ(i),i| = maxπTransversalenmini=1 |a π(i),i)|.4.5.4 LemmaIst τ Flaschenhalstransversale für A ∈ R n×n , T zugeh. Permutationsmatrix,so gilt für jede Wahl von Permutationsmatrizen P, Qdiagmin(T A) ≥ diagmin(P AQ T ).Folgerung: Eine Flaschenhalstransversale bringt ”möglichst“ große Einträge<strong>auf</strong> die Diagonale.Wir kümmern uns nun um die algorithmische Bestimmung von τ. Dazu4.5.5 DefinitionSei A ∈ R n×n . Zu ɛ ≥ 0 ist die Matrix A ɛ definiert als{aij falls |a(A ɛ ) ij =ij | ≥ ɛ0 sonst1 Duff, I., Koster, J.: The design and use of algorithms for permuting large entries tothe diagonal of sparse matrices, SIAM J. Matrix Anal. Appl. 20, 889-901 (1999)152


4.5. RÜCKGRIFF AUF SYMMETRISCHE STRUKTURENEs ist also A = A 0 .Folge: Ist ɛ 0 = bn(A), so besitzt A ɛ Transversalen für alle ɛ ≤ ɛ 0 , <strong>und</strong> keineTransversale für ɛ > ɛ 0 .In Zukunft sagen wir kurz ”M ist ein Matching für A“, wenn es eines fürden bipartiten <strong>Graphen</strong> P (A) (siehe Definition 4.3.12) ist. M muss nichtunbedingt die Größe n haben.Beachte: Für ɛ > ɛ ′ ist P (A ɛ ) ein Teilgraph von P (A ɛ ′) (mit evtl. wenigerKanten). Jedes Matching für P (A ɛ ) ist auch eines für P (A ɛ ′, aber nicht umgekehrt.4.5.6 DefinitionSei M ein Matching für A <strong>und</strong> ɛ ≥ 0. Dann istM ɛ = {(i, j) ∈ M | |a i,j | ≥ ɛ}Es ist M ɛ ⊆ M ein Matching von A <strong>und</strong> A ɛ .Wir gehen nun davon aus, dass wir ein Verfahren haben, das ein MatchingM für A erweitert zu einem maximalen Matching M ′ = MM(A, M). (DieVerfahren von Hall <strong>und</strong> von Hopcroft <strong>und</strong> Karp können beide entsprechendmodifiziert werden.)Idee für Algorithmus: Verkleinere durch Bisektion sukzessive ein Intervall[ɛ, ɛ], so dass A ɛ kein, A ɛ dagegen ein Matching der Größe n besitzt.4.5.7 Algorithmus(Flaschenhals-Matching)setze ɛ = 0, ɛ = ∞M = MM(A, ∅)T ′ = Mwhile es ex. i, j mit ɛ < |a ij | < ɛ dowähle ein solches (i, j), setze ɛ = |a ij |T = MM(A ɛ , T ɛ ′)if |T | = |M| thenT ′ = T, ɛ = ɛelseɛ = ɛend ifend while{Details später}Wenn A eine Transversale besitzt, ist |M| = n. Der Algorithmus ist so formuliert,dass er auch im Falle einer strukturell singulären Matrix ein maximalesFlaschenhalsmatching bestimmt.153


4.5. RÜCKGRIFF AUF SYMMETRISCHE STRUKTURENKorrektheit des Algorithmus: Scheifeninvariante für die While-Schleife ist:T ′ ist ein maximales Matching für A ɛ , A ɛ besitzt kein maximalesMatching.Die While-Schleife bricht ab, denn die Zahl der möglichen Kandidaten i, j verringertsich pro Durchl<strong>auf</strong> um mindestens eins. Bei Abbruch ist ɛ ≤ bn(A) < ɛ<strong>und</strong> T ′ ist ein Flaschenhals-Matching.Zur Wahl von (i, j) mit(4.5.1) ɛ < ɛ = |a ij | < ɛin der while-Schleife:a) Versuche, ɛ ≈ (ɛ + ɛ)/2 zu erreichen.Dann wird in jedem Schritt das Intervall [ɛ, ɛ] ungefähr halbiert.b) Wähle ɛ als den Median aller |a ij | mit ɛ ≤ |a ij | < ɛ. Dann wird dieZahl der zu betrachtenden (i, j) in jedem Schritt halbiert. Das ist i. A.schneller.c) Durchl<strong>auf</strong>e Spalten (Zeilen) von A ɛ <strong>und</strong> sammle so k (z.B. k = 10)Positionen (i l , j l ) mit (4.5.1). Nehme den Median dieser k Positionen.(In Praxis bevorzugte Variante.)Zur Implementierung:• Es ist wichtig, A ɛ <strong>und</strong> A ɛ einfach <strong>auf</strong>datieren zu können, wenn sich ɛ, ɛändern. Für a) <strong>und</strong> b) muss man dazu A (implizit) sortieren (ein Feldvon Pointern realisiert die Vertauschungen).Aufwand aber O(nnz(A) log(nnz(A)).• Für c) genügt es, wenn jede Spalte (Zeile) von A sortiert wird, AufwandO(n) (wenn pro Zeile O(1) Einträge).• Bei Verwendung des Algorithmus von Hall sollte man im Look-aheadSchritt immer möglichst große Einträge nehmen, wenn man da eineWahl hat. So werden im Matching große Zahlen gegnüber kleinerenbevorzugt.• In der Praxis wird man die while-Schleife abbrechen, sobald ɛ − ɛ kleingenug ist.• Im Falle |T | = |M| kann man ɛ durch ɛ = min (i,j)∈T |a i,j | vergößern.154


Abschnitt 4.6Markowitz-StrategieAusgangspunkt sei wie in Abschnitt 4.5. Bei der Markowitz-Strategie wirdGauß-Elimination mit Spalten- <strong>und</strong> Zeilen-Pivotsuche verwendet.4.6.1 Algorithmus(Gauß-Elimination mit beidseitiger Pivotsuche, explizite Vertauschungen.)for k = 1 to n − 1 dobestimme Pivotelement a (k)st in A (k) (k : n, k : n) {Pivotwahl}vertausche Zeilen k <strong>und</strong> s sowie die Spalten k <strong>und</strong> t in A (k) , ergibt Ã(k) .for i = k + 1 to n dol ik = ã (k)ik /ã(k) kkend forfor i = k + 1 to n dofor for j = k + 1 to n doa (k+1)ijend forend forend for= ã (k)ij− l ik ã (k)kjBestimmt wird also P AQ T = LU, P, Q Permutationsmatrizen.Bemerkung: Wählt man |a (k)st | =nij | (vollständige Pivotsuche, ist O(n2 )-maxi,j=k |a(k)Falle), so gilt für den Wachstumsfaktor:√(Wilkinson, 1961)4.6.2 Definitionρ ≤n · 2 1 · 3 1 2 · 4 1 3 . . . n 1n−1 ·nmaxi,j=1 |a ij|.r (k)i = |struct(A (k) (i, k : n))| (Anzahl der Nichtnullen in Zeile i)c (k)j = |struct(A (k) (k : n, j))| (Anzahl der Nichtnullen in Spalte j)


4.6. MARKOWITZ-STRATEGIEm (k)ij = (r (k)i − 1) · (c (k)j − 1)4.6.3 Definition(Markowitz-Strategie)” Markowitz-Zahl“.a) ohne Rücksicht <strong>auf</strong> Stabilität: wähle Pivot-Element s, t so, dassm (k)st= min{m (k)ij: i, j = k, . . . , n <strong>und</strong> a (k)ij ≠ 0}.b) mit Schwellenpivotsuche (Parameter u): wähle Pivot s, t so, dass{}(4.6.1) m (k)st = min m (k)ij : i, j = k, . . . , n <strong>und</strong> |a (k)ij | ≥ u ·nmaxl=k |a(k) lj | .Begründung: Die Positionen der Elemente von A (k) , welche im Schritt kneu bestimmt werden, sind(struct(A·t (k : n)) {t}) × (struct(A s·(k : n)) {s}).Deren Zahl ist m (k)st ; sie wird bei Strategie a) minimiert. Bei b) wird sieminimiert unter der Nebenbedingung|a (k)nst | ≥ u · maxl=k |a(k) lt |(numerische Stabilität).Markowitz ist wie MD also eine Greedy-Strategie zur Minimierung des Rechen<strong>auf</strong>wandes.4.6.4 BeispielPermutationen mit Markowitz-Strategie:⎡A =⎢⎣⎡⎢⎣× 0 × 0 0× × 0 × 00 0 × × ×0 ⊗ 0 0 00 0 × 0 ×× 0 0 0 0× × 0 × 00 0 × × ×0 × × × 00 0 × 0 ⊗⎤ ⎡⎥⎦ ⎢⎣⎤ ⎡⎥⎦ ⎢⎣× 0 0 0 0× ⊗ 0 × 00 0 × × ×0 × × 0 00 0 × 0 ×× 0 0 0 0× × 0 × 00 0 × 0 ×0 × 0 × ×0 0 × × ×⎤⎥⎦⎤⎥⎦156


4.6. MARKOWITZ-STRATEGIEP AQ T = LU:⎛L =⎜⎝×× ×0 0 ×0 × 0 ×0 0 × × ×⎞⎟⎠⎛U = ⎜⎝× 0 0 0 0× 0 × 0× 0 ×× ××⎞⎟⎠(Vergleiche mit B aus Abschnitt 4.5.)nnz(L) = 9, nnz(U) = 8.4.6.5 SatzA sei symmetrisch. Dann ist die Markowitz-Strategie (ohne Rücksicht <strong>auf</strong>Stabilität) identisch mit der Minimum-Degree-Methode.Beweis: Übung.Für die Implementierung gilt:• es sind struct(L) <strong>und</strong> struct(U) zu ermitteln, in Schritt k mussbekannt sein.struct(A (k) (k : n, k : n))• In der Variante ”ohne Rücksicht <strong>auf</strong> die Stabiltät“ kann man eine symbolischePhase vorschalten. Dies geht ”im Prinzip“ (bis <strong>auf</strong> die Nicht-Symmetrie) wie im symmetrischen Fall (Abschnitt 2.3).• Bei Schwellenpivotsuche wird die Struktur während der numerischenPhase mit bestimmt. Numerische <strong>und</strong> symbolische Phase sind nichtmehr voneinander zu trennen,• das Auffinden von s, t darf nicht zur O(n 2 )-Falle werden.Wir behandeln zuerst den letzten Punkt. Wir modifizieren zuerst die Schwellenpivotbedingungzu{(4.6.2) m st=(k) min m (k)ij : i, j = k, . . . , n <strong>und</strong>(|a (k)ij | ≥ u ·nmax(Spalten- oder Zeilenpivotsuche!)l=k |a(k) lj| oder |a(k) ij | ≥ u ·)}nmaxl=k |a(k) il | .157


4.6. MARKOWITZ-STRATEGIEDamit werden also entweder die Elemente der Spalte k von L oder die derZeile k von U alle ≤ 1/u.Überlegung: Angenommen, es existiert ein c > 0 mit nnz(A (k) (k : n, k : n)) ≥c · (n − k) (ist wohl fast immer der Fall), so ist die Bestimmung der m (k)ij einAufwand Ω(c(n − k)); über alle Schritte (k = 1, . . . , n) also Ω(cn 2 ) (!)Man sollte also nicht alle m k ij wirklich berechnen.Wie bei Minimum-Degree verwenden wir für die r (k)i <strong>und</strong> die c (k)j eine Listenverwaltungmit Hilfe von Feldern (siehe Abschnitt 3.3), so dass Einfügen<strong>und</strong> Löschen mit Aufwand O(1) möglich wird. Benötigte Listen:4.6.6 BeispielC µ : (Liste C µ enthält Knoten j mit c (k)j = µ),R ν : (Liste R ν enthält Knoten i mit r (k)i⎡A =⎢⎣× 0 × 0 0× × 0 × 00 0 × × ×0 ⊗ 0 0 00 0 × 0 ×⎤⎥⎦= ν).Alle Listen R ν mit drei Feldern rlheaders, rlvorg, rlnachf, alle Listen C µ mitdrei Felder clheaders, clvorg, clnachf:ν / i 1 2 3 4 5rlheaders 4 5 3 – –rlvorg 0 0 2 0 1rlnachf 5 3 0 0 0µ / i 1 2 3 4 5clheaders – 5 3 – –clvorg 0 1 0 2 5clnachf 2 4 0 4 0Wir nennen diese sechs Felder zusammen die Markowitz-Liste.Im Gegensatz zu MD verwalten wir aber keine Liste der m k ij.Vorgehen zur Bestimmung von s, t nun schrittweise:In Schritt l seien alle Listen C j , R i , i, j = 1, . . . , l bereits durchsucht, (˜s, ˜t)sei bisher ermitteltes Indexpaar, welches (4.6.2) erfüllt für bisher untersuchtei, j.1.Fall: m˜s˜t ≤ (l − 1) 2dann stopp; (˜s, ˜t) ist gesuchtes Indexpaar, denn für alle nicht untersuchtenSpalten <strong>und</strong> Zeilen ist c j ≥ l, r i ≥ l, also m ij ≥ (l − 1) 2 .2.Fall: m˜s˜t > (l − 1) 2durchl<strong>auf</strong>e R l+1 <strong>und</strong> C l+1 .158


4.6. MARKOWITZ-STRATEGIEAlgorithmus dazu (ohne oberen Index k ):4.6.7 Algorithmus(Bestimmung des Pivots bei Markowitz-Strategie)l = 1, m = n 2while m ≥ (l − 1) 2 dofor alle i ∈ R l docompute th = max j∈struct(Ai,·) |a ij |for alle j ∈ struct(A i,·) doberechne m ij = (l − 1) · (c j − 1)if m ij < m <strong>und</strong> |a ij | ≥ u · th thenm = m ij , s = i; t = jend ifend forend forfor alle i ∈ C l docompute th = max i∈struct(A·,j ) |a ij |for alle i ∈ struct(A·,j ) doberechne m ij = (r i − 1) · (l − 1)if m ij < m <strong>und</strong> |a ij | ≥ u · th thenm = m ij , s = i; t = jend ifend forend forl = l + 1end while{Zeilen mit Länge l}{für Schwellenpivot}{Spalten mit Länge l}{für Schwellenpivot}Bemerkungen:• Auf die zweite äußere for-Schleife kann man verzichten, falls m < l(l−1), denn dann ist die Markowitz-Position bereits gef<strong>und</strong>en.• c j <strong>und</strong> r i sollten für jedes j, i mit Aufwand O(1) bestimmbar sein Ergänzung unserer üblichen Datenstrukturen notwendig. Man kannz.B. je ein Feld verwenden, welches nach jedem Schritt <strong>auf</strong>datiert wird.• Aufwand für einen L<strong>auf</strong> durch die while-Schleife:∑i∈R lO(r i ) + ∑ j∈C lO(c j ) = (|R l | + |C l |) · l.159


4.6. MARKOWITZ-STRATEGIE• Der Algorithmus kann auch dann im Prinzip immer noch zur O(n 2 )-Falle werden, in der Praxis aber nicht.• Ist R 1 oder C 1 nicht leer, so benötigt der Algroithmus nur einen Durchl<strong>auf</strong>durch die äußere for-Schleife (<strong>und</strong> es ist m = 0).Jetzt kümmern wir uns um eine geeignete LDU-Datenstruktur für die Markowitz-Strategie.4.6.8 DefinitionDie DCEL-Datenstruktur ( ”doubly connected edge list“) für eine unsymmetrischeMatrix A ist die DCEL für D(A), wobei als Information für jedeKante (i, j) gespeichert sind: a i,j , i <strong>und</strong> j. Insbesondere gilt:• jede Kante (i, j) kommt in genau zwei doppelt verketteten Listen vor,nämlich der Liste A i der Kanten mit Anfangsknoten i <strong>und</strong> der Liste E jder Kanten mit Endpunkt j.• Jede Kante (i, j) mit der Information a ij , i <strong>und</strong> j ist dabei nur einmalabgespeichert.In Info II im Gr<strong>und</strong>studium wurde eine Implementierung der DCEL vorgestellt.Bei der in dieser Vorlesung bevorzugten Realisierung über Felderbenötigt man die Felder val, cn, rn für die Kanteninformation a ij , i <strong>und</strong> jsowie die Felder aheaders, avorg, anachf <strong>und</strong> eheaders, evorg, enachf für dieListen.4.6.9 Beispiel⎡A =⎢⎣1.1 0 2.2 0 03.3 4.4 0 5.5 00 0 6.6 7.7 8.80 9.9 0 0 00 0 −1.1 0 −2.2⎤⎥⎦Eine DCEL-Darstellung ist160


4.6. MARKOWITZ-STRATEGIEi, j, k 1 2 3 4 5 6 7 8 9 10 11val 1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9 -1.1 -2.2rn 1 1 2 2 2 3 3 3 4 5 5cn 1 3 1 2 4 3 4 5 2 3 5aheaders 1 3 6 9 10avorg 0 1 0 3 4 0 6 7 0 0 10anachf 2 0 4 5 0 7 8 0 0 11 0eheaders 1 4 2 5 8evorg 0 0 1 0 0 2 5 0 4 6 8enachf 3 6 0 9 7 10 0 11 0 0 0Mit der DCEL-Datenstruktur müssen wir Operationen vornehmen, derenAufwand wir im folgenden zusammenfassen.4.6.10 LemmaMit der Bezeichnung r i (c j ) für die Länge der i-ten Zeile (j-ten Spalte) giltfür die DCEL-Darstellunga) das Einfügen eines neuen Eintrags a ij hat Aufwand O(1)b) das Auslesen oder Löschen der i-ten Zeile (j-ten Spalte) hat Aufwandr i (c j ).c) das (explizite) Vertauschen von Zeilen i <strong>und</strong> k besitzt den Aufwand∑O(c j ;analog für Spaltenj∈struct(A i,·)∪struct(A k,·)d) die Bestimmung des betragsgrößten Elements von Zeile i (Spalte j)besitzt den Aufwand O(r i ) (O(c j )).e) ein Schritt der Gauß-Elimination (nach Vertauschungen wegen Pivotwahl),d.h. die SAXPYs mit Zeile k <strong>und</strong> Zeile j, j ∈ struct(A·,k ), besitztden Aufwand∑∑O(r j + r k ) = O((c k − 1)r k ) + O(r j + r k ).j∈struct(A·,k ),j≠kj∈struct(A·,k ),j≠kDas ist mehr als der reine Rechen<strong>auf</strong>wand O(r k (c k − 1))!)f) die Aufdatierung von r i <strong>und</strong> c j in der Markowitz-Liste erfordet AufwandO(r k c k ).161


4.6. MARKOWITZ-STRATEGIEBeweis: Teil a) <strong>und</strong> b) sind im Wesentlichen aus Info II bekannt. Teil c)wurde als Algorithmus 1.2.10 für das erweiterte Listenformat angegeben, fürDCEL geht er genau so. Teil d) ist klar (man durchl<strong>auf</strong>e die Zeile/Spalte).Teil e) ergibt sich, wenn man für die Aufdatierung einer jeden Zeile j eineVariante des SAXPY-Algorithmus 1.1.6 durchführt: scatter k-te Zeile von Ain (vollen) Hilfsvektor w, durchl<strong>auf</strong>e Zeile j <strong>und</strong> datiere sie <strong>auf</strong>, verlängereZeile j um die fill-in Beiträge, setze dabei w <strong>auf</strong> Null zurück; AufwandO(r k + r j ). Wenn man bei der Berechnung der Fill-ins gleichzeitig r j <strong>und</strong> diebetroffenen c j <strong>auf</strong>datiert, jeweils mit Aufwand O(1) <strong>und</strong> jeweils mit AufwandO(1) die Markowitz-Liste abändert, ergibt sich für f) ein Aufwand von r k pro<strong>auf</strong>datierte Zeile, also pro Schritt O(r k c k ).?□Bemerkungen:• Die doppelte Verkettung der Listen ist für unsere Zwecke eigentlichnicht nötig. Es genügt eine ”SCEL“, d.h. avorga<strong>und</strong> evorgkönnen entfallen.• Im k-ten Schritt der Gauß-Elimination benötigen wir die Matrix A (k)mit entsprechend verkürzten Zeilen <strong>und</strong> Spalten. Das haben wir in unsererNotation nicht berücksichtigt. Praktisch wird beim Abspeicherndes Resultats des SAXPYs so vorgegangen: Beiträge zur k-ten Spaltewerden mit dem entsprechenden Wert für L überschrieben <strong>und</strong> aus derZeilenliste entfernt, nicht aber aus der Spaltenliste. Am Ende enthaltenso die Spaltenlisten also L, die Zeilenlisten enthalten U, die DiagonaleD wird extra gespeichert.162


KAPITEL 5Ein Blick <strong>auf</strong> die aktuelle ForschungDieses Kapitel soll ein paar Aspekte aktueller Forschung ansprechen.163


Abschnitt 5.1Dichte DiagonalblöckeJetzt: Kopplung von graphentheoretischen <strong>Algorithmen</strong> mit iterativen Verfahrenfür Ax = b.Wir betrachten Iterationsverfahren nur ganz grob: Bestimmung von Iteriertenx 0 , x 1 , . . . , x k , . . .wobei x k+1 ” einfach“ aus xk (<strong>und</strong> evtl. weiteren alten Iterierten) <strong>und</strong> A <strong>und</strong>b zu berechnen ist.5.1.1 BeispielJacobi-Iteration:(x k+1i = 1 · b i −a iin∑l=1,l≠ia il x k l), i = 1, . . . , n.Mit D = diag(A) <strong>und</strong> B = diag(A) − A schreibt man das alsx k+1 = D −1 (Bx k + b).Block-Jacobi-Iteration: Man nehme D als einen Block-Diagonalteil von A,B = D − A <strong>und</strong> rechne wiederx k+1 = D −1 (Bx k + b).Wir gehen nicht <strong>auf</strong> Konvergenztheorie ein. Bei einer <strong>dünn</strong> <strong>besetzte</strong>n Matrixist man daran interessiert, im Block-Jacobi-Verfahren möglichst volle Diagonalblöckezu bekommen. Erwartet wird dann eine schnellere Konvergenz.Wir behandeln jetzt ein graphentheoretisches Verfahren, das dichte Diagonalblöckeerzeugt per Transformation A → P AP T .Idee: Bilde Diagonalblöcke sukzessive durch Aufnahme geeigneter adjazenterKnoten. Achte <strong>auf</strong> Komplexität O(n+nnz(A)). Wir brauchen Kriterien überdie ”Fülle“ eines Blocks.


5.1. DICHTE DIAGONALBLÖCKE5.1.2 DefinitionSei G = (V, E) ein Graph, V ′ ⊆ V <strong>und</strong> (V ′ , E ′ ) der von V ′ induzierte Teilgraphvon G. Dann ist die Fülle“ ϕ(V ′ ) von V ′ (bzgl. G) definiert als”ϕ(V ′ ) ={|E ′ |(|V ′ | 2 −|V ′ |)/2falls |V ′ | > 10 sonst ..Analog gilt für einen Digraphen D = (V, E) <strong>und</strong> V ′ ⊆ V{|E ′ |ϕ(V ′ falls |V) =′ | > 1(|V ′ | 2 −|V ′ |)0 sonst ..ϕ(V ′ ) gibt das Verhältnis der Kanten zur maximal möglichen Zahl (bei einerClique mit |V ′ | Knoten) an. Insbesondere gilt:0 ≤ ϕ(V ′ ) ≤ 1.5.1.3 DefinitionIst G = (V, E) ein Graph oder D = (E, V ) ein Digraph, P ⊂ V <strong>und</strong> v ∈ V \P .Dann erfüllt v das ”Fülle-Kriterium“, wenn gilt(5.1.1) ϕ P ∪{v} ≥ αϕ Pmit festem α. Die Zahl α heißt Fülleparameter.Beachte: Je größer α, desto mehr Kanten hat der von P induzierte Teilgraph.Ein Wert α ≥ 1 ist denkbar <strong>und</strong> sinnvoll. Wenn v die Füllebedingung erfüllt,ist deg | P (v) groß. Typisch: α = 1.5.1.4 BeispielIm <strong>Graphen</strong>15 627983410411sei P = {1, 5}.Knoten, die die Füllebedingung erfüllen mit165


5.1. DICHTE DIAGONALBLÖCKEα = 1: 6, 7α = 2 : 2, 6, 735.1.5 DefinitionSei G = (V, E) ein Graph, P ⊂ V <strong>und</strong> v ∈ V . Der Grad (von v) in P , notiertals deg | P (v), ist der Grad von v im induzierten Teilgraphen G| P ∪{v} . Füreinen Digraphen D setzen wirdeg in | P (v) = ∣ ∣ { (w, v) ∈ E ∣ ∣ w ∈ P}∣ ∣ ,deg out | P (v) = ∣ ∣ { (v, w) ∈ E ∣ ∣ w ∈ P}∣ ∣<strong>und</strong> deg | P (v) = deg in | P (v) + deg out | P (v).5.1.6 DefinitionSei G = (V, E) ein Graph oder Digraph, P ⊂ V <strong>und</strong> v ∈ V \P mit deg(v) > 0.v erfüllt die Verb<strong>und</strong>enheitsbedingung falls(5.1.2)deg | P (v)deg(v)≥ β.Die Zahl β heißt Verb<strong>und</strong>enheitsparameter.Beachte: Je größer β, desto mehr Kanten von v gehen nach P , wenn v dieVerb<strong>und</strong>enheitsbedingung erfüllt. Ein Wert β > 1 ist nicht sinnvoll. Die Verb<strong>und</strong>enheitsbedingungberuht <strong>auf</strong> relativen Werten, d.h. die absolute Größedeg(v) spielt keine Rolle. Typisch: β = 0.5.5.1.7 BeispielIm <strong>Graphen</strong>15 627983410411sei P = {5, 6, 7, 9}.Knoten, die die Verb<strong>und</strong>enheitsbedingung erfüllen mit166


5.1. DICHTE DIAGONALBLÖCKEβ = 1: 8β = 3 4 : 1β = 1 : 2, 103PABLO 1 (Parametrized Block Ordering) ist ein Algorithmus, der die Knoteneines <strong>Graphen</strong> in Gruppen (= Blöcke) zusammenfasst. Die Gruppen werdender Reihe nach <strong>auf</strong>gebaut. Knoten werden in eine Gruppe mit <strong>auf</strong>genommen,wenn• die Fülle-Bedingung erfüllt ist der Block bleibt dicht besetzt ( ”innenviel“)oder• die Verb<strong>und</strong>enheitsbedingung erfüllt ist es gibt nur wenige Eintägein der Zeile/Spalte außerhalb des Blocks ( ”außen wenig“)Die Gruppenbildung entspricht einer Permutation π, P AP Tvolle Diagonalblöcke <strong>und</strong> relativ leere Außendiagonalblöcke.besitzt relativ1 J. O’Neil and D. B. Szyld: A block ordering method for sparse matrices, SIAM J. Sci.Stat. Comput. 11, 811-823 (1990)167


5.1. DICHTE DIAGONALBLÖCKE5.1.8 Algorithmus(PABLO für <strong>Graphen</strong> oder Digraphen (V, E))1: Wähle α <strong>und</strong> β für (5.1.1) <strong>und</strong> (5.1.2)2: C = V3: setze Q := ∅ <strong>und</strong> P := ∅4: while C ≠ ∅ do5: entnehme Knoten v aus C, füge ihn in P ein6: verschiebe alle zu v adjazenten Knoten aus C nach Q7: while Q ≠ ∅ do8: entferne einen Knoten w aus Q9: if w erfüllt (5.1.1) oder (5.1.2) then10: füge w in P ein11: verschiebe alle zu w adjazenten Knoten aus C nach Q12: else13: füge w in C ein14: end if15: end while16: entferne alle Knoten von P aus G, d.h. setze G := G| C17: gebe P als nächsten Block aus18: set P := ∅19: end whileAnalyse von Algorithmus 5.1.8: Das Ergebnis des Algorithmus ist eine Permutation,gegeben durch die Reihenfolge, in welcher die Knoten in die MengenP eingefügt werden. Jedes solche P ist ein Block.Terminierung: |V | := n. Zu jedem Zeitpunkt ist |Q| ≤ n, |C| ≤ n <strong>und</strong>|C| + |Q| ≤ n. In jedem Schritt durch die äußere Schleife verringert sich|C| um mindestens 1 terminiert. Jeder Durchl<strong>auf</strong> durch die innere Schleifeverringert |Q| oder |C| + |Q|. Nach spätestens 2n Schritten ist deshalb Q leer Schleife wird maximal 2n Mal durchl<strong>auf</strong>en.Aufwand: Wir gehen von folgenden Aufwänden O(1) aus (Realisierung mitgeeigneten Datenstrukturen s.u.):a) Entnehmen <strong>und</strong> Einfügen für C, Q, P : O(1)b) Aufdatierung von deg | P (w) für alle w ∈ adj(v): O(deg(v))c) Aufdatierung von ϕ(P ) <strong>auf</strong> ϕ(P ∪ {v}): O(deg(v))d) Bestimmung aller zu v adjazenten Knoten: O(|adj(v)|)168


5.1. DICHTE DIAGONALBLÖCKEe) Bestimmung von G := G| C ′ aus G C mit C ′ = C ∪ P : O(|P | + |E ′ |), E ′Kanten aus G C ′, die nicht in G| C sind.5.1.9 LemmaUnter diesen Voraussetzungen besitzt der PABLO-Algorithmus 5.1.8 denAufwand O(|E| + |V |).Beweis: Jeder Knoten w wird höchstens deg(w) mal in Q eingefügt, denndazu muss er adjazent zu einem v aus P sein, <strong>und</strong> alle v kommen nur einMal nach P . Aufwand für Zeilen 6, 8, 10, 11 <strong>und</strong> 13 deshalb jeweils O(|E|).Aufwand für Zeile 5: O(|V |). Aufwand für Zeile 16: O(|V |+|E|), für Zeile 17:O(|V |). Fehlt noch der Aufwand für das Überprüfen von (5.1.1) <strong>und</strong> (5.1.2).Dieser ist jeweils O(1) plus Aufwand für die Aufdatierung von ϕ(P ) <strong>und</strong>deg | P (v). Letzterer ist deg(v) <strong>und</strong> damit insgesamt (für alle v) O(|E|). □Wie erreicht man den Aufwand für die elementaren Operationen? Für Q, Pgenügt irgendeine lineare Datenstruktur wie Stack, Queue oder Liste, da diezu entnehmenden Knoten unspezifiziert sind. (Folge: PABLO verläuft unterschiedlich,je nach Wahl der Datenstruktur). Damit ist a) ok für Q, P . Aus Cmüssen wir vorgegebene Knoten mit Aufwand O(1) entfernen können (Zeile6). Wir nehmen deshalb für C eine doppelt verkettete Liste mit ”externemIndex“, genau wie bei der Markowitz-Liste (Abschnitt 4.6): Bei Realisierungmit Feldern ist Knoten v an Stelle v gespeichert. G = (V, E) nehmen wir inDCEL-Darstellung b), c), d), e) erfüllt.Praktische Modifikationen:a) Zu große Blöcke vermeiden: Setze Parameter maxbs. Wenn |P | = maxbs,innere Schleife abbrechen, Q nach C zurückschreiben, P ausgebenb) Zu kleine Blöcke vermeiden: Setze Parameter minbs. Wenn |P | < minbsnach Ende der inneren Schleife: Füge mehrere <strong>auf</strong>einanderfolgende Pin ursprünglich leere Menge P ′ ; wenn minbs ≤ P ′ gib P ′ als nächstenBlock aus. (Test <strong>auf</strong> zu große Böcke wird dann |P ′ | + |P | = maxbs).Sind P <strong>und</strong> P ′ Listen, ist das Vereinigen ein Aufwand O(1) (wenn manListenanfang <strong>und</strong> -ende kennt).5.1.10 BeispielMatrix STEAM3 vom Matrix.Market 2 . Abbildungen 5.1 <strong>und</strong> 5.2 zeigen dieStruktur der Matrix vor <strong>und</strong> nach der PABLO-Permutation (α = 1.0, β =0.5). Abbildung 5.3 zeigt den Digraphen mit PABLO-Nummerierung derKnoten.2 Ergebnisse der Diplomarbeit von David Fritzsche, Universität Wuppertal, 2004169


5.1. DICHTE DIAGONALBLÖCKEBemerkung:• PABLO kümmert sich gar nicht um Diagonaleinträge bestimme zuersteine Transversale, am Besten sogar eine Flaschenhals-Transversale.• PABLO kümmert sich nicht darum, ob die Diagonalblöcke regulär sind,was für das Block-Jacobi-Verfahren wünschenswert wäre.170


5.1. DICHTE DIAGONALBLÖCKE12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879801 •· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·2 ••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·3 · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·4 ••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·5 · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·6 · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·7 · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·8 · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·9 · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · ·10 · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·11 · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·12 · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · ·13 · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · ·14 · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·15 · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·16 · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · ·17 · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · ·18 · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·19 · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·20 · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · ·21 · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · ·22 · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·23 · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·24 · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · ·25 · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · ·26 · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·27 · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·28 · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · ·29 · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · ·30 · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·31 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·32 · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · ·33 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · ·34 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·35 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·36 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · ·37 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•38 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·39 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·40 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•41 •· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·42 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·43 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·44 · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·45 · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·46 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·47 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·48 · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·49 · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · ·50 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · · · · · ·51 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · ·52 · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · ·53 · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · ·54 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · · · · · ·55 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · ·56 · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · ·57 · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · ·58 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · · · · · ·59 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · ·60 · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · · · · · ·61 · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · ·62 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · · · · · ·63 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · ·64 · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · · · · · ·65 · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · ·66 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · · · · · ·67 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · ·68 · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · · · · · ·69 · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · ·70 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · · · · · ·71 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · ·72 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · · · · · ·73 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · ·74 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•· · · ·75 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · ·76 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · ·77 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·•78 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••·•79 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•·80 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••Abbildung 5.1: STEAM3 Matrix, Original171


5.1. DICHTE DIAGONALBLÖCKE12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879801 •·•·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·2 •••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·3 •••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·4 · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·5 · ·•·•·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·6 · · · ·••••· · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·7 · · · ·•••· · ·•••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·8 •·•·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·9 · · · ·•· ·••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·10 · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·11 · · · · ·••· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·12 · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·13 · · · · · ·•· · · · ·•·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·14 · · · · · · · · · · · ·••••· · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·15 · · · · · · · · · · · ·•••· · ·•••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·16 · · · · ·••· · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·17 · · · · · · · · · · · ·•· ·••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·18 · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·19 · · · · · · · · · · · · ·••· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·20 · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·21 · · · · · · · · · · · · · ·•· · · · ·•·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·22 · · · · · · · · · · · · · · · · · · · ·••••· · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·23 · · · · · · · · · · · · · · · · · · · ·•••· · ·•••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·24 · · · · · · · · · · · · ·••· · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·25 · · · · · · · · · · · · · · · · · · · ·•· ·••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·26 · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·27 · · · · · · · · · · · · · · · · · · · · ·••· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·28 · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·29 · · · · · · · · · · · · · · · · · · · · · ·•· · · · ·•·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·30 · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·31 · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•••· · ·•••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·32 · · · · · · · · · · · · · · · · · · · · ·••· · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·33 · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·34 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·35 · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·36 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·37 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · ·•·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·38 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·39 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•••· · ·•••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·40 · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·41 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·42 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·43 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·44 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·45 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · ·•·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·46 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · ·•· ·•· · · · · · · · · · · · · · · · · · · · · · · ·47 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•••· · ·•••· · · · · · · · · · · · · · · · · · · · · · · · · · ·48 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·49 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·50 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·51 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · · ·52 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · · · · · · · ·53 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · ·•·••••· · · · · · · · · · · · · · · · · · · · · ·54 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · ·•· ·•· · · · · · · · · · · · · · · ·55 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•••· · ·•••· · · · · · · · · · · · · · · · · · ·56 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · · · ·••••· · · · · · · · · · · · · · · · · · · · · · · ·57 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· · · · · · · · · · · · · · · · · · · · · · ·58 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · · · ·59 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · ·•· · · · · · · · · · · · · · · · · · · · ·60 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · · · · · · · ·61 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · ·•·••••· · · · · · · · · · · · · ·62 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · ·•· ·•· · · · · · · ·63 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•••· · ·•••· · · · · · · · · · ·64 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · · · ·••••· · · · · · · · · · · · · · · ·65 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· · · · · · · · · · · · · · ·66 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · · · ·67 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · ·•· · · · · · · · · · · · ·68 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · · · · · · · ·69 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · ·•·••••· · · · · ·70 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••••· · · ·••· ·71 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•••· · ·•••· · ·72 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · · · ·••••· · · · · · · ·73 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· ·••· · · · · · ·74 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · · ·75 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · ·•· · · · ·76 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · ·77 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•· · · · ·••••78 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·••· · · · ·••· ·79 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•••·80 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·•Abbildung 5.2: PABLO-permutierte STEAM3 Matrix (α = 1.0, β = 0.5)172


5.1. DICHTE DIAGONALBLÖCKE3438777867 306629697270333673763774408027266568323539796362642861253171752221 242359586057175547731820565415111953141316 505249912484546586444141251104342Abbildung 5.3: Digraph der STEAM3 Matrix, PABLO-Nummerierung der Knoten173


Abschnitt 5.2Dichte Diagonalblöcke <strong>und</strong> große EinträgeModifikation von PABLO: Berücksichtige nur solche Einträge (Kanten), diegroß genug sind 3 . Neues Verfahren heißt TPABLO (T: threshold). Als <strong>Graphen</strong>problembeschrieben hat man jetzt Kantengewichte w(e).5.2.1 DefinitionZu A ∈ R n×n gehört der kantengewichtete Digraph G(A) = (V, E, w) mitV, E wi üblich <strong>und</strong>w((i, j)) = |a ij |.Analog für den ungerichteten <strong>Graphen</strong> bei symmetrischen <strong>Matrizen</strong>.5.2.2 DefinitionSei G(A) = (V, E, w) der kantengewichtete Graph, P ⊆ V , j ∈ V . γ sei festvorgegebender Parameter. Dann erfüllt j die TPABLO1-Bedingung, falls gilt(5.2.1)w((i, j)) = |a ij | > γ oder w((i, j)) = |a ji | > γ für mindestens ein i ∈ P .Der Knoten j erfüllt die TPABLO2-Bedingung, falls gilt(5.2.2)w((i, j)) = |a ij | > γ <strong>und</strong> |w((i, j)) = a ji | > γ für alle i ∈ P , i adjazent zu j.Wir werden beide Bedingungen als Spezialfall einer allgemeineren Bedingungerleben.5.2.3 DefinitionZu A = (a ij ) ist A >γ definiert alsA >γ = (a >γij ) mit a>γ ij :=Entsprechend für gewichtete <strong>Graphen</strong>:{a ij falls |a ij | > γ,0 sonst.3 H. Choi, D. B. Szyld: Application of Threshold Preconditioning of Sparse Matricesto Markov Chains, Proceedings of the IEEE International Computer Performance andDependability Symposium IPDS’96, IEEE Computer Society Press, Los Alamitos, CA,158-165 (1996)


5.2. DICHTE DIAGONALBLÖCKE UND GROSSE EINTRÄGE5.2.4 DefinitionG = (V, E, w) sei ein gewichteter Graph <strong>und</strong> γ ∈ R. Dann ist G| >γTeilgraphderG| >γ := (V, E| >γ , w) mit E| >γ := {(i, j) ∈ E | w ((i, j)) > γ} .5.2.5 LemmaSei A ∈ R n×n <strong>und</strong> G(A) = (V, E, w) mit w((i, j)) = |a ij |. Dann istG(A >γ ) = G| >γ .Die folgende Idee kommt aus der Diplomarbeit David Fritzsche (2004).5.2.6 DefinitionSei A ∈ R n×n , G(A) der Graph <strong>und</strong> γ ∈ R. Dann istdeg | >γ (p) im <strong>Graphen</strong> G(A) := deg(p) im <strong>Graphen</strong> G(A >γ )Entsprechend ist deg | >γPerklärt.5.2.7 DefinitionG(A) = (V, E) sei der Graph von A ∈ R n×n , P ⊂ V , p ∈ V \ P and γ, ζ ∈ R.Die TPABLOx-Bedingung lautet(5.2.3) deg | >γP (p) ≥ ⌈deg | P (p) · ζ⌉ .γ ist der Schwellenparameter <strong>und</strong> ζ der Anteilsparameter.5.2.8 LemmaSei G = (V, E) der Graph von A, P ⊂ V . Für alle j ∈ V \ P <strong>und</strong> γ ≥ 0 giltdeg >γP(j) = Anzahl der i ∈ P mit |a ij| > γ oder |a ji | > γMit der TPABLOx-Bedingung (5.2.3) bekommt man die TPABLO1-Bedingung(5.2.1) <strong>und</strong> die TPABLO2-Bedingung (5.2.2) unter einen Hut.5.2.9 Lemma(i) Für 0 < ζ < 1/(2n − 1) ist (5.2.3) äquivalent zu (5.2.1).(ii) Für ζ = 1 ist (5.2.3) äquivalent zu (5.2.2).Zugehöriger Algorithmus: Modifikation von PABLO, wobei (5.2.3) zusätzlichgefordert wird, s. Zeile 9.175


5.2. DICHTE DIAGONALBLÖCKE UND GROSSE EINTRÄGE5.2.10 Algorithmus(XPABLO für <strong>Graphen</strong> oder Digraphen (V, E))1: Wähle α, β, γ <strong>und</strong> ζ für (5.1.1), (5.1.2) <strong>und</strong> (5.2.3)2: C = V3: setze Q := ∅ <strong>und</strong> P := ∅4: while C ≠ ∅ do5: entnehme Knoten v aus C, füge ihn in P ein6: verschiebe alle zu v adjazenten Knoten aus C nach Q7: while Q ≠ ∅ do8: entferne einen Knoten w aus Q9: if w erfüllt ( (5.1.1) oder (5.1.2)) <strong>und</strong> (5.2.3) then10: füge w in P ein11: verschiebe alle zu w adjazenten Knoten aus C nach Q12: else13: füge w in C ein14: end if15: end while16: entferne alle Knoten von P aus G, d.h. setze G := G| C17: gebe P als nächsten Block aus18: set P := ∅19: end whileBemerkungen:a) Wie bei PABLO sollte man zu kleine <strong>und</strong> zu große Blöcke verhindern.b) Die TPABLO1-Bedingung versucht, außerhalb der Diagonalen alle Elemente≤ γ zu halten.c) Die TPABLO2-Bedingung versucht, in jedem Diagonbalblock alle (Nichtnull-)Einträge größer γ zu halten.d) Es ist wichtig, A zunächst zu skalieren, denn γ ist eine absolute Größe.Mögliches Vorgehen: Bestimme Diagonalmatrix D 1 so, dass das betragsgrößteElement jeder Zeile den Betrag 1 hat: A → D 1 A. Bestimmedann entsprechende Diagonalmatrix für die Spalten, D 1 A → D 1 AD 2 .Bestimme jetzt noch eine (Flaschenhals-) Transversale A → P D 2 AD 1 .Ausblick: XPABLO bestimmt eine Blockdiagonalmatrix für ein Block-Jacobi-Verfahren. Verbesserung von Block-Jacobi, bei fast gleichem Aufwand: Nehmeden Quotientengraphen G von A + A T bzgl. der Blockeinteilung. Bewerte176


5.2. DICHTE DIAGONALBLÖCKE UND GROSSE EINTRÄGEalle Kanten in G (z.B. durch eine Norm des entsprechenden Matrix-Blocks).Finde maximal spannenden Baum in G (Algorithmus von Kruskal). NehmeZerlegung A = M −N mit M Matrix zum vom Baum induzierten Teilgraphen<strong>und</strong> Satz 3.5.2. (Diplomarbeit Fritzsche).177


Abschnitt 5.3Iterative VerbesserungWir schildern zum Abschluss eine neue Idee zur Permutation bei unsymmetrischenSystemen 4 .Ausgangspunkt: Trennung von symbolischer <strong>und</strong> numerischer Phase für unsymmetrischeSysteme.Ansatzpunkt: Treffe besondere Vorkehrungen, um Stabilität während der numerischenPhase zu verbessern.Gerüst des Algorithmus1: skaliere A → D 2 AD 12: bestimme (Flaschenhals-) Transversale A → T A3: bestimme für den <strong>Graphen</strong> von A + A T oder A T A eine geeignete PermutationP , A → P AP T4: faktorisere A = LU mit Gauß-Elimination <strong>und</strong> Kontrolle über Pivot-Element:5: if |a ii | < √ ɛ‖A‖ then6: setze a ii = √ ɛ‖A‖7: end if8: löse Ax = b mittels iterativer Verbesserung:9: setze η ′ = 1, x = 010: repeat11: r = b − Ax12: löse A · dx = r {approximativ über berechnete LU-Zerlegung}{komponentenweiser Rückwärtsfehler}14: x = x + dx, η ′ = η15: until η < ɛ oder η ≥ η ′Hier ist ɛ die Maschinengenauigkeit. Es ist A = LU − R mit (unbekanntem)R wegen Zeile 6. Deshalb wird dann mit dieser approximativen Zerlegungiteriert. Wichtig ist, dass man einen guten Test, nämlich bzgl. des komponentenweisenRückwärtsfehlers verwendet. Dies diskutieren wir hier noch kurz.Klassisches Resultat (normweiser Rückwärtsfehler, s. Numerik 1).13: η = max i|r i |(|A|·|x|+|b|) i4 X. Li, J. Demmel: Making Sparse Gaussian Elimination Scalable by Static Pivoting,Proceedings Supercomputing 98


5.3. ITERATIVE VERBESSERUNG5.3.1 SatzSei ˆx eine Näherungslösung für Ax = b, r = b − Ax <strong>und</strong> ‖ · ‖ eine Norm (<strong>und</strong>zugehörige Matrixnorm). Dann gilt: x ist exakte Lösung eines LGS Âx = ˆbmit ‖A − Â‖ < ρ‖A‖, ‖b − ˆb‖ ≤ ρ‖b‖ mitρ =‖r‖‖A‖‖ˆx‖ + ‖b‖ .Normweise relative Rückwärtsfehler sind bei <strong>dünn</strong> <strong>besetzte</strong>n <strong>Matrizen</strong> nichtso aussagekräftig: Man möchte den Zusammenhang mit der Lösung zu einemgestörten System mit derselben Struktur.5.3.2 DefinitionSei ˆx eine Näherungslösung für Ax = b. Der komponentweise relative Rückwärtsfehlerω ist definiert alsω = min {ɛ | (A + ∆A)ˆx = b + ∆b, |∆A| ≤ ɛ|A| |∆b| ≤ ɛ|b|} .5.3.3 Satz (Oettli-Prager)Sei ˆx eine Näherungslösung für Ax = b, r = b − Aˆx. Dann gilt:ω = maxi|r i |(|A|ˆx + |b|) i.179

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!