Skript zur Vorlesung Graphenalgorithmen Version 1.0.12 Juniorprofessor Dr. rer. nat. Robert Elsässer, überarbeitet von Dr. rer. nat. Henning Meyerhenke Universität Paderborn Fakultät für Elektrotechnik, Informatik und Mathematik Institut für Informatik D-33102 Paderborn Skript (Version 1.0) verfasst von Florentin Neumann Inhaltsverzeichnis Vorwort 3 1 Einleitung und Motivation 4 2 Kürzeste Pfade, All Pairs Shortest Paths (APSP) 6 2.1 Der Floyd-Warshall-Algorithmus . . . . . . . . . . . . . . . . . . 8 2.2 Matrix-Multiplikation . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.1 Voraussetzungen 9 2.2.2 Distanz- und Wegeberechnungen mit dem Algorithmus . . . . . . . . . . . . . . . . . . . . . . von Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Matchings in bipartiten Graphen 11 24 3.1 Grundlagen und Strukturaussagen . . . . . . . . . . . . . . . . . 24 3.2 Berechnung von gröÿtmöglichen Matchings . . . . . . . . . . . . 29 3.3 Matchings mit maximalem Gewicht . . . . . . . . . . . . . . . . 31 3.3.1 31 Korrektheit . . . . . . . . . . . . . . . . . . . . . . . . . 4 Matchings in allgemeinen Graphen 35 4.1 Der Algorithmus von Edmonds . . . . . . . . . . . . . . . . . . 4.2 Approximationsalgorithmen für MWM . . . . . . . . . . . . . . 35 4.3 Die Theoreme von Tutte und Petersen . . . . . . . . . . . . . . 37 5 Netzwerkalgorithmen 5.1 Der Hypercube 5.2 5.3 41 . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Gitter und Torus . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Lastbalancierung . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6 Bisektionsweite und Partitionierung 6.1 6.2 35 52 Untere Schranken für die Bisektionsweite . . . . . . . . . . . . . 53 6.1.1 Verfahren von Leighton . . . . . . . . . . . . . . . . . . . 53 6.1.2 Spektrale untere Schranke 56 . . . . . . . . . . . . . . . . . Obere Schranken für die Bisektionsweite 1 . . . . . . . . . . . . . 57 6.3 Maximale Schnitte in Graphen . . . . . . . . . . . . . . . . . . . Literaturverzeichnis 69 70 2 Vorwort Dieses Skript basiert auf der Vorlesung Graphenalgorithmen, die ich im WS 2009/10 an der Universität Paderborn für Master-Studierende gelesen habe. Die ursprüngliche Version wurde ein Jahr zuvor von Florentin Neumann anhand der Vorlesung von Robert Elsässer erstellt. Das Kapitel über Bisektionsweite und Partitionierung stammt überwiegend aus dem Skript zur Vorlesung Algorithmen für synchrone Rechnernetze von Burkhard Monien. Inhaltlich habe ich die Vorlesung gegenüber dem Vorjahr leicht verändert, was auch zu Löschungen und Hinzufügungen im Skript geführt hat. Leider konnte ich noch nicht alle Lücken füllen, habe aber an solchen Stellen weitestgehend Literaturverweise eingefügt. Des weiteren sind sicherlich noch nicht alle enthaltenen Fehler korrigiert, ich bin daher im Namen aller am Skript Beteiligten um entsprechende Hinweise dankbar. Bitte bedenken Sie bei der Prüfungsvorbereitung, dass die gesamte Veranstaltung geprüft wird, dazu gehören zum Beispiel auch die Übungszettel. Ein Studium des Skripts kann den Besuch der Vorlesung und der Übung nicht ersetzen! Paderborn, 8. März 2010 Henning Meyerhenke 3 Kapitel 1 Einleitung und Motivation In dieser Vorlesung werden Sie eine Reihe von Algorithmen kennenlernen, die auf Graphen operieren. Ein Graph modelliert allgemein gesprochen eine Menge von Entitäten (dargestellt als Knoten) und die Beziehungen der Entitäten (dargestellt durch Kanten). Denition 1. Ein Algorithmus ist eine eindeutige Beschreibung eines Verfah- rens zur Lösung einer bestimmten Klasse von Problemen. Genauer gesagt ist ein Algorithmus eine Menge von Regeln für ein Verfahren, um aus gewissen Eingabegröÿen bestimmte Ausgabegröÿen herzuleiten. Dabei muss dass Verfahren in einem endlichen Text beschreibbar sein. Jeder Schritt dieses Verfahrens muss auch tatsächlich ausführbar sein und darüber hinaus muss der Ablauf des Verfahrens zu jedem Zeitpunkt eindeutig deniert sein. Hier einige typische Beispielprobleme, in denen Graphenalgorithmen eine wichtige Rolle spielen: • Wie ndet ein Navigationssystem gute Verbindungen zwischen zwei Orten? • Wie werden im Internet Informationen geroutet? • Wie berechnet ein Unternehmen eine möglichst gute Aufteilung seiner Ressourcen, um seinen Gewinn zu maximieren? • Wie werden etwa in Google Informationen schnell gefunden? Um über die Qualität eines Algorithmus urteilen zu können, bedarf es bestimmter Kriterien, um entsprechende Urteile treen zu können. (i) Algorithmen müssen korrekt sein. D.h. zu jedem Algorithmus gehört ein Korrektheitsbeweis, der in allgemeiner Form die Korrektheit der Berechnung der Ausgabegröÿe zu einer gegebenen Eingabegröÿe zeigt. (ii) Algorithmen sollen zeit- 4 und speicherezient sein. Hierzu bedarf es Analysemethoden für den Zeit- und Speicherbedarf eines Algorithmus. Diese Analyse basiert in der klassischen Algorithmik nicht auf empirischen Untersuchungen, sondern auf mathematischen Analysen. Wir nutzen hierfür Pseudocode und Basisoperationen. Zum Entwurf eines Algorithmus gehören grundsätzlich drei Dinge: 1. Die Beschreibung des Algorithmus selbst in Pseudocode. 2. Ein vollständiger Korrektheitsbeweis. 3. Die Analyse des Zeit- und Speicherbedarfs des Algorithmus. 5 Kapitel 2 Kürzeste Pfade, All Pairs Shortest Paths (APSP) Zu Beginn dieses Kapitels betrachten wir das Problem kürzester Wege in gerichteten Graphen mit Kantengewichten. In einem unidirektionalen, zusammenhängenden Graphen G = (V, E) mit V = {1, . . . , n} und |E| = m als u, v ∈ V die Eingabegröÿen soll als Ausgabegröÿe für jedes Paar von Knoten Distanz von Graphen G u nach v sowie ein kürzester Weg zwischen den beiden Knoten im berechnet werden. Denition 2. Sei ein gerichteter und gewichteter Graph der Gewichtsfunktion hv0 , v1 , . . . , vk i w : E → R G = (V, E) gegeben. Das Gewicht eines Weges mit P = ist die Summe der Gewichte seiner Kanten: w(P ) = k X w(vi−1 , vi ). i=1 Denition 3. Das Gewicht eines kürzesten Weges gewichteten Graphen als: δ(u, v) = G = (V, E) in einem gerichteten und zwischen den Knoten min{w(P ) : v ist von ∞, falls v u Ein kürzester Weg zwischen P von u, v ∈ V u über P u, v ∈ V ist deniert erreichbar}, nicht erreichbar ist. ist dann ein Weg 6 P mit w(P ) = δ(u, v). Abbildung 2.1: Unidirektionaler, gewichteter Graph Die Eingabe wird als Gewichtsmatrix phen repräsentiert. Die Matrix-Einträge wij = 0 Gewicht der ger. Kante W = (wij ) wij (i, j) ∞ wij , dargestellt, die den Gra- sind wie folgt deniert: , wenn i=j , wenn i 6= j und (i, j) ∈ E , wenn i 6= j und (i, j) ∈ /E Aus dieser Denition folgt für den Graphen wichtsmatrix G = (V, E) G aus Abbildung 2.1 die Ge- abgebildet in Tabelle 2.1: a W zum Graphen G b c d e f a 0 2 ∞ 5 ∞ ∞ b ∞ 0 4 ∞ ∞ ∞ c ∞ ∞ 0 1 ∞ 7 d ∞ -4 6 0 5 ∞ e ∞ ∞ 8 ∞ 0 -1 f ∞ ∞ ∞ ∞ ∞ 0 Tabelle 2.1: Gewichtsmatrix 7 aus Abbildung 2.1 2.1 Der Floyd-Warshall-Algorithmus Algorithm 1 Floyd-Warshall - APSP 1: procedure Floyd-Warshall(G = (V, E)) 2: D(0) ← W 3: 5: for k ← 1 to n do for i ← 1 to n do for j ← 1 to n do 6: dij ← min(dij 4: 7: 8: 9: 10: 11: (k) (k−1) (k−1) , dik (k−1) + dkj ) end for end for end for return Dn end procedure Der Floyd-Warshall-Algorithmus basiert auf der Idee, das Problem schritt- weise zu vergröÿern. In Iteration Knoten aus der Menge {1, . . . , k} k werden alle Wege berücksichtigt, die über verlaufen (direkte Kanten des Graphen ein- geschlossen). Nach Ende der äuÿersten Schleife hat k den Wert n überschritten, so dass alle möglichen Wege berücksichtigt worden sind. Lemma 4. Sei G ein Graph ohne negative Zyklen und sei reichbar. Dann gibt es einen kürzesten i − j -Weg, j von i aus er- der keinen Knoten doppelt benutzt. Satz 5. Sei G = (V, E) ein Graph mit nicht-negativen Zyklen. Dann berechnet der Algorithmus von Floyd-Warshall die Entfernung zwischen jedem Knotenpaar in O(|V |3 ) Schritten. Die Beweise von Lemma 4 und Satz 5 werdem dem Leser anhand der obigen Erläuterungen als Übung empfohlen. Bemerkung 6. Das als Algorithmus 1 angegebene Verfahren löst eigentlich nur das Problem All-Pairs-Distances (APD), d. h. es werden nur die paarweisen Distanzen und nicht auch die zugehörigen kürzesten Wege berechnet. Eine entsprechende Erweiterung des Algorithmus für APSP wird dem Leser als Übungsaufgabe empfohlen. 8 Abbildung 2.2: Ungerichteter Graph matrix 2.2 G = (V, E) und die zugehörige Adjazenz- A Matrix-Multiplikation 2.2.1 Voraussetzungen Wir betrachten ungerichtete Graphen V = {1, ..., n}. trix A. Ein Graph G = (V, E) G = (V, E) mit der Knotenmenge ist gegeben durch seine Adjazenzma- Betrachte hierzu den Graphen aus Abbildung 2.2 und die zugehörige Adjazenzmatrix. Denition 7. d.h. wij Es sei G = (V, E) ein Graph, ist das Gewicht der Kante von i bzgl. des Gewichts kürzesten Weges von Bemerkung 8. G. Es sei G = (V, E) W = (wij ) eine Gewichtsmatrix, (k) nach j . Deniere δij als Gewicht des i nach j mit höchstens ein Graph und W k Kanten. eine Gewichtsmatrix für Dann gilt: (0) δij = 0 ,i = j und ∞ , i 6= j Auÿerdem ist (n−1) δ(i, j) = δij (m) δij (m−1) = min {δik 1≤k≤n + wkj } für m ≥ 1. . Im Folgenden betrachten wir das Problem der Matrixmultiplikation. Es seien D, W ∈ Rn×n (i, j) des Produkts von der j -ten Spalte von quadratische Matrizen. Dann berechnet sich der Eintrag D und W als Skalarprodukt der i-ten Zeile von D und W: (D · W )ij = n X Dik · Wkj (2.1) k=1 Wir wollen uns nun zu Nutzen machen, dass die Berechnungsvorschrift zur Matrixmultiplikation sehr ähnlich zu der rekursiven Formel in Bemerkung 8 9 ist. Denn ersetzt man im rechten Teil der Formel (2.1) Σ gegebene + durch min, gilt für · durch + und das durch D, W ∈ (R ∪ {∞})n×n : (D ∗ W )ij = min {Dik + Wkj } 1≤k≤n Diese Beobachtung setzen wir nun ein, um mit Hilfe eines modizierten Algorithmus zur Matrixmultiplikation die Distanzen aller paarweise kürzesten Wege zu berechnen. Die wichtige Idee dabei ist, (n−1) D(n−1) = (δij ) durch fortgesetzte Matrixmultiplikation zu berechnen: D(1) = W, D(2) = W 2 = W ∗ W, D(4) = W 4 = W 2 ∗ W 2 , ... D(2dlog n−1e) = D2dlog n−1e = D2dlog n−1e−1 ∗ D2dlog n−1e−1 Algorithmus 3 namens mmAPD zeigt nun, wie man durch fortgesetzte Aufrufe an eine Subroutine zur modizierten Matrixmultiplikation die Distanzen der paarweise kürzesten Wege berechnen kann. Momentan liegt die beste bekannte Algorithm 2 MatrixMultiply 1: procedure MatrixMultiply(weight matrix A, B ) 2: for i = 1; i ≤ n; i + + do 3: for j = 1; j ≤ n; j + + do 4: Cij = ∞ 5: for k = 1; k ≤ n; k + + do 6: 7: 8: 9: 10: 11: Cij = min{Cij , Aik + Bkj } end for end for end for return C end procedure Laufzeit eines Algorithmus für Matrixmultiplikation bei re untere Schranke als Ω(n2 ) O(n2.376 ). Eine besse- ist nicht bekannt, so dass hier eine noch nicht geschlossene Lücke zwischen unterer und oberer Laufzeitschranke klat. Die obere Laufzeitschranke kann auf die Multiplikation von Boolschen Matrizen angewandt werden, wie wir in Kürze sehen werden. Bedauerlicherweise folgt aus dieser Beobachtung aber auch eine Laufzeit für das APD Problem, die gröÿer als O(n2 ) ist (jedenfalls solange man über keinen Algorithmus mit quadratischer Zeitkomplexität zur Matrixmultiplikation verfügt). Die Laufzeit des Algorithmus mmAPD ist die Zeit ist, um zwei n × n O(mm(n) · log n), wobei mm(n) Matrizen miteinander zu multiplizieren. Es gibt allerdings einen Nachteil, denn es gibt keine implizite Darstellung der 10 Algorithm 3 mmAPD 1: procedure mmAPD(weight matrix W ) 2: D(1) = W 3: m=1 4: while m < n − 1 do 5: D(2m) = MatrixMultiply(D(m) , D(m) ) 6: m = 2m end while 8: return D(m) 9: end procedure 7: kürzesten Wege, denn dazu wären alle Matrizen O(mm(n) · n) die Laufzeit würde auf 2.2.2 D1 , . . . , D m notwendig und ansteigen. Distanz- und Wegeberechnungen mit dem Algorithmus von Seidel Wir betrachten nun die Probleme Distanz- und Wegeberechnungen in ungerichteten und ungewichteten Graphen. • Problem APD : Gegeben: Ungerichteter, ungewichteter Graph Gesucht: Matrix • D = (δij ), wobei δij G = (V, E). die Distanz von i nach j in G ist. Problem APSP : Gegeben: Ungerichteter, ungewichteter Graph Gesucht: Matrix D = (δij ) G = (V, E). wie bei APD und eine implizite Darstellung der kürzesten Wege. Wir werden für beide Probleme Lösungen erarbeiten und sehen, dass das APD -Problem in Zeit O(mm(n)·log n) für ungewichtete, ungerichtete Graphen lösbar ist und das APSP -Problem in erwarteter Zeit O(mm(n) · log2 n) für dieselbe Graphklasse durch einen randomisierten Algorithmus lösbar ist. Lemma 9. zenzmatrix A. Ist der Länge 2 von Länge 2 G(V, E) Es sei von i i Z = A nach nach j j 2 ein ungerichteter, ungewichteter Graph mit Adja- , so ist gibt. Zij Zij > 0 genau dann, wenn es einen Weg gibt die Anzahl der verschiedenen Wege der an. 11 Proof. ⇒ P = hi, k0 , ji Sei {i, k0 }, {k0 , j} ∈ E , ein Weg Ai,k0 = Ak0 ,j = 1. also i von j nach G. Pn in Zij = Es folgt k=1 Dann ist Ai,k Ak,j ≥ Ai,k0 Ak0 ,j = 1. ⇐ Sei Zij > 0. {i, k0 }, {k0 , j} ∈ E und Um zu zeigen, dass i nach j k0 ∈ {1, ..., n} Dann existiert P = hi, k0 , ji Zij Weg von i mit n X j nach in Dann ist G. die Anzahl der verschiedenen Wege der Länge angibt, betrachten wir die Berechnung von Zij = Ai,k0 Ak0 ,j = 1. X Aik · Akj = k=1 2 von Zij : 1 = |Γ(i) ∩ Γ(j)|. k∈Γ(i)∩Γ(j) Damit können wir durch eine einfache Matrixmultiplikation eine Matrix berechnen, die es erlaubt, schnell einen Graphen Knoten G i j und 0 G Z zu berechnen, in dem zwei δ(i, j) ≤ 2 genau dann miteinander verbunden sind, wenn in ist: 2 Z = A 1, 0 Aij = 0, 0 G = Lemma 10. jazenzmatrix (Aij = 1 Graphen Es sei A. G, G(V, E) A 0 i 6= j und (Aij = 1 oder Zij > 0) sonst der durch 0 A induzierte Graph ein ungerichteter, ungewichteter Graph mit Ad- derart, dass Zij > 0), oder 0 Ist falls und ist D 0 0 Aij = 1 genau dann gilt, wenn A die Distanzmatrix des durch 0 i 6= j und gegebenen so gilt: 0 • a) Dij = 2Dij , • b) Dij = 2Dij − 1, wenn 0 Dij wenn gerade ist und Dij ungerade ist. Proof. • Fall a) ⇒∃ Dij = 2k ist gerade. kürzester Weg P = hi = i0 , i1 , ..., i2k−1 , i2k = ji 0 ⇒ P = hi = i0 , i2 , ..., i2k−2 , i2k = ji ist Weg von i von nach j i nach in j in G. 0 G. 0 ⇒ Dij ≤ k Wäre ≤ 2l Also 0 Dij = l < k , so existierte ein Weg (Widerspruch, da Dij = 2k ). 0 Dij = 2k = 2Dij . 12 Q von Daraus folgt i nach 0 j Dij = k . in G der Länge • Fall b) ⇒∃ Dij = 2k + 1 ungerade. P = hi = i0 , i1 , ..., i2k , i2k+1 = ji kürzester Weg 0 ⇒ P = hi = i0 , i2 , ..., i2k , i2k+1 = ji ist Weg von i i von j nach nach j in G. 0 G. in 0 ⇒ Dij ≤ k + 1 0 Dij = l ≤ k , Wäre ≤ 2k so existierte ein Weg (Widerspruch, da Dij = 2k + 1). Q von i j nach Daraus folgt in G der Länge 0 Dij = k + 1. 0 Dij = 2k + 1 = 2Dij − 1. Also Die Idee für einen Algorithmus beläuft sich auf drei hauptsächliche Schritte: 1. Berechne die Distanzen D 0 für 0 G (rekursiv). 2. Berechne die Parität der Distanzen in G. 3. Dann liefert Lemma 10 eine Berechnungsvorschrift für die Distanzen D G. in Lemma 11. Graphen Betrachte ein beliebiges Paar disjunkter Knoten i, j ∈ V des G. • a) Für alle Nachbarn • b) Es existiert ein Nachbar Proof. Sei k ∈ Γ(i) gilt Dij − 1 ≤ Dkj ≤ Dij + 1. k ∈ Γ(i) P = hi = i1 , i2 , ..., ip+1 = ji mit Dkj = Dij − 1. kürzester Weg von i nach j in G, also Dij = p. • a) Sei 1. k ∈ Γ(i), d. h. {i, k} ∈ E . k = i2 ⇒ P1 = hk = i2 , ..., ip+1 = ji ist Weg von k j nach ⇒ Dkj ≤ p + 1 2. k 6= i2 ⇒ P2 = hk = i0 , i1 , ..., ip+1 = ji ist Weg von k nach j ⇒ Dkj ≤ p + 1 In jedem Fall: 3. Annahme: Dkj ≤ p + 1 = Dij + 1 Dkj = q < Dij − 1. Dann existiert P3 = hk = k1 , k2 , ..., kq+1 = ji P4 = hi = k0 , k1 , k2 , ..., kq+1 = ji von • i nach j 13 k ist ein Weg der Länge (Widerspruch zur Denition von b) Folgt aus a), 1.) und 3.). von Dij ). nach j ⇒ q + 1 < Dij Lemma 12. i, j ∈ V Betrachte ein beliebiges Paar disjunkter Knoten des G. Graphen a) Ist Dij gerade, so ist • b) Ist Dij ungerade, so ist k ∈ Γ(i) dem existiert ein 0 0 Dkj ≥ Dij • k ∈ Γ(i). für alle Nachbarn 0 0 Dkj ≤ Dij für alle Nachbarn 0 k ∈ Γ(i). Auÿer- 0 Dkj < Dij . derart, dass Proof. • Fall a) Dij = 2l ⇒ ∀ |{z} k ∈ Γ(i): Dkj ≥ 2l − 1 Nachbarn Lemma 11 Dann ist ist gerade. 0 Dij = l nach Lemma 10 a). Weiter folgt aus Lemma 10 a,b), dass 0 Dkj • ist ganzzahlig 0 ⇒ ∀ |{z} 0 Dij = l 0 ist ungerade. k ∈ Γ(i): Dkj ≤ 2l Nachbarn Lemma 11 Dann ist nach Lemma 10 b). Weiter folgt aus Lemma 10 a,b), dass 0 Dkj ist ganzzahlig 0 1 2 0 k ∈ Γ(i) 0 0 Dkj = l − 1 < l = Dij Lemma 13. 0 Dkj ≤ (Dkj + 1)/2 ≤ l + ⇒ Dkj ≤ l = Dij Weiter gilt, dass ein gilt 1 2 ⇒ Dkj ≥ l = Dij Dij = 2l − 1 Fall b) 0 Dkj ≥ Dkj /2 ≥ l − mit Dkj = Dij − 1 = 2l − 2 existiert, also nach Lemma 10 a). Betrachte ein beliebiges Paar disjunkter Knoten Graphen G. • a) Dij ist gerade genau dann, wenn • b) Dij ist ungerade genau dann, wenn P 0 k∈Γ(i) P i, j ∈ V des 0 Dkj ≥ Dij · deg (i). 0 k∈Γ(i) 0 Dkj < Dij · deg (i). Proof. • Fall a) ⇒ |{z} Dij ist P gerade 0 k∈Γ(i) Dkj ≥ P 0 k∈Γ(i) 0 Dij = deg(i)Dij . Lemma 12 a) • Fall b) ⇒ |{z} Dij ist P ungerade k∈Γ(i) 0 Dkj ≤ P 0 k∈Γ(i) 0 Dij − 1 = deg(i)Dij − 1. Lemma 12 b) Die jeweilige Rückrichtung ergibt sich durch die Betrachtung der beiden komplementären Fälle. 14 Eine alternative Herleitung, wie man die Parität der Dij bestimmen kann, ist in den zusätzlichen Materialien zur Vorlesung enthalten. Dij Wir betrachten nun den Algorithmus APD, der die Distanzen Knotenpaare (i, j) G für einen gegebenen ungerichteten Graphen A Der Graph wird durch seine Adjazenzmatrix für alle berechnet. repräsentiert. Algorithm 4 APD 1: procedure APD(Adjazenzmatrix A) 2: Z = A2 3: berechne 0 A 0 4: Aij = 1 mit gdw. 0 . Aij = 1 ⇔ i 6= j und 7: if Aij = 1 ∀i 6= j then 0 return D = 2A − A end if 8: D = APD(A ) (Aij = 1 oder 6: 0 9: return D . j mit Rekursionsabbruch . Rekursion P 0 . Sij = k∈Γ(i) Dkj 0 2D0 , ij Dij = 2D0 − 1, ij end procedure Satz 14. 0 falls Sij ≥ Dij Zii falls Sij < Dij Zii . Zii = deg(i) 0 Der Algorithmus APD berechnet die Distanzmatrix Knoten Graphen G O(mm(n) · log n) in Zeit Proof. Sei T (n, δ) δ O(n ). S δ = 1, Dann hat durch n vollständig. Ist 2 (n) = Ω(n ) mm O(mm(n) log n). 2 G so ist δ < n, Wegen Laufzeit G. die Zeit, die APD auf Graphen mit benötigt. Ist 2 der Durchmesser von Wegen Dij < n D eines n- mit Hilfe der ganzzahligen Ma- trixmultiplikation, wobei die Einträge der Matrix nicht gröÿer als von nach Zij > 0) 0 S =A·D 10: Sei i 0 5: 11: es ex. Weg der Länge 1 od. 2 v. 0 G n Durchmesser O(n2 ) sind. 0 δ = dδ/2e. Knoten und Durchmesser δ = 2, so ist T (n, δ) = und Rekursionstiefe und somit 0 Dij < n log n δ (n) + mm folgt die sind die Einträge nach oben beschränkt. Das Zeugenproblem für Boolsche Matrizen Wir erweitern den Algorithmus APD nun so, dass nicht nur die Distanzen sondern auch für jedes Knotenpaar (i, j) Dij , ein kürzester Weg berechnet wird. Dabei soll die Laufzeit des neuen Algorithmus subkubisch sein. Das Problem ist dabei, dass es Graphen tenpaare Distanz Ω(n) G = (V, E) von der Gestalt gibt, dass Ω(n2 ) Kno- haben. Beispiel 15. G = (V, E) ist eine Linie: 15 V = {1, ..., n}, E = {(i, i + 1)|1 ≤ i < n}. Setze n 2 δ= = Ω(n), n−δ X k= k=1 dann haben n2 (n − δ + 1)(n − δ) > = Ω(n2 ) 2 8 Knotenpaare mindestens den Abstand δ kürzesten Wege würde daher Platzbedarf zueinander. Explizites Speichern der Ω(n3 ), Ω(n3 ), also auch Zeitaufwand bedeuten. Daher werden die kürzesten Wege nur implizit gespeichert, indem zu jedem Knotenpaar nach j (i, j) Sij der Nachfolger von i auf einem kürzesten Weg gespeichert wird. S = (Sij ) O(n2 ) hat Einträge und ein kürzester Weg von i nach j kann in Zeit proportional zu seiner Länge bestimmt werden: SPN( S , i, j ) x0 = i; k = 0; repeat xk+1 = Sxk ,j ; k + +; until (xk = j); return hx0 , ...xk i Notation 16. • Wir bezeichnen im Folgenden: 1 die boolsche Matrixmultiplikation mit ∧ als Multiplikation und ∨ als Addition durch ∗ und • die ganzzahlige Matrixmultiplikation mit ·. Denition 17. {0, 1} n×n Es seien A, B ∈ {0, 1}n×n das boolsche Produkt von k ∈ {1, ..., n} derart, dass A boolsche Matrizen, B. und Ein Zeuge für P = A∗B ∈ Pij ist ein Index Aik = 1 = Bkj . Bemerkung 18. a) Pij = 1 ⇔ es gibt einen Zeugen b) Ist C = A · B, c) Ist A so ist Cij für Pij = 1 Cij Pij . die Anzahl der Zeugen für Adjazenzmatrix eines Graphen existiert. d) Für so ist k Pij . G(V, E), P = A ∗ A und C = AA, genau dann, wenn ein Weg der Länge 2 zwischen i und j ist die Anzahl dieser Wege (vgl. Lemma 9). P = A∗A ist ein Zeuge Weg der Länge 2 von i nach k für Pij = 1 Zwischenknoten auf einem j. 1 Da diese Bezeichnung auf George Boole (1815-1864) zurückgeht, ndet man auch häug die Schreibweise boolesche Matrixmultiplikation. 16 Pij e) Für jedes bzgl. P =A∗B kann es bis zu n Zeugen geben. Zeugen sind interessant, wenn man den APD -Algorithmus so erweitern will, dass er kürzeste Wege berechnet. Da Zeugen Zwischenknoten auf Wegen der 2 Länge darstellen, helfen sie bei der Konstruktion einer Nachfolgermatrix. Wie genau dies funktioniert, wird nachfolgend erläutert. Denition 19. A, B ∈ {0, 1}n×n Es seien boolsche Matrizen, P = A∗B ∈ {0, 1}n×n . Eine Zeugenmatrix ( Bpwm = Boolean Product Witness Matrix) für P ist eine Matrix W ∈ {0, ..., n}n×n mit 0, wenn P = 0 ij Wij = k, k ist Zeuge für P = 1 ij Problem Bpwm: • gegeben: • gesucht: boolsche Matrizen A und eine Zeugenmatrix W für B. P = A ∗ B. Ein trivialer Algorithmus für Bpwm, der für alle {1, ..., n} testet, hat Zeitaufwand O(n3 ). (i, j) ∈ {1, ..., n}2 alle k ∈ Da wir einen niedrigeren Aufwand anstreben, vereinfachen wir zunächst das Problem Bpwm: Problem UniqueBpwm: • gegeben: boolsche Matrizen A und B , so dass jeder Eintrag in P = A∗B einen eindeutigen Zeugen hat. • gesucht: Lemma 20. und W a) die Zeugenmatrix Es seien gegeben durch Wij W für A, B ∈ {0, 1}n×n Âik = kAik ist Zeuge für Pij , b) Hat jeder Eintrag von und wenn Pij Pij P = A ∗ B. boolsche Matrizen und die Matrizen W = ÂB .  Dann gilt: einen eindeutigen Zeugen hat. einen eindeutigen Zeugen, so ist W die Lösung von UniqueBpwm. Proof. Es ist Wij = n X k=1 Âik Bkj = n X k · Aik Bkj k=1 k, = 0, > k, falls genau ein Aik Bkj = 1 falls Aik Bkj = 0 ∀k falls Aik Bkj = 1 17 und Ail Blj = 1 für ein l 6= k. Beispiel 21. 1 1 0 1 0 0 1 1 0 A = 1 0 0 , B = 1 1 0 , P = 1 0 0 . 0 0 0 0 0 0 0 0 0 1 2 0  = 1 0 0 0 0 0 und Die grünen und blauen Einträge von W 3 2 0 W = 1 0 0 . 0 0 0 sind schon korrekte Einträge für eine Zeugenmatrix, der rote jedoch nicht. Folgerung 22. Das Problem UniqueBpwm kann durch eine ganzzahlige Ma- trixmultiplikation, also in Zeit O(mm(n)), gelöst werden. Problematisch ist nun, dass wir eine Zeugenmatrix einer Adjazenzmatrix W für P = A∗A mit A berechnen wollen. Dabei ist natürlich nicht garantiert, dass die Zeugen immer eindeutig sind. Die Idee zur Lösung des Problems lässt sich so beschreiben: • Randomisierung liefert den gleichen Eekt wie eindeutige Zeugen für genügend viele Einträge Pij , denn bei einer zufälligen Auswahl von Kandi- datenmengen trit man wahrscheinlich auf eine Menge mit genau einem Zeugen. • Die wenigen verbleibenden Einträge werden dann mit dem trivialen Algorithmus berechnet. Nicht eindeutige Zeugen Wir betrachten boolsche Matrizen einen festen Eintrag (OE w ≥ 2, Pij von P. Es sei Ziel ist es, eine Menge k für Lemma 23. enthalte r w = Cij und die Anzahl der Zeugen für Pij denn nach den Vorbetrachtungen ist es einfach, einen eindeutigen Zeugen zu nden). Auÿerdem sei Zeugen A, B ∈ {0, 1}n×n , P = A ∗ B , C = AB Pij r∈N mit n 2 ≤ wr ≤ n. R ⊂ {1, ..., n} mit |R| zu nden, die den eindeutigen enthält. Es sei n ∈ N, w ∈ {1, ..., n}, r ∈ N n Bälle, von denen w weiÿ und n−w n mit 2 ≤ wr ≤ n. Eine Urne schwarz sind. Zieht man zufällig Bälle aus der Urne, ohne diese zwischendurch zurückzulegen, so ist: Pr[genau ein weiÿer Ball wurde gezogen] 18 ≥ 1 2e Proof. Durch elementare Rechenoperationen kann die gesuchte Wahrscheinlichkeit wie folgt beschränkt werden: w 1 n−w r−1 n r r! (n − w)! (n − r)! (r − 1)! n! (n − w − r + 1)! ! w−2 ! w−1 Y 1 Y wr (n − r − j) n − i i=0 j=0 ! w−2 wr Y n − r − j n j=0 n − 1 − j ! w−2 wr Y n − r − j − (w − j − 1) n j=0 n − 1 − j − (w − j − 1) ! w−2 wr Y n − w − (r − 1) n j=0 n−w w−1 r−1 wr 1− n n−w w−1 1 1 1− siehe ** 2 w = w = = ≥ = = ≥ * Gilt faktorweise: siehe * a = n − r − j , b = n − 1 − j , c = w − j − 1. Dann ist a(b − c) ≥ b(a − c) ⇔ ac ≤ bc ⇔ a ≤ b. ** r−1 n−w ≤ 1 w ⇔ (r − 1)w ≤ n − w ⇔ rw ≤ n. Die letzte Ungleichung folgt von den Beobachtungen, dass (r − 1)/(n − w) ≤ 1/w, was aus der Annahme, dass Beispiel 24. n = 8, w = 3, n − w = 5. n 2 ≤ wr ≤ n ist wr/n ≥ 1/2 n/2 ≤ wr ≤ n, und folgt. Einzig mögliche Wahl für r mit r = 2: • 3 Möglichkeiten, genau 2 weiÿe Bälle zu ziehen • 10 Möglichkeiten, genau 2 schwarze Bälle zu ziehen • 15 Möglichkeiten, genau 1 weiÿen und 1 schwarzen Ball zu ziehen • 28 Möglichkeiten insgesamt Damit ist Pr[genau ein weiÿer Ball wurde gezogen] Sei jetzt enthält. R dann, wenn R ⊂ {1, ..., n} derart, dass = 28−13 28 R einen eindeutigen Zeugen für sei gegeben durch einen Vektor k ∈ R. Deniere: 19 = 15 28 > n R ∈ {0, 1} 1 2 > 1 2e mit ≈ 0.184. Rk = 1 Pij genau • eine Matrix AR ∈ Nn×n 0 durch AR ik = kRk Aik • eine Matrix B R ∈ Nn×n 0 durch R = Rk Bkj Bkj Weiterhin sind die Matrizen  wie bereits weiter oben verwendet. jede Spalte von Â, mit die zu einem Element k∈ /R k W =A ·B Proof. k∈R k∈ /R und W =  · B so mit k gehört, durch eine Nullspalte multipliziert wird. B, entsteht, indem jede Zeile von Es seien R Zeuge für P B BR ist die die zu einem Element gehört, durch eine Nullzeile ersetzt wird. Lemma 25. oben, B sowie AR ist die Matrix, die aus  entsteht, indem ersetzt wird und jede andere Spalte Matrix, die aus Âik = kAik und R A, B ∈ {0, 1}n×n Pij . Wenn boolsche Matrizen, einen eindeutigen Zeugen in AR R BR wie hat, so ist Wij und Pij . Wij = (AR · B R )ij = k · Aik · Bkj . Zeugeneigenschaft: Wenn R Pn k=1 R AR ik Bkj = Pn k=1 k · Rk · Aik · Rk Bkj = nur einen einzigen Zeugen enthält, folgt aus der Wij = k·Aik ·Bkj = k , wobei k der eindeutige Zeuge ist. Die weiteren Ideen, die zum fertigen Algorithmus führen, lassen sich so umschreiben: • W = AR B R liefert Zeugen für alle Einträge in eindeutigen Zeugen in • Eintrag von 1 n , wenn 2e 2 haben. Wir wählen P R der Gröÿe mit w |R| = r einen eindeutigen Zeugen für einen Zeugen enthält, gröÿer oder gleich der Konstanten ≤ wr ≤ n ist. O(log n) Mengen R zufällig aus. Damit wird es sehr unwahr- scheinlich, dass für einen Eintrag von • die einen Nach Lemma 23 ist die Wahrscheinlichkeit dafür, dass eine zufällig gewählte Menge • R P = A ∗ B, P kein Zeuge identiziert wird. Zeugen für die Einträge, für die kein Zeuge identiziert wird, werden mit dem trivialen Algorithmus berechnet. • Da nicht alle Einträge von Mengen die gleiche Anzahl Zeugen haben, müssen R mit verschiedenen Kardinalitäten r jedoch, für r die Zweierpotenzen zwischen die Bedingung Satz 26. P n 2 ≤ wr ≤ n 1 benutzt werden. Es reicht und n zu benutzen, da nur erfüllt sein muss. Algorithmus Bpwm ist ein Las-Vegas-Algorithmus für Problem Bp- wm mit erwarteter Laufzeit O(mm(n) log2 n). 20 Algorithm 5 Bpwm 1: procedure Bpwm(Boolsche Matrizen A, B ∈ {0, 1}n×n ) 2: W = −AB 3: for t = 0, ..., blog nc do . teste alle Zweierpot. r = 2t zwischen 1 und n . Wij < 0 ⇔ Zeuge für 4: r = 2t 5: Repeat d3.77 log ne times 6: Wähle R ⊆ {1, ..., n} mit Pij muss noch gefunden werden . für O(log n) |R| = r 7: berechne 8: Z = AR B R 9: for all (i, j) do . teste, ob neuer Zeuge für Pij if Wij < 0 und Zij ist Zeuge für Pij then 10: 11: 12: 13: A R und B Runden R . vgl. Lemma 23 gefunden wurde Wij = Zij end if end for 14: 15: 16: 17: 18: end for for all (i, j) do if Wij < 0 then berechne Wij . kein Zeuge für mit dem trivialen Algorithmus end if 20: end for 21: end procedure 19: 21 Pij gefunden O(mm(n)) Proof. Die Initialisierung benötigt läuft die innere Schleife und führt jedes Mal eine ganzzahlige n×n Matrizen durch. Die anderen Operationen in O(log n)-mal Matrixmultiplikation von Zeit. Der Algorithmus durch- 2 O(mm(n) log2 n) der Schleife sind weniger zeitaufwändig. Die Laufzeit folgt, wenn nicht zu oft der triviale Algorithmus aufgerufen werden muss. • Beh.: Ist Pij = 1, so wird im randomisierten Teil des Algorithmus ein ≥1− Zeuge mit Wahrscheinlichkeit • Bew.: w Sei 1 gefunden. n die Anzahl der Zeugen für mindestens einmal mit einem Wert r Pij . n mit 2 Die äuÿere Schleife wird ≤ wr ≤ n diesem Durchlauf ist die Wahrscheinlichkeit, dass Pij Zeugen für enthält, höchstens (1 − ≤ keinen eindeutigen 1 nach Lemma 23. Damit ist die 2e 1− Wahrscheinlichkeit, dass kein Zeuge für 1 3.77 log n ) 2e R durchlaufen. In Pij identiziert wird höchstens 1 . n Damit ist die erwartete Anzahl der nicht gefundenen Zeugen begrenzt durch n anstelle der ursprünglichen Algorithmus zusammen Zeit n2 . Somit benötigen alle Aufrufe des trivialen O(n2 ). Randomisierter Algorithmus Wir schlieÿen das Thema in diesem Abschnitt mit der Beschreibung des randomisierten Algorithmus ab, der anhand einer Zeugenmatrix eine Nachfolgermatrix berechnet. Zuvor muss noch festgelegt werden, wie genau diese Nachfolgermatrix berechnet wird. Denition 27. trix S von i für G ist eine G(V, E) ein Graph mit n × n-Matrix, möglich, wenn dann, wenn i nach j i 6= j Sij ein Nachfolger liegt. Weiter ist beliebig mit Sii = 0. Dij = d. Sij = k ist genau dann Dik = 1 und Dkj = d − 1. Sei B d ∈ {0, 1}n×n Dkj = d − 1 (B d Lemma 28. Dij = d Knoten. Eine Nachfolgerma- A die Adjazenzmatrix eines Graphen G(V, E), D die Distanzmatrix G. Seien i, j ∈ {1, ..., n}, i 6= j {0, 1}n×n n so dass für alle ist, der auf einem kürzesten Weg von Sei nun von Es sei Es sei A kann aus D in Zeit O(n2 ) Einträge Sij einer Nachfolgermatrix S für d ) d Bkj = 1 genau berechnet werden). Adjazenzmatrix eines Graphen wie oben deniert. Der Aufruf Bpwm(A, B mit G(V, E) und liefert für alle Bd ∈ i, j mit G. Der Beweis von Lemma 28 ist dem Leser zur Übung empfohlen. Das Problem ist, dass es n mögliche Werte für Laufzeit eines Algorithmus mindestens Ω(nmm(n)) d gibt. Damit wäre die und somit superkubisch. Aber es reichen drei Berechnungen von Zeugenmatrizen aus, denn: 22 • Für alle • Jeder Nachfolger i, j und alle Nachfolger k von i mit k von i Dij − 1 ≤ Dkj ≤ Dij + 1. gilt Dkj = Dij − 1 ist ein möglicher Eintrag für Sij . • • Also: Jedes k Eintrag für Sij . Für mit Aik = 1 Dkj ≡ Dij − 1 (mod 3) und ist ein möglicher (s) s = 0, 1, 2 deniere D(s) durch Dkj = 1 genau dann, wenn Dkj +1 ≡ s (mod 3). • Eine Nachfolgermatrix A∗D (s) , s = 0, 1, 2 S von A kann dann aus den Zeugenmatrizen für berechnet werden. Algorithm 6 Apsp 1: procedure Apsp(Adjazenzmatrix A für G(V, E)) 2: berechne 3: for s = 0, 1, 2 do 4: D = Apd(A) berechne .D D(s) ∈ {0, 1}n×n derart, dass (s) Dkj = 1 ist Distanzmatrix gdw. Dkj + 1 ≡ s (mod 3) 5: berechne eine Zeugenmatrix 6: end for 7: berechne Nachfolgematrix 8: S W (s) = Bpwm(A, D(s) ) mit (Dij (mod 3)) Sij = Wij end procedure Satz 29. phen G Der Algorithmus Apsp berechnet eine Nachfolgermatrix eines Gra- mit n Knoten in erwarteter Zeit 23 O(mm(n) log2 n). Kapitel 3 Matchings in bipartiten Graphen 3.1 Grundlagen und Strukturaussagen Ein häuges Problem in der Informatik ist es, eine Menge an eine höchstens gleich groÿe Menge V1 V2 von Bewerbern von Jobs zuzuweisen. Die Struktur und Lösungsverfahren dieses Problems, das leicht abgewandelt in vielen Anwendungen auftritt, werden in diesem Kapitel behandelt. Denition 30. • Ein Graph G heiÿt bipartit genau dann, wenn seine Knotenmenge in zwei disjunkte Teilmengen zerlegt werden kann, in denen keine internen G = (V1 ∪ V2 , E) Kanten existieren: bipartit ⇔ V1 ∩ V2 = ∅ und E ⊆ V1 × V2 . • Ein Matching M ist eine Kantenmenge in G, bei der keine zwei Kanten einen Knoten gemeinsam haben. • Ein Matching M heiÿt nicht erweiterbar (engl.: maximal matching) ge- nau dann, wenn jede Kante zu mindestens einer Kante aus ist: • ∀(u, v) ∈ E ∃w ∈ V Ein Matching M derart, dass Ein Knoten v u heiÿt gibt, so dass • M oder inzident (v, w) ∈ M . heiÿt gröÿtmöglich oder maximal (engl.: maximum matching) genau dann, wenn • (u, w) ∈ M M |M | saturiert (von maximal unter allen Matchings in M ) genau dann, wenn es einen Knoten (u, v) ∈ M . ist perfektes Matching: M G. saturiert alle Knoten in 24 G. Abbildung 3.1: Von links nach rechts: Leeres Matching, nicht erweiterbares Matching sowie ein Matching, das gröÿtmöglich und perfekt ist. Abbildung 3.2: Zwei Beispiele von nicht erweiterbaren, aber nicht gröÿtmög- lichen Matchings. Abbildung 3.1 illustriert die verschiedenen Arten von Matchings. Nicht erweiterbare Matchings müssen nicht zwangsläug gröÿtmöglich sein, wie Abbildung 3.2 zeigt. Umgekehrt ist ein gröÿtmögliches Matching natürlich nicht erweiterbar. Bemerkung 31. Das Ersetzen der Matching-Kanten in Abbildung 3.2 (rechts) durch Kanten, die nicht zum Matching gehören, (und umgekehrt natürlich) erzeugt ein gröÿeres Matching. Diese Beobachtung kann als mögliche Strategie zur Vergröÿerung von Matchings dienen. In der Folge versuchen wir, die oben formulierte Strategie zu formalisieren. Denition 32. Sei M ein Matching in alternierender Pfad ist ein Pfad (u1 , v1 , u2 , v2 , ..., uk , vk , uk+1 ) für alle i. Ein mit M -alternierender G = (V1 ∪ V2 , E). P = (u1 , v1 , u2 , v2 , ..., uk , vk ) (ui , vi ) ∈ M für alle i oder Ein oder M- P = (vi , ui+1 ) ∈ M Pfad mit unsaturierten Endknoten heiÿt M- erweiternder Pfad. Der Name alternierend rührt natürlich daher, dass in einem M- alternierenden Pfad beim Ablaufen der Kanten sich solche abwechseln, die zu M gehören und solche, die nicht zu M gehören. Dies ergibt sich direkt aus den obigen Denitionen. Bemerkung 33. Kanten aus Hat man einen P ∩M M -erweiternden durch die Kanten aus 25 P \M Pfad P, ersetzt man die und erhält ein Matching mit einer Kante mehr. Daraus folgt sofort, dass kein M tieren kann, wenn M -erweiternder Pfad exisi- nicht erweiterbar ist. Um die Folgerung in Bemerkung 33 auch für die zweite logische Richtung beweisen zu können, denieren wir zunächst die symmetrische Dierenz zweier Graphen bzw. Mengen. Denition 34. Seien V. selben Knotenmenge V der Knotenmenge Satz 35. Seien M G = (V, EG ) und H = (V, EH ) Die symmetrische Dierenz und der Kantenmenge 0 M und menhangskomponente von M ∆M G∆H E = {e|e ∈ EG zwei Matchings in 0 zwei Graphen mit derist ein Graph mit e ∈ E H }. XOR G = (V1 ∪ V2 , E). Jede Zusam- ist entweder ein Pfad oder ein Kreis gerader Länge. Proof. Seien M 0 M und Matchings und sei F = M ∆M 0 . Da M und chings sind, hat jeder Knoten höchstens eine inzidente Kante aus M 0 F . Daraus folgt, dass ∆(F ) ≤ 2 F Zusammenhangskomponente von F zwischen den Kanten von M und von M M 0 G keinen dann und nur dann, wenn besitzt. Wir haben bereits gesehen, dass ein M werden kann, ein gröÿeres Matching als einen M −M 0 ist ein gröÿtmögliches Matching in einem Graphen genau dann, wenn Umgekehrt sei ist jede . M -erweiternden Proof. Wir zeigen die Kontraposition aller Richtungen. M F ), 0 Ein Matching Matching als bzw. M − M . Somit hat jeder Kreis gerade Länge, mit gleicher und den Kanten von G = (V1 ∪ V2 , E) M Mat- entweder ein Pfad oder ein Kreis. Auÿer- dem alterniert jeder Pfad bzw. Kreis in Satz 36. 0 höchstens zwei Kanten an jedem Knoten hat. Da gilt (∆(F ) bezeichnet den maximalen Knotengrad von Anzahl Kanten von M M 0 M -erweiternden G hat ein gröÿeres M -erweiternden Pfad M -erweiternder Pfad dazu benutzt zu produzieren. ein gröÿeres Matching als Pfad. Sei einen G Pfad enthält. F = M ∆M 0 M in G. Wir konstruieren , nach Lemma 35 besteht F aus Pfaden und geraden Kreisen. Diese Kreise haben die gleiche Anzahl Kanten von M und M 0 . Da mehr Kanten aus 0 |M | > |M |, muss F M 0 als aus M haben. Solch eine Komponente kann nur ein Pfad sein, der mit einer Kante aus aber ein M -erweiternden Satz 37. N (S) (Halls Theorem) Sei M 0 beginnt und endet, somit ist dieser Pfad G. G = (V1 ∪V2 , E) ein bipartiter Graph. Bezeichne die Menge von Knoten, die einen Nachbarn in Matching |S| Pfad in eine Zusammenhangskomponente mit M, für alle das jeden Knoten von V1 S haben. In G gibt es ein saturiert, genau dann, wenn S ⊆ V1 . 26 |N (S)| ≥ Proof. Notwendigkeit (⇒): Die in N (S) |S| Knoten, die zu S liegen. (⇐): Hinlänglichkeit V1 , |N (S)| ≥ |S| Um zu ∀S ⊆ M ein saturiert nicht die Knotenmenge V1 , zeigen, dass G ist und M dann erhalten wir eine Menge S ⊆ V1 , so dass u ∈ V1 M ein Knoten, der in Bedingung |N (S)| < S : nicht saturiert ist. Unter allen Knoten, die von u aus durch bestehe S aus derartigen Knoten der Menge V2 Halls hinreichend ist, zeigen wir die Kontrapsoition. Wenn gröÿtmögliches Matching in Sei gematcht wurden, müssen M -alternierende Pfade des Graphen V1 (siehe hierzu Abbildung 3.3). Beachte, dass und T u ∈ S. G erreichbar sind, aus solchen der Menge Wir behaupten, dass M Abbildung 3.3: Beispiel zu Halls Theorem, Satz 37. die Knoten aus erreicht V2 M M von einem Knoten in y∈T erreicht, über ergeben diese Kanten aus dass |T | = |S − {u}| M Die Kante T = N (S). S ist zu T Hinzufügen der Kante einen y∈ /T T M Pfad V1 über sind und kehrt zurück zu T S − {u} über eine erreicht. Da es keinen saturiert. Somit wird ein zu einem Knoten aus eine Bijektion von T und S − {u} Angenommen (v, y) kann nicht in M der Menge M -alternierende T nach S M -erweiternden M -alternierender erweitert. Insofern S −{u} und wir wissen, gilt. Das Matching zwischen sächlich gilt M matcht. Der liegen. Also wird jeder Knoten der Menge Pfad gibt, ist jeder Knoten aus Pfad, der S − {u} mit denen aus über Kanten, die nicht in Kanten, die in Kante aus T ergibt auÿerdem y ∈ V2 − T liegen, da hat einen Nachbarn zu einem Tat- v ∈ S. u unsaturiert ist und und der Rest zugehörig über das Matching (v, y) T ⊆ N (S). M. M -alternierenden Deshalb ergibt das Pfad, der v erreicht, M -alternierenden Pfad nach y . Dies widerspricht aber der Annahme, dass und somit kann eine Kante haben wir gezeigt, dass (v, y) auch nicht existieren. Mit |N (S)| = |T | = |S| − 1 < |S| T = N (s) für diese Wahl von S. Dies schlieÿt den Beweis der Kontraposition ab. Bemerkung 38. hat, das V1 Falls ein bipartiter Graph G = (V 1 ∪ V 2, E) kein Matching saturiert, lässt sich dies mit Halls Theorem leicht nachweisen. 27 Dazu zeigt man einfach die Existenz einer Teilmenge von Nachbarn in V1 mit zu wenigen V2 . |X| Ein klassisches Anwendungsbeispiel ist die Besetzung von Bewerber aus einer Menge Y. Falls |Y | > |X|, Jobs durch erhält natürlich nicht jeder Bewerber einen Job. Es kann aber eben auch passieren, dass nicht jeder Job besetzt werden kann, weil Satz 39. Für k > 0 X nicht saturierbar ist. k -reguläre hat jeder bipartite Graph ein perfektes Mat- ching. Proof. Sei G = (V1 ∪ V2 , E) k -regulärer, ein Kanten nach Endpunkten in V1 bipartiter Graph. Zählt man die V2 , und nach Endpunkten in sieht man, dass k|V1 | = k|V2 |, also |V1 | = |V2 |. Somit reicht es aus, Halls Bedingung zu überprüfen. Ein Matching, das V1 V2 saturiert, wird auch saturieren und wird zudem auch ein perfektes Matching sein. S ⊆ V1 . Sei G k -regulärer ein N (S) Sei weiterhin die Anzahl der Kanten von Graph ist, gilt und somit ist sich, dass m m = k|S|. m ≤ k|N (S)|. |N (S)| ≥ |S|, wenn Diese Daher gilt k > 0. m S nach N (S). Da Kanten sind inzident zu k|S| ≤ k|N (S)|. Daraus ergibt Mit der beliebigen Wahl von S ⊆ X haben wir die Gültigkeit von Halls Bedingung erfolgreich nachgewiesen. Denition 40. Menge Q ⊆ V Knoten aus Q Eine Knotenüberdeckung eines Graphen derart, dass jede Kante aus E G = (V, E) ist eine inzident zu mindestens einem ist. Eine minimale Knotenüberdeckung von G ist eine Knoten- überdeckung mit minimaler Anzahl von Knoten unter allen Knotenüberdeckungen von G. Satz 41. (Satz von König und Egerváry) Sei G = (V1 ∪ V2 , E) ter Graph. Ferner sei M ein gröÿtmögliches Matching und Knotenüberdeckung in G. Dann gilt: Q ein biparti- eine minimale |Q| = |M |. Proof. Sei immer Q M G = (V1 ∪ V2 , E) ein bipartiter Graph. Es ist leicht einzusehen, dass |Q| ≥ |M | gelten muss. Andernfalls gäbe es eine Kante in nicht überdeckt wäre, weil ein Knoten in Q M, die von nur höchstens eine Kante aus überdecken kann. Gegeben sei daher nun eine minimale Knotenüberdeckung können wir ein Matching der Gröÿe |Q| und T = Q∩V2 . Seien H und H die Teilgraphen von 28 von G. Dann konstruieren, um zu zeigen, dass die Gleichheit immer erreicht werden kann. Wir partitionieren 0 Q Q durch R = Q∩V1 G, die durch R ∪(V2 −T ) und T ∪(V1 −R) induziert werden. Wir wenden Halls Theorem an, um zu zeigen, H dass ein Matching hat, das hat, das T saturiert. Weil H R V2 − T in H und 0 und R∪T |Q| in ein Matching G. eine Knotenüberdeckung ist, hat G keine Kante zwischen V2 − T V1 − R (andernfalls wären diese Kanten nicht überdeckt). Für jedes S ⊆ R betrachten wir NH (S), dann könnten wir S welches in durch deckung zu erhalten, da und die nicht von T ein Matching, das V2 − T |NH (S)| < |S|, enthalten ist. Gälte NH (S) in Q ersetzen, um eine kleinere Knotenüber- NH (S) S alle Kanten überdeckt, die zu inzident sind überdeckt werden. Die Minimalität von H 0 disjunkt sind, bilden die beiden Matchings zusammen ein Matching der Gröÿe Da H saturiert und dass R Q ergibt somit Halls Bedingung für H und daher hat saturiert. Wendet man dasselbe Argument auf ergibt sich das Matching, das T H 0 an, saturiert. Betrachte hierzu auch Abbildung 3.4. Abbildung 3.4: Beispiel zu Satz 41 3.2 Berechnung von gröÿtmöglichen Matchings Satz 42. G. Sei G = (V1 ∪ V2 , E) Falls es einen |M | ein bipartiter Graph und sei M -erweiternden M Pfad gibt, der ein Matching erzeugt, und es einen Knoten Pfades gibt, dann gibt es auch einen v als Endknoten eines M1 erweiternden Pfad bezüglich Sei P = hv = u1 , u2 , ..., un i nehmen zusätzlich an, dass wir erweiternden Pfades mit |M1 | > M -erweiternden Pfad mit v als Endknoten. enthält, der M M1 M1 -erweiternden Proof. Zum Zwecke des Widerspruchs nehmen wir an, dass ternden Pfad bezüglich ein Matching in hat, der G v als Endknoten hat, aber v als Endknoten enthält. ein erweiternder Pfad bezüglich M1 durch das Erweitern von Q = hv1 , v2 , ..., vk i bezüglich M M G M1 keinen und wir entlang des P auf- M . Somit enthält P eine erhalten. Dann ist grund der Annahme kein erweiternder Pfad bezüglich 29 einen erwei- M1 Kante, die zu Wert derart, dass (u2i , u2i+1 ) ∈ M1 − M . auf P als auch auf von Q entstanden ist. Der Knoten Q denn andernfalls wäre M, der und u2i v u2i i (u2i , u2i+1 ) M1 durch die Erweiterung ist ein saturierter Knoten bezüglich Q, e aus 0 Q = hv1 , v2 , ..., vj−1 , vj i Q, die zu muss M (u2i , u2i+1 ) ∈ E(Q) − M M1 ), Matching hinzugefügt (bezüglich folgt aus der Konstruktion, dass bezüglich M 0 Q und u2i = vj gehört. Sei e = (vj−1 , vj ) mit gelten. ist ein alternierender Pfad bezüglich die noch nicht im Matching bezüglich haben. Allerdings ist M, P = hv = u1 , u2 , ..., u2i i ein erweiternder Pfad bezüglich der genau einen unsaturierten Knoten enthält, nämlich 0 liegt sowohl 0 (u2i , u2i+1 ) ∈ E(Q) − M , Da der kleinste ganzzahlige Die Kante (siehe Abbildung 3.5), weil inzident mit der Kante Der Pfad aus Sei nun als Endknoten hat. Aus diesen Gründen ist 1 < j < k. M, M. gehört, aber nicht zu M wenn wir P 0 v1 . Die Kanten enthalten sind, werden dem M entlang nur den Knoten Q erweitern. Es vj = u2i gemeinsam hv = u1 , u2 , ..., u2i , vj−1 , vj−2 , ..., v1 i ein erweiternder Pfad (betrachte hierzu auch Abbildung 3.5). Aber dies widerspricht der Annahme. Abbildung 3.5: Ein erweiternder Pfad, der im Satz 42 konstruiert wurde Folgerung 43. sei Sei M M = M1 , M2 , ..., Mk ein Matching in einem bipartiten Graphen eine Sequenz von Matchings, wobei 30 Mi+1 G. aus Ferner Mi durch einen Mi -erweiternden einen Knoten v kein Mi -erweiternden Pfad erzeugt wird, für alle i = 1, ..., k − 1. Sollte für M -erweiternder Pfad existieren, dann gibt es auch keinen Pfad mit v als Endknoten (i = 1, ..., k − 1). Wir betrachten nun den Algorithmus MaximumMatching, der ein gröÿt- M mögliches Matching p = |V1 | ≤ |V2 | = q , für einen bipartiten Graphen G = (V1 ∪ V2 , E), mit berechnet. Die Algorithmus-Idee kann wie folgt zusam- mengefasst werden: • Sei M initiales Matching. Falls gibt es eine Sequenz Mk wird aus M = M1 , ..., Mk , Mi so dass mit Hilfe eines Wir wählen einen Knoten ob es einen • kein gröÿtmögliches Matching ist, dann gröÿtmögliches Matching Mi+1 • M Mi -erweiternden v , der bzgl. M M -erweiternden Pfades erzeugt unsaturiert ist, und bestimmen, Pfad gibt, in dem Falls ein solcher Pfad gefunden wird, wird M V zu der Endknoten ist M0 erweitert; wir erhal- ten dadurch ein gröÿeres Matching • Falls hat v v kein Endpunkt von irgendeinem M -erweiternden in einem gröÿtmöglichen Matching Matchings M Mk , Pfad ist, dann das durch Erweitern des entsteht, gemäÿ Folgerung 43 keinen Matchingpartner Weitere Erklärungen und Hinweise nden Sie in den Vorlesungsfolien bzw. im Buch [2]. 3.3 Matchings mit maximalem Gewicht In diesem Abschnitt werden wir den sogenannten ungarischen Algorithmus kennenlernen, der in vollständigen gewichteten bipartiten Graphen ein Matching maximalen Gewichts ndet. Details bisher nur auf den Folien oder in den Büchern [1] und [2]. 3.3.1 Satz 44. Korrektheit Sei G = (V1 ∪ V2 , E) ein vollständiger gewichteter bipartiter Graph. Dann ndet der Algorithmus MaximumWeightMatching (auch Algorithmus von Kuhn und Munkres oder ungarischer Algorithmus genannt) ein Mat- ching mit maximalem Gewicht in G. 31 Algorithm 7 MaximumMatching 1: procedure MaximumMatching(Bipartiter Graph G = (V1 ∪ V2 , E), Initiales Matching M1 ) 2: i = 1, M = M1 3: if i ≥ p then return M . M gröÿtmögliches Matching end if if vi ∈ M then goto line 3 else{v = vi , Q = {v}} forall v ∈ V1 ∪ V2 , v 6= vi {T REE(vj ) = F ALSE}; T REE(vi ) = 4: 5: 6: 7: T RU E; if Q = ∅ then {i = i + 1, goto line 3} else extract a vertex x from Q 8: 9: 10: Let N (x) = {y1 , ..., yj }. Set j=1 if j ≤ k then y = yj else goto line 8 end if end if if T REE(y) = T RU E then {j = j + 1, goto line 11} end if if (y, z) ∈ M then {T REE(y) = T RU E, T REE(z) = 11: 12: 13: 14: 15: 16: 17: T RU E, P AREN T (y) = P AREN T (z) = y, Q = Q ∪ {z}, j = j + 1, goto line 11} 18: end if 19: Use P AREN T to determine 20: end if 21: Augment 22: M = M , i = i + 1, goto 23: M 0 along P M -augmenting to obtain new matching line 3 end procedure 32 path M 0 P from v to y Algorithm 8 MaximumWeightMatching 1: procedure MaximumWeightMatching(Vollst. (V1 ∪ V2 , E), Gewichtsfkt. 3: 4: Sei 5: M = MaximumMatching(Hl , ∅); 6: if M else 7: Hl der von l denierte Graph mit Kantenmenge saturiert jeden Knoten von Sei 9: Konstruiere einen alternierenden Baum 10: 11: 12: 13: El ; V1 then return M ; 8: x G= w) forall v ∈ V1 sei l(v) = maxu∈V2 w(v, u); forall u ∈ V2 sei l(u) = 0; 2: bipartiter Graph der erste unsaturierte Knoten in V1 ; T mit Wurzel x bzgl. M; if ∃ M -erweiternder Pfad P then Erweitere M; goto line 6; else 14: ml = min{l(v) + l(u) − w(u, v) | v ∈ V1 ∩ T, u ∈ V2 \ T }; 15: l(v) = l(v) − ml 16: Konstruiere für v ∈ V1 ∩ T , l(u) = l(u) + ml Hl ; goto line 9; 18: end if 19: end if 20: end procedure 17: 33 für u ∈ V2 ∩ T ; Proof. Der Algorithmus beginnt mit einer zulässigen Knotenmarkierung. Er kann nur terminieren, wenn der Spanngraph Hl ein perfektes Matching hat. Diese Eigenschaft garantiert uns, dass die Knotenmarkierung und das Matching das gleiche Gewicht haben. Nehmen wir an, l Knotenmarkierung und der zugehörige Spanngraph l0 tes Matching. Sei sei die aktuelle zulässige Hl enthalte kein perfek- die daraufhin erstellte neue Knotenmarkierung. Da ml das Minimum einer nicht-leeren endlichen Menge von positiven Zahlen ist, gilt ml > 0. Wir weisen zunächst nach, dass l0 eine zulässige Knotenmarkierung ist. V1 ∩ V (T ) und V1 ∩ V (T ) und v ∈ V1 ∩ V (T ) und Die Veränderung der Markierungen auf Knoten der Mengen V2 ∩ V (T ) ergibt V2 ∩ V (T ). 0 0 l (v) + l (u) = l(v) + l(u) Daher bleiben die Kanten in u ∈ V2 \V (T ), gilt 0 0 für Kanten zwischen Hl0 erhalten. Falls l (v) + l (u) = l(v) + l(u) − ml , mindestens so groÿ ist wie was wegen der Wahl von ml wu,v . Der Algorithmus terminiert nur, wenn der Spanngraph Hl ein perfektes Matching enthält, so dass es genügt zu zeigen, dass die Terminierung tatsächlich eintritt. Nehmen wir an, die Kantengewichte wu,v seien rational. Wenn wir die Gewichte mit ihrem Hauptnenner multiplizieren, erhalten wir ein äquivalentes Problem mit ganzzahligen Gewichten. Wir können daher nun auch annehmen, dass die Markierungen in schusswert ml l ganzzahlig sind. Daher ist jeder Über- auch ganzzahlig und in jeder Iteration reduzieren wir die Kosten der Knotenmarkierung um einen positiven ganzzahligen Betrag. Da wir bei einem endlichen Wert starten und die Kosten nach unten beschränkt sind (nämlich durch die Kosten eines perfekten Matchings), terminiert der Algorithmus nach endlichen vielen Iterationen. Bemerkung 45. Der Beweis von Satz 44 kann so modiziert werden, dass auch reellwertige Kantengewichte zugelassen werden können. 34 Kapitel 4 Matchings in allgemeinen Graphen Wir haben bis jetzt Matchings in bipartiten Graphen betrachtet. Es folgt nun ein Abschnitt, in dem wir uns mit allgemeinen Graphen befassen werden. 4.1 Der Algorithmus von Edmonds Der Algorithmus von Edmonds berechnet ein gröÿtmögliches Matching in allgemeinen Graphen. Bisher ist seine Darstellung nur im Foliensatz verfügbar. 4.2 Approximationsalgorithmen für MWM In diesem Abschnitt werden zwei Approximationsalgorithmen für das Problem MaximumWeightedMatching in allgemeinen Graphen behandelt. Beide Algorithmen haben die Approximationsgüte 2, wie wir in den folgenden Re- sultaten beweisen werden. Die Darstellung der Algorithmen ndet sich im Foliensatz. Satz 46. sei M ∗ Sei G = (V, E) ein Graph mit nicht-negativen Kantengewichten und ein Matching mit maximalem Gewicht in berechnet ein Matching Proof. Sei M mit ∗ w(M ) ≤ 2w(M ) G. GreedyApproxMWM in Zeit O(m log m). x das Gewicht der ersten Kante e = {u, v}, die durch den Algorith- mus GreedyApproxMWM ausgewählt wird. Oensichtlich ist mit maximalem Gewicht in G. Wenn e e eine Kante und alle inzidenten Kanten gelöscht werden, werden dabei höchstens zwei Kanten des optimalen Matchings M∗ entfernt. Die Summe der Gewichte dieser beiden Kanten beträgt höchstens 2x. Bei der Wahl der nächsten Kante keine Kante mehr in e 0 gilt entweder M ∗ , die schwerer als e0 e ∈ M ∗ oder es gibt ist. Daher gilt jedes Mal, wenn ein oder zwei Kanten des optimalen Matchings aus 35 0 E gelöscht werden, die nicht in M M aufgenommen worden sind, dass die gewählte Kante in halb so schwer ist wie die beiden gelöschten Kanten aus M∗ mindestens zusammen. Dieses Argument lässt sich für alle weiteren Iterationen von GreedyApproxMWM wiederholen. Da alle Kantengewichte nicht negativ sind, folgt die Behauptung zur Approximationsgüte. Die Laufzeit ergibt sich durch die initiale Sortierung der Kanten nach ihrem Gewicht, weil die Schleife jede Kante genau einmal betrachtet und daher nur lineare Laufzeit in |E| hat. Die folgenden Ergebnisse beruhen auf einer Arbeit von D. E. Drake und S. Hougardy [6]. Satz 47. Der Algorithmus PathGrowingMWM hat eine Laufzeit von O(|E|). Proof. Jeder Knoten des Graphen wird höchstens einmal in der while-Schleife in den Zeilen 4-10 bearbeitet, denn nach seiner Bearbeitung wird er in Zeile 8 aus G entfernt. Die schwerste Kante, die zu einem Knoten zu nden und x aus G x inzident ist, zu entfernen, lässt sich problemlos mit einem Aufwand durchführen, der proportional zum Grad von x ist. Indem man Pfade immer nur von Endknoten einer Kante startet, stellt man sicher, dass keine Knoten mit Grad 0 bearbeitet werden. Die Zahl der Knoten mit Grad mindestens 1 in G ist O(|E|). Daher ist die Gesamtlaufzeit des Algorithmus PathGro- wingMWM beschränkt durch die Summe der Knotengrade der Knoten in was O(|E|) Satz 48. güte von V, ergibt. Der Algorithmus PathGrowingMWM hat eine Approximations- 2, d. h. das von ihm gefundene Matching ist mindestens halb so schwer wie ein Matching mit maximalem Gewicht. Proof. Für die Analyse der Güte weisen wir jede Kante des Graphen einen Knoten von G folgendermaÿen zu. Immer wenn ein Knoten x des Algorithmus entfernt wird, werden alle Kanten, die noch zu sind, zu x zugewiesen. Auf diese Weise wird jede Kante von Knoten von G G G an in Zeile 8 x inzident genau einem zugewiesen. Andererseits muss nicht jeder Knoten von G ihm zugewiesene Kanten haben. Wir betrachten nun ein MWM M von G. Da M keine zwei zueinander inzidente Kanten haben kann, werden alle Kanten von Knoten von G M an verschiedene zugewiesen. In jedem Schritt des Algorithmus wird die aktuell schwerste Kante, die zu x inzident ist, in Zeile hinzugefügt. Daher ist das Gewicht von 36 5 gewählt und zu M1 ∪ M2 M1 oder M2 mindestens so groÿ wie das Gewicht von M. Da 1 1 max{w(M1 ), w(M2 )} ≥ w(M1 ∪ M2 ) ≥ w(M ), 2 2 liefert der Algorithmus PathGrowingMWM ein Matching, das mindestens halb so schwer ist wie das Optimum. 4.3 Die Theoreme von Tutte und Petersen Denition 49. F und Ein Faktor F eines Graphen G ist ein Spanngraph von G, d. h. G haben dieselbe Knotenmenge und E(F ) ⊆ E(G). Ein k -Faktor ist ein k -regulärer Spanngraph. Eine ungerade Komponente ( odd component) eines Graphen ist eine (Zusammenhangs)Komponente mit einer ungeraden Anzahl von Knoten. Die Anzahl ungerader Komponenten von Bemerkung 50. Ein 1-Faktor wird mit o(H) notiert. und ein perfektes Matching sind fast dasselbe. Die genaue Unterscheidung ist, dass ein von H 1-Faktor ein 1-regulärer Spanngraph G ist, während ein perfektes Matching die Menge von Kanten in einem sol- chen Spanngraph ist. Ein 3-regulärer Graph, für den es ein perfektes Matching gibt, kann in zwei Teilgraphen zerlegt werden, von denen einer ein und einer ein 2-Faktor 1-Faktor ist. Tutte hat eine notwendige und hinreichende Bedingung dafür gefunden, 1-Faktor wann Graphen einen trachten die Teilmenge G−S S ⊆ V (G), G einen 1-Faktor hat und wir be- dann hat jede ungerade Komponente von einen Knoten, der einen Matching-Partner auÿerhalb dieser Komponente hat und daher nur zu sen, haben. Wenn o(G − S) ≤ |S|. S gehören kann, da die Knoten von disjunkt sein müs- Betrachte hierzu auch Abbildung 4.1. Tuttes Bedingung: Abbildung 4.1: Für alle S S ⊆ V (G), o(G − S) ≤ |S|. Tuttes Bedingung Tutte hat bewiesen, dass diese Bedingung nicht nur notwendig ist, sondern auch hinreichend. Es gibt viele Beweise, die 37 dies zeigen. Wir betrachten hier den Beweis von Lovász und benutzen Ideen der symmetrischen Dierenz. Satz 51. S) ≤ |S| Ein Graph G 1-Faktor hat einen für jede Teilmenge o(G − dann und nur dann, wenn S ⊆ V (G). Proof. Notwendigkeit (⇒): Die ungeraden Komponenten von Knoten haben, die zu disjunkten Knoten von S G−S müssen gematcht sind. Hinlänglichkeit (⇐): Wenn wir eine Kante hinzufügen, die zwei Komponenten aus G−S verbindet, steigt die Anzahl der ungeraden Komponenten nicht (eine gerade und eine ungerade Komponete werden zu einer ungeraden Komponente, zwei Komponenten derselben Parität bilden eine gerade Komponente). Somit bleibt Tuttes Bedingung erhalten, wenn Kanten hinzugefügt werden: wenn 0 0 G = G + {e} und S ⊆ V (G), dann o(G − S) ≤ o(G − S) ≤ |S|. Auÿerdem hat G keinen 1-Faktor, wenn 0 G = G + {e} keinen 1-Faktor Somit gilt der Satz von Tutte, falls es keinen simplen Graphen dass G Tuttes Bedingung erfüllt, einer fehlenden Kante zu G G G keinen 1-Faktor ergeben würde. Sei ein solcher Graph. Wir führen den Beweis nun per Widerspruch, indem wir zeigen, dass Sei U G einen 1-Faktor besitzt. die Menge von Knoten in 1. Fall: G − U G, die Grad n(G) − 1 haben. besteht aus vollständigen disjunkten Graphen. In diesem Fall können die Knoten in jeder Komponente von o(G − U ) ≤ |U | Paaren zusammengefasst werden. Da U G derart gibt, hat und das Hinzufügen 1-Faktor einen Graphen mit hat. zu jedem Knoten aus Knoten mit Knoten aus G−U U G−U zu beliebigen und jeder Knoten aus adjazent ist, können wir die übrig gebliebenen matchen. Wenn wir Tuttes Bedingung auf S = ∅ anwenden, ergibt sich, dass n(G) ge- rade sein muss, denn ein Graph ungerader Gröÿe enthielte eine ungerade Komponente und würde Tuttes Bedingung verletzen. Weiterhin liegen die Knoten, die übrig bleiben, in U und bilden eine Clique. Um den 1-Faktor zu erhalten, müssen wir nur noch zeigen, dass eine gerade Menge von Knoten in U übrig geblieben ist. Tatsächlich haben wir eine gerade Anzahl Knoten gemtached und da n(G) gerade ist, bleibt eine gerade Anzahl von Knoten in U übrig. Siehe auch Abbildung 4.2. 2. Fall: G − U In diesem Fall hat jazente Knoten G−U G−U x, z zwei Knoten mit der Distanz mit einem gemeinsamen Nachbarn einen anderen Knoten Konstruktion von Seien ist keine disjunkte Vereinigung von Cliquen. M1 und G w, der nicht adjazent zu führt das Addieren einer Kante zu M2 1-Faktoren in G + {xz} 38 bzw. 2, diese sind nichtad- y∈ / U. y Zusätzlich hat ist, da G y∈ / U. zu einem G + {yw}. Nach 1-Faktor. Es reicht aus zu Abbildung 4.2: zeigen, dass Skizze zum 1. Fall des Beweises M1 ∆M2 einen 1-Faktor enthält, der xz dies ist der für den Widerspruch gewünschte F = M1 ∆M2 . Sei als auch yw in F Da F die Komponenten aus Wenn C F, Wenn C der M2 sowohl in C, der mit y wir C xz zy , falls wir C als auch einen yw xz yw yw oder in in M1 , und M2 xz jeweils nur sind M2 . yw und xz C C aus liegen. zu vermeiden. In dem Teil führt, benutzen wir Kanten aus {x, z} Wir haben einen M1 und M2 xy . 1-Faktor Für den Rest von erzeugt, der nicht auÿerhalb von Skizze zum 2. Fall des Beweises 39 M1 , erreichen, benutzen erzeugt. Abbildung 4.3: 1-Faktor die nicht in erreichen, andernfalls benutzen wir G M1 G Grad 0 oder 2 in F . Somit zu vermeiden. Wenn wir benutzt. Kombiniert mit 1-Faktor G sind sowohl enthält, wie in Abbildung 4.3 dargestellt, beginnt und über z yx benutzen wir Kanten aus oder yw ∈ M2 − M1 , und allen Kanten aus um um die Nutzung von G. enthält, dann besteht der gewünschte yz , benutzen wir entweder in enthält. yw aus yw jeder Knoten aus yw nicht enthält, denn Zyklen gerader Länge bzw. isolierte Knoten. Sei xz nicht auch den Kanten von und 1-Faktor enthalten. Da jeder Knoten aus 1 hat, hat einen Grad von der Zyklus aus xz ∈ M1 − M2 und C, haben wir Folgerung 52. (Petersen, 1891) Sei G = (V, E) keine Brückenkanten enthält. Dann hat G einen ein 3-regulärer Graph, der 1-Faktor. Proof. Siehe West [1, S. 139] Satz 53. 2d. (Satz von Petersen) Sei Dann kann man G ein regulärer Graph vom Grad d Graphen vom Grad 2 zerlegen, d. h. es existiert . . . eine d-teilige Kantenpartition E1 ∪ E2 ∪ . . . ∪ Ed = E mit der Eigenschaft, dass (V, Ei ) Proof. (für aus in G = (V, E) regulär vom Grad 2 für alle d = 2) Sei K 1≤i≤d ist. ein Eulerkreis des 4-regulären Graphen G. K besteht |E| = 2 · |V | vielen Kanten. Da die Kantenanzahl gerade ist, können K abwechselnd rot und blau gefärbt werden. Eine gesuchte die Kanten von Kantenpartition für {e ∈ E; e G ist dann E1 = {e ∈ E; e ist blaue Kante}, da jedem Knoten in und eine blaue Kante zugeordnet wird. 40 K ist rote Kante} und E2 = immer paarweise eine rote Kapitel 5 Netzwerkalgorithmen Viele praxisrelevante Probleme sind so rechenaufwändig oder speicherintensiv, dass sie von sequentiellen Rechnern nicht in akzeptabler Zeit gelöst werden können. Viele dieser Probleme gelten in der Komplexitätstheorie sogar als efzient (da in Polynomialzeit lösbar). Beispielsweise können jedoch Instanzen der Gröÿe 108 für einen sequentiellen Algorithmus mit quadratischer Zeit- oder Speicherkomplexität zu einem groÿen Problem werden. Parallelrechner bieten oft eine Möglichkeit, solche groÿen Instanzen in akzeptabler Zeit zu lösen. In einem Parallelrechner arbeiten mehrere Prozessoren gleichzeitig an der Lösung. Daher muss ein Mechanismus bereitgestellt werden, mit dessen Hilfe die Prozessoren untereinander kommunizieren können. Je nachdem, wie dieser Mechanismus realisiert ist, unterscheidet man zwischen Parallelrechnern, die über einen gemeinsamen Speicher und solchen, die über ein Verbindungsnetzwerk kommunizieren. Parallelrechner sind mittlerweile allgegenwärtig. Denn fast jeder heutzutage für den Desktop-Massenmarkt produzierte Chip beinhaltet mehrere Prozessorkerne, die über gemeinsamen Speicher kommunizieren. Aber für sehr groÿe Instanzen muss man weiterhin eine sehr groÿe Zahl von Parallelrechnern verwenden, die dann über ein Verbindungsnetzwerk kommunizieren. In diesem Kapitel wollen wir einige der bekanntesten und leistungsstärksten Prozessornetzwerke vorstellen. Prozessornetzwerke werden als ungerichtete Graphen dargestellt. Jedem Knoten des Graphen entspricht ein Prozessor mit seinem lokalen Speicher und jeder Kante ein Kommunikationskanal (Link). Im folgenden werden wir daher die Begrie Prozessornetzwerk und Graph synonym verwenden. Möchte ein Prozessor Pi auf eine Variable zugreifen, die in dem loka- len Speicher eines nicht benachbarten Prozessors Pj abgelegt ist, so muss die Variable auf einem möglichst kurzen Weg zu Prozessor 41 Pi geroutet werden. Hieraus leiten sich eine Reihe von Eigenschaften ab, die ein gutes Prozessornetz charakterisieren: 1. kleiner Durchmesser Um Routing-Wege möglichst kurz zu halten, sollte das Prozessornetz einen kleinen Durchmesser besitzen. Es kann jedoch nicht einfach jeder Prozessor mit jedem anderen Prozessor verbunden werden, da sich ein derartig dichtes Netzwerk in der Praxis nicht realisieren läÿt. 2. gute Simulationseigenschaften Ein Algorithmus, der ezient auf einem Rechnernetz kann, sollte auch auf einem Netzwerk G2 G1 ausgeführt werden schnell laufen. Dies gewährleistet die Portierbarkeit von Algorithmen. Dazu muss das Netzwerk munikationsstruktur des Netzwerks G1 G2 die Kom- ezient simulieren können. 3. einfache Routing-Algorithmen Falls eine Nachricht von einem Prozessor Pi zu einem Prozessor werden muss, so sollte jeder Prozessor auf dem Weg von Pi nach Pj Pj geroutet möglichst in konstanter Zeit entscheiden, über welche Kante die Nachricht weitergeschickt wird. Dies verringert die Kosten eines nicht lokalen Speicherzugris. 4. keine Flaschenhälse In einem guten Netzwerk sollten nicht nur alle Routing-Wege kurz sein, sie sollten sich auch gleichmäÿig über die Knoten und Kanten des Graphen verteilen. Dies ist beispielsweise in einem sternförmigen Netzwerk nicht der Fall. 5. hohe Fehlertoleranz Kommt ein Netzwerk in der Praxis zum Einsatz, so muss gewährleistet sein, dass auch nach Ausfall eines Prozessors oder eines Links auf dem restlichen Netzwerk weitergearbeitet werden kann. Der Graph sollte eine hohe Konektivität besitzen, so dass selbst bei einem Ausfall mehrerer Links das Netzwerk zusammenhängend bleibt. 5.1 Der Hypercube In den nachfolgenden Abschnitten werden wir die bekannten Netzwerktopologien Hypercube, Gitter und Torus kennenlernen. Zunächst benötigen wir jedoch noch einige graphentheoretische Denitionen: Denition 54. Sei G = (V, E) ein ungerichteter Graph und zeichne dist(u, v) die Länge des kürzesten Weges von 42 u nach u, v ∈ V . v. Be- Dann ist der Durchmesser D(G) des Graphen G deniert als: D(G) = max{dist(u, v); u, v ∈ V } Denition 55. G1 und G2 G1 = (V1 , E1 ) Seien und G1 zwischen und Denition 56. G2 . Sei Gilt G1 = G2 , G = (V, E) In diesem Fall heiÿt so heiÿt ϕ existiert mit ϕ : V1 → V2 ϕ gibt Isomorphismus Automorphismus. G ein ungerichteter Graph. metrisch (engl.: vertex-transitive), wenn für alle ϕu,v ungerichtete Graphen. heiÿen isomorph, wenn es eine bijektive Abbildung {u, v} ∈ E1 ⇔ {ϕ(u), ϕ(v)} ∈ E2 . mit G2 = (V2 , E2 ) u, v ∈ V heiÿt knotensym- ein Automorphismus ϕu,v (u) = v . Aus der Denition des Automorphismus folgt sofort, dass jeder knotensymmetrische Graph regulär sein muss (d.h. alle Knoten besitzen gleichen Knotengrad). Denition 57. Sei G = (V, E) ein ungerichteter Graph. metrisch, falls für je zwei Kanten existiert mit ϕ(u) = u 0 und 0 0 {u, v}, {u , v } ∈ E G heiÿt kantensym- ein Automorphismus ϕ 0 ϕ(v) = v . Der Hypercube gehört zu den leistungsstärksten Verbindungsnetzwerken, die bis heute bekannt sind. Viele andere Netzwerke können vom Hypercube efzient, d.h. mit konstantem Zeitverlust, simuliert werden. Der Hypercube stellt daher eine vielseitig einsetzbare parallele Maschine dar. In diesem Abschnitt wollen wir den Hypercube und seine wichtigsten Eigenschaften vorstellen. Denition 58. k Der Hypercube der Dimension wird mit Q(k) bezeichnet und ist wie folgt deniert: Q(k) = (Vk , Ek ) mit Vk = {0, 1}k Ek = {{u, v}; u, v ∈ {0, 1}k unterscheiden sich in genau einem Bit} Der Hypercube besitzt eine rekursive Struktur, d.h. der Hypercube der Dimension Satz 59. k k , k ≥ 2, enthält 2 Kopien des Hypercube der Dimension k − 1. (Eigenschaften des Hypercube) Der Hypercube Q(k) der Dimension besitzt die folgenden Eigenschaften: 2k k · 2k−1 1.) Q(k) besitzt 2.) Q(k) ist regulär vom Grad 3.) Der Durchmesser des Q(k) ist 4.) Die Bisektionsweite des Q(k) ist Knoten und 43 Kanten. k. k. 2k−1 . Die ersten 3 Aussagen des Satzes sind klar. auf den Beweis der vierten Aussage wird an dieser Stelle verzichtet. Für den Hypercube kann ein einfacher Routing-Algorithmus angegeben werden. Seien dazu beliebige Knoten des Q(k) mit teren bezeichne u = (uk−1 . . . u0 ) u(i), 0 ≤ i < k , und u, v ∈ {0, 1}k v = (vk−1 . . . v0 ). das Binärwort, das sich von Bit unterscheidet. Dann kann wie folgt eine Nachricht von u u Deswei- genau im nach v zwei i-ten geroutet werden: for if i := 0 k−1 to ui 6= vi do begin then begin schicke Nachricht von Knoten u nach Knoten u(i); u := u(i); end; end; Die Anzahl der Kanten, die der Routing-Algorithmus durchläuft, entspricht der Anzahl der Bits, in denen sich die Binärdarstellungen der Knoten v u und unterscheiden. Damit ndet der Routing-Algorithmus immer den kürzesten Weg zwischen u und v. Der Algorithmus ist also optimal. Im folgenden wollen wir weitere Eigenschaften des Hypercube untersuchen. Satz 60. Der Hypercube Q(k) ist knotensymmetrisch. Proof. Für x ∈ {0, 1}k das sich von durch x bezeichne wieder genau im i-ten δi (x) = x(i). Dann ist δi v = u(j), 0 ≤ j < k , Bit unterscheidet. Sei das Binärwort, δi : Vk 7→ Vk ein Automorphismus, denn für deniert {u, v} ∈ Ek mit gilt: ( {u(i), u(i)(j)}, {δi (u), δi (u(j))} = In beiden Fällen ist x(i), 0 ≤ i < k , {u(i), u}, {δi (u), δi (u(j))} falls i 6= j falls i=j eine Kante des Q(k). Da die Konkaten- ation von Automorphismen selbst wieder einen Automorphismus ergibt, kann der gesuchte Automorphismus ϕu,v ϕu,v (u) = v Y = δi mit ϕu,v deniert werden durch: i ui 6=vi Satz 61. Der Hypercube Q(k) ist kantensymmetrisch. Proof. Seien {u, v} {u, v}, {u0 , v 0 } zwei Kanten des Q(k). Sei verläuft, d.h. u = uk−1 . . . ui . . . u0 v = uk−1 . . . ui . . . u0 44 i die Dimension, in der j und sei die Dimension, in der {u0 , v 0 } verläuft, d.h. u0 = u0k−1 . . . u0j . . . u00 v 0 = u0k−1 . . . u0j . . . u00 Sei π : {0, . . . , k − 1} → {0, . . . , k − 1} bezeichne ⊕ morphismus eine Permutation mit π(j) = i und die logische XOR-Verknüpfung. Dann kann der gesuchte Auto- ϕ : Vk → Vk deniert werden durch: ϕ(xk−1 . . . x0 ) = ((xπ(k−1) ⊕ uπ(k−1) ⊕ u0k−1 ) . . . (xπ(0) ⊕ uπ(0) ⊕ u00 )) Wir müssen zeigen: ϕ(u) = u0 (i) ϕ (ii) und ϕ(v) = v 0 ist Automorphismus, d.h. {z1 , z2 } ∈ Ek ⇔ {ϕ(z1 ), ϕ(z2 )} ∈ Ek (i): Für ϕ(u) ergibt sich: ϕ(uk−1 . . . u0 ) = ((uπ(k−1) ⊕ uπ(k−1) ⊕ u0k−1 ) . . . (uπ(0) ⊕ uπ(0) ⊕ u00 )) = u0k−1 . . . u00 = u0 und ϕ(v) berechnet sich zu: ϕ(vk−1 . . . v0 ) = ((vπ(k−1) ⊕ uπ(k−1) ⊕ u0k−1 ) . . . (vπ(0) ⊕ uπ(0) ⊕ u00 )) dabei gilt für 0 ≤ h < k: ( vπ(h) = daraus folgt: uπ(h) , ui , falls falls π(h) 6= i, d.h. h 6= j h=j ϕ(vk−1 . . . v0 ) = ((uπ(k−1) ⊕ uπ(k−1) ⊕ u0k−1 ) . . . (ui ⊕ ui ⊕ u0j ) . . . (uπ(0) ⊕ uπ(0) ⊕ u00 )) = u0k−1 . . . u0j . . . u00 = v 0 (ii): Sei z1 {z1 , z2 } eine Kante des Q(k). Sei r das Bit, in dem sich die Binärworte und und z2 ϕ(z2 ) unterscheiden. Sei im Bit s. π(s) = r. Daraus folgt: Nach (i) unterscheiden sich ϕ(z1 ) {ϕ(z1 ), ϕ(z2 )} ∈ Ek . Zur Erinnerung: Ein Hamilton-Kreis ist ein Kreis, der jeden Knoten genau einmal besucht und an den Ausgangsknoten zurückkehrt. Lemma 62. Der Hypercube Q(k), k ≥ 2, 45 enthält einen Hamilton-Kreis. Abbildung 5.1: Das 2-dimensionale Gitter M[3, 5] k=2 Proof. Ind. Anf.: Der gesuchte Hamilton-Kreis lautet: Ind. Schritt: 00 → 01 → 11 → 10 → 00. k 7→ k + 1 Der Hypercube Q(k + 1) ist aus zwei disjunkten Kopien des Q(k) zusammengesetzt. Nach Ind.Vor. enthalten beide Kopien einen Hamilton-Kreis Ck . Durch Verschmelzen der beiden Kreise kann ein Hamilton-Kreis Ck+1 in Q(k +1) konstruiert werden. Sei dazu auf 5.2 Ck . Der Kreis Ck+1 {u, v} ∈ Ek eine beliebige Kante wird wie folgt gebildet: {0u, 0v}, {1u, 1v} 1.) Streichen der Kanten 2.) Hinzufügen der Kanten {0u, 1u}, {0v, 1v} Gitter und Torus Denition 63. (d-dimensionales Gitter) Das d-dimensionale Gitter wird mit M[n1 , . . . , nd ] bezeichnet und ist wie folgt deniert: M[n1 , . . . , nd ] = (V, E) mit V = {(i1 , . . . , id ); 1 ≤ iν ≤ nν für 1 ≤ ν ≤ d} E = {{(i1 , . . . , id ), (j1 , . . . , jd )}; ∃ 1 ≤ κ ≤ d mit jκ = iκ + 1 und iν = jν für ν 6= κ} Abbildung 5.1 zeigt das 2-dimensionales Gitter M[3, 5]. Man kann es sich auch als Matrix vorstellen, in der aneinandergrenzende Zellen (ohne Berücksichtigung von Diagonalen) miteinander durch eine Kante verbunden sind. Ein Torus ist einem Gitter sehr ähnlich. Allerdings haben beim Torus alle Knoten Grad 4. Dies wird erreicht, indem jeder Knoten am Rand eines Gitters durch eine Kante mit einem Knoten am gegenüberliegenden Rand verbunden wird, siehe dazu Abbildung 5.2. Der Algorithmus zur Bestimmung der transitiven Hülle eines Graphen und seine Implementierung auf einem Gitter kann im Buch von Leighton [7] nachgeschlagen werden. 46 Abbildung 5.2: Der 2-dimensionale Torus 5.3 T[3, 5] Lastbalancierung Gegeben sei ein Rechnernetz mit vielen Prozessoren. Jeder Prozessor hat eine gewisse Last, die er zu verarbeiten hat. Bis zur gemeinsamen Lösung eines Problems muss man immer auf den am längsten rechnenden Prozessor warten. Daher ist es für eine eziente Nutzung eines Parallelrechners entscheidend, dass alle Prozessoren gleich stark ausgelastet sind. Algorithmisch stellen wir uns daher die Frage, wie ohne zentrale Steuerung eine möglichst schnelle Balancierung erreicht werden kann. Unsere Modellannahme ist, dass die Prozessoren in jedem Schritt nur ihre eigene Last und die ihrer Nachbarn kennen und mit ihnen in einer Runde Last austauschen können? Weiterhin sind die Lasten beliebig aufteilbar (also durch reelle Zahlen repräsentierbar). Bevor wir einen geeigneten Lastbalancierungsalgorithmus vorstellen, benötigen wir zunächst einige Grundlagen aus der linearen Algebra. Denition 64. Seien im folgenden n ∈ N, x, y ∈ Rn P i |xi | x hx, yi = verwenden wir die Summennorm ||x||1 = x und y bzw. meistens die euklidische Norm c) Die Matrix AT = (aji ) ∈ Rn×n d) Eine Matrix A p ||x||2 = hx, xi. heiÿt transponierte Matrix von heiÿt symmetrisch, wenn e) Das Matrix-Vektorprodukt A = (aij ) ∈ Rn×n . ist deniert durch a) Das Skalarprodukt zweier Vektoren Pn i=1 xi · yi . b) Als Norm eines Vektors und y = Ax A = AT A. gilt. ist deniert durch yi = Pn j=1 aij · xj = hAi• , xi. f ) Die Norm einer Matrix A ist durch 47 ||A|| = supx6=0 ||Ax|| deniert. ||x|| g) λ heiÿt Eigenwert der Matrix u gilt. Alle Vektoren Eigenwert λ mit A, wenn Au = λ · u Au = λ · u für ein u ∈ Rn , u 6= 0, heiÿen dann Eigenvektoren zum A. von h) Das charakteristische Polynom der Matrix A ist deniert durch fA (λ) = det(A − λEn ). Ohne Beweis geben wir die folgenden drei Sätze an: Satz 65. Seien A, B ∈ Rn×n 1.) ||A · B|| ≤ ||A|| · ||B|| 2.) ||Ax|| ≤ ||A|| · ||x|| Satz 66. Sei A ∈ Rn×n . λ und x ∈ Rn . ist genau dann ein Eigenwert von Nullstelle des charakteristischen Polynoms Satz 67. A ∈ Rn×n Sei Dann gilt: fA A, wenn λ eine ist. symmetrisch. Dann besitzt A nur reelle Eigenwerte und die Eigenvektoren zu verschiedenen Eigenwerten bilden eine Orthogonal-Basis Rn . des Satz 68. A. von Sei A ∈ Rn×n symmetrisch und λ1 ≤ λ2 ≤ . . . ≤ λn die Eigenwerte Dann gilt: λ1 = min x6=0 Proof. Sei u1 , . . . , un Eigenwerten hAx, xi hx, xi und λn = max x6=0 hAx, xi hx, xi eine Orthogonal-Basis aus Eigenvektoren von λ1 , . . . , λn . Jedes x ∈ Rn A zu den läÿt sich als Linearkombination der ui schreiben: x= n X αi ∈ R αi ui , i=1 n X =⇒ Ax = αi Aui = i=1 n X αi λi ui i=1 n n n X n X X X =⇒ hAx, xi = h αi λi ui , αj uj i = αi λi αj hui , uj i i=1 j=1 i=1 j=1 Da die Eigenvektoren paarweise senkrecht aufeinander stehen, gilt für hui , uj i = 0 i 6= j : hAx, xi = n X λi αi2 hui , ui i i=1 =⇒ Für x = un indem man hAx, xi ≤ λn hx, xi gilt ferner hAx, xi hAx,xi hx,xi mit λ1 n X ≤ λn hαi ui , αi ui i = λn hx, xi i=1 ∀x 6= 0 = λn . Die Aussage für λ1 nach unten abschätzt. 48 zeigt man entsprechend, Folgerung 69. Sei A ∈ Rn×n und λn der gröÿte Eigenwert der Matrix AT A. Dann gilt: ||A|| = Proof. p λn AT A ist symmetrisch und aus dem Beweis zu Satz 68 folgt für beliebige x ∈ Rn : ||Ax||2 = hAx, Axi = hAT Ax, xi ≤ λn hx, xi = λn ||x||2 p =⇒ ||A|| = λn , da für x = un die Gleichung Denition 70. G = (V, E) Sie V = {v1 , . . . , vn }. ||Ax||2 = λn ||x||2 ein beliebiger Graph mit Die Laplace-Matrix lij = erfüllt ist. n×n LG = (lij ) ∈ Z grad(vi ) , falls i=j −1 , falls (vi , vj ) ∈ E 0 n = |V | Knoten, ist deniert durch: , sonst Die Zeilensumme einer Laplace-Matrix LG ist nach Konstruktion immer 0. Es gilt also: LG Somit ist 0 1 . . . 1 = 0 . . . 0 =0· 1 . . . 1 ein Eigenwert jeder Laplace-Matrix und (1 . . . 1) ein zugehöriger Eigenvektor. Oensichtlich ist die Laplace-Matrix von ungerichteten Graphen symmetrisch. Nach Satz 67 sind daher alle Eigenwerte der Matrix reell und die zugehörigen Eigenvektoren bilden eine Orthogonal-Basis. Man kann ferner zeigen, dass alle Eigenwerte gröÿer gleich Null sind, 0 ist also der kleinste Eigenwert einer Laplace-Matrix. Ferner gilt, dass ein ungerichteter Graph genau dann zusammenhängend ist, wenn alle anderen Eigenwerte echt gröÿer als Null sind. Das Diusionsverfahren erster Ordnung (V, E), n = |V | und wi Gegeben ein Graph bezeichnet die Last des Knotens vi ∈ V . w G = ist der Lastvektor (w1 , . . . , wn ), A die Adjazenzmatrix von G. Setze α ∈ (0, maxi 1deg(i) ). Weiter sei wk der Lastvektor nach entlang der Kante (vi , vj ) k im Schritt Iterationsschritten und sei k. 49 k lij der Fluss Dann führt das Diusionsverfahren erster Ordnung (FOS) in Iteration k+1 folgende Operationen aus: k+1 lij = α(wik − wjk ) X k+1 wik+1 = wik − lij j∈N (i) X wik+1 = wik − α(wik − wjk ) = (1 − di α)wik + j∈N (i) X αwjk j∈N (i) In Matrixform: w1k+1 k+1 w2 . . . wnk+1 1 − d1 α 0 ... α ... α ... 0 1 − d2 α 0 0 α 0 0 {z α 0 wk+1 = M ·wk , wobei M ∈ Rn×n mit . . . .. α α 0 ... | Es folgt ... 0 ... ... = Es gilt also 0 . 0 ... n×n Matrix M wk+1 = M k+1 w0 . Weiterhin besitzt M α M = I −αL und wk ∈ Rn . nur reelle Eigenwerte und es gibt bilden. Lemma 71. Sei wn0 die initiale Lastverteilung in einem Graphen und sei w= n X wj j=1 G = (V, E) (1, . . . , 1) n die zugehörige balancierte Lastsituation. Sei w0 = Pn j=1 βj zj , dann gilt: w = β1 · z1 Proof. Es gilt wobei a ∈ R. λ1 = 1 > λ2 (falls G zusammenhängend), und z1 = a · (1, . . . , 1), Dann gilt: 0 w ,w = * n X + βj zj , w j=1 = * n X βj zj , j=1 da (1, . . . , 1) n X wj j=1 n + (1, . . . , 1) zu allen Eigenvektoren auÿer * = β1 z1 , n X wj j=1 n senkrecht steht: + (1, . . . , 1) * = z1 β1 a(1, . . . , 1), n X wj j=1 50 n + (1, . . . , 1) k w2 · . . . . . . wnk 1 − dn α } α n aufeinander stehende Eigenvektoren z1 , . . . , zn , die eine Orthonormalbasis im Rn w1k und nehmen wir nun die folgende Gleichheit an: = wobei w = b · β1 · z1 . 1 hw, wi , b Wir rechnen nach: P j=1 wj (w1 , . . . , wn ), (1, . . . , 1) n P Pn n X ( nj=1 wj )2 j=1 wj = = wj · n n j=1 P P j=1 wj j=1 wj hw, wi = (1, . . . , 1), (1, . . . , 1) n n P P X j=1 wj 2 ( nj=1 wj )2 = =n· n n2 i=1 0 w ,w = ⇒b=1 Seien µ1 ≥ µ2 ≥ . . . ≥ µn die Eigenwerte von die Eigenwerte der Laplace-Matrix Eigenwert λi . L. Sei zi M und λ1 ≤ λ2 ≤ . . . ≤ λn der Eigenvektor der Matrix L zum Dann folgt: M · zi = (I − αL)zi = Izi − αLzi = zi − αλi zi = (1 − αλi )zi . Da die Eigenwerte von L alle nicht negativ sind, ist λ1 = 0 Wie bereits festgestellt, gilt L positiv semi-denit. und der zugehörige Eigenwert ist z1 = (1, . . . , 1). Man kann zeigen, dass 0 ein einfacher (d. h. einfach vorkommender) Eigenwert von 0 Denition 72. Lemma 73. in G. Seien Sei Sei k = wk − w zusammenhängend ist. der Fehler nach k Iterationsschritten. 0 ein Graph und sei w die initiale Lastsituation P R: w0 = ni=1 βi zi . Dann gilt: n X 0 = βi zi i=2 G = (V, E) β1 , . . . , βn ∈ Proof. 0 = w0 − w = k G genau dann ist, wenn Sei k i=1 0 βi · zi − w = G = (V, E) k ein Graph, sei Diusion mittels der Diusionsmatrix k n X βi zi − β1 z1 i=1 0 = w − w = M w − M w = M (w − w) = M k · 0 Satz 74. k n X w0 M die initiale Lastsituation und führe durch. Dann gilt: kk k2 ≤ max{|µ2 |, |µn |}k · k0 k2 51 Kapitel 6 Bisektionsweite und Partitionierung In diesem Kapitel betrachten wir Probleme aus der Graphpartitionierung. Dabei versucht man, Knotenteilmengen zu identizieren, in denen je nach Problemstellung möglichst wenige oder möglichst viele externe Kanten (also solche, die zu Knoten aus anderen Teilmengen führen) existieren. Weiterhin betrachten wir die Bisektionsweite von Graphen. Die Bisektionsweite ist eine wichtige Eigenschaft eines parallelen Rechnernetzes, da eine kleine Bisektionsweite auf mögliche Engpässe bei der Informationsverteilung im Netz hinweist. Dazu denieren wir: Denition 75. V mit G = (V, E) Sei . V1 ∪ V2 = V eine Partition des Graphen. Die Menge Ext(V1 , V2 ) {{u, v} ∈ E; u ∈ V1 , v ∈ V2 }, V2 die Menge der Kanten, die zwischen verlaufen, heiÿt Schnitt der Partition. ext(V1 , V2 ) die Kantenanzahl des Schnitts. Eine Partition | |V1 | − |V2 | | ≤ 1 gilt. Denition 76. Sei σ(G) V1 , V2 ⊂ ein ungerichteter Graph. Dann ist G = (V, E) = |Ext(V1 , V2 )| V1 , V2 V1 = und stehe für heiÿt balanciert, wenn ein ungerichteter Graph. Die Bisektionsweite ist deniert als: σ(G) = min{ext(V1 , V2 ); V1 , V2 ist eine balancierte Partition von G} In Abschnitt 6.1 werden Verfahren zur Berechnung von unteren Schranken für die Bisektionsweite vorgestellt. In Abschnitt 6.2 werden obere Schranken für die Bisektionsweite von regulären Graphen bewiesen und auf eine Anwendung der Ergebnisse beim Bau von Transputer-Systemen hingewiesen. 52 6.1 Untere Schranken für die Bisektionsweite In diesem Abschnitt werden zwei Verfahren vorgestellt, mit denen sich untere Schranken für die Bisektionsweite von Graphen berechnen lassen. Solche unteren Schranken sind insbesondere in den Fällen nützlich, in denen sich auch eine Partition mit entsprechender Gröÿe nden läÿt, da so die Bisektionsweite eines Graphen bestimmt werden kann. In Satz 81 wird beispielsweise bewiesen, Q(k) dass die Bisektionsweite des Hypercube eine Gröÿe von 2k−1 besitzt. Al- lerdings liefert keines der beiden hier vorgestellten Verfahren für alle Graphen scharfe untere Schranken. 6.1.1 Verfahren von Leighton Das Verfahren von Leighton verwendet ein vollständiges Wegesystem und die sich daraus ergebende maximale Kantenbelastung, um die Bisektionsweite eines Graphen nach unten abzuschätzen. Denition 77. Wegesystem v. nach Kante e Für W (Wegesystem) Sei G = (V, E) deniert zu jedem Knotenpaar e ∈ E stehe cW (e) ∗ enthalten ist, und cW ein ungerichteter Graph. Ein (u, v) ∈ V 2 einen Weg von für die Anzahl der Wege von = max{cW (e); e ∈ E} W, u in denen für die maximale Kan- tenauslastung durch das Wegesystem. Man kann ein Wegesystem auch als eine Einbettung der Clique mit Knoten in G |V | ∗ ansehen. cW entspricht dabei der Kantenauslastung der Einbet- tung: Denition 78. (Einbettung) Seien G1 = (V1 , E1 ) und G2 = (V2 , E2 ) ungerich- tete Graphen. Eine injektive Abbildung in f : V1 → V2 heiÿt Einbettung von G1 G2 . Im allgemeinen werden benachbarte Knoten aus Knoten in G2 abgebildet. Um eine Einbettung von beschreiben, muss daher noch für jede Kante angegeben werden, der in G2 die Knoten G1 G1 {u, v} nicht auf benachbarte nach aus G1 G2 vollständig zu ein Weg Pf (u, v) f (u) und f (v) miteinander verbindet. Dieser Weg muss nicht unbedingt der kürzeste Weg zwischen f (u) und f (v) sein. Denition 79. (Kantenstreckung, Kantenauslastung) Seien und G2 = (V2 , E2 ) G2 . Dann ist die Kantenstreckung KS(f ) von ungerichtete Graphen. Sei 53 f f G1 = (V1 , E1 ) eine Einbettung von G1 in deniert als die maximale Abbildung 6.1: n2 Wege laufen über den Schnitt der Partition 2 Länge eines Weges aus zeichne ρ(e) {Pf (u, v); {u, v} ∈ E1 }. die Anzahl der Wege aus Für eine Kante {Pf (u, v); {u, v} ∈ E1 }, Dann ist die Kantenauslastung KA(f ) von f deniert als die V1 , V2 e ∈ E2 e be- enthalten. max{ρ(e); e ∈ E2 }. Kantenstreckung (Dilation) und Kantenauslastung (Congestion) sind wichtige Maÿe zur Beurteilung der Güte einer Einbettung. Kann G1 in G2 mit kon- stanter Kantenstreckung und konstanter Kantenauslastung eingebettet werden, so ist jeder Algorithmus für G1 auf G2 mit konstantem Zeitverlust simu- lierbar. Satz 80. (Satz von Leighton) Sei gerader Knotenanzahl Kantenauslastung c∗W . n = |V | und G = (V, E) W ein Wegesystem für V1 , V2 ⊂ V Partition von G (|V1 | · |V2 | . mit V1 ∪ V2 = V und G: |V1 | = |V2 | = n/2 = σ(G). viele Wege, die zwischen Knoten aus viele von Knoten aus V1 mit maximaler n2 2c∗W mit minimalem Schnitt ext(V1 , V2 ) 2 · |V1 | · |V2 | = n2 /2 G Dann gilt für die Bisektionsweite von σ(G) ≥ Proof. Sei ein ungerichteter Graph mit zu Knoten aus V2 eine balancierte Insgesamt gibt es V1 und V2 verlaufen und genausoviele in die andere Richtung), und jeder dieser Wege muss dabei (mindestens) eine der σ(G) vielen Kanten des Schnitts benutzen (Abbildung 6.1). Wir wissen aber ferner, dass jede Kante vom Wegesystem höchstens ∗ es laufen also höchstens cW · σ(G) c∗W -mal verwendet wird, Wege über den Schnitt. Daraus folgt: n2 n2 ≤ c∗W · σ(G) ⇐⇒ ≤ σ(G) 2 2c∗W 54 Wir wollen den Satz von Leighton verwenden, um die Bisektionsweite des Hypercube zu bestimmen. Satz 81. Q(k) (Bisektionsweite des Hypercube) Die Bisektionsweite des Hypercube beträgt 2k−1 . Proof. Wir bestimmen zuerst mittels des Satzes von Leighton und des in Abschnitt 5.1 angegebenen Routing-Algorithmus eine untere Schranke für die Bisektionsweite des W Q(k). Jeder Routing-Algorithmus deniert ein Wegesystem und zur Bestimmung der maximalen Belastung Wegesystem betrachten wir eine beliebige Kante {0, 1}k und 0 ≤ i < k, des Q(k). c∗W der Kanten durch das {u, u(i)}, u = uk−1 . . . u0 ∈ Die Kante kann vom Routing-Algorithmus in beiden Richtungen durchlaufen werden. Bestimmen wir zuerst die Anzahl der Wege, die die Kante von uk−1 . . . ui {0, 1} chen, von i u nach u(i) durchlaufen. Alle Knoten der Form können mittels des Routing-Algorithmus den Knoten u errei- u(i) aus können alle Knoten der Form {0, 1}k−i−1 ui ui−1 . . . u0 erreicht werden (Man beachte, dass die Kante vom Routing-Algorithmus nur im u Schleifendurchlauf verwendet wird). Das bedeutet, dass von gesamt i k−i−1 2 ·2 k−1 = 2 Wege laufen. Für die Richtung von verläuft die Analyse entsprechend, also wird die Kante von ∗ gen verwendet. Damit ist auch die maximale Belastung cW Bisektionsweite des Q(k) Q(k) u(i) nach 2 · 2k−1 = 2k k =2 ins- u We- und für die (2k )2 = 2k−1 2 · 2k lässt sich ferner einfach ein Schnitt mit Abbildung 6.2: Wähle beispielsweise u(i) folgt: σ(Q(k)) ≥ Für den nach i-ten Bisektion des Q(k) V1 = {0u; u ∈ {0, 1}k−1 } (Abbildung 6.2). Insgesamt folgt also mit und 2k−1 Kanten nden. Kanten V2 = {1u; u ∈ {0, 1}k−1 } σ(Q(k)) = 2k−1 . 55 2k−1 6.1.2 Spektrale untere Schranke Das in diesem Abschnitt beschriebene Verfahren verwendet einen gänzlich anderen Ansatz als das Verfahren von Leighton. Die algebraischen Eigenschaften der Laplace-Matrix eines Graphen werden hier für die Bestimmung einer unteren Schranke der Bisektionsweite ausgenutzt. Satz 82. n = |V | Sei und G = (V, E) λ2 ein ungerichteter Graph mit gerader Knotenanzahl der zweitkleinste Eigenwert der Laplace-Matrix σ(G) ≥ λ2 · Proof. Da (1 . . . 1) LG . Dann gilt: n 4 Eigenvektor zum kleinsten Eigenwert 0 von LG ist, müssen x von λ2 nach Satz 67 senkrecht auf (1 . . . 1) stehen, d.h. es P hx, (1 . . . 1)i = ni=1 xi = 0 gelten. Wie im Beweis zu Satz 68 zeigt man alle Eigenvektoren muÿ dann, dass hLG x, xi hx, xi λ2 = min Px6=0 xi =0 gilt. Wir betrachten nun eine minimale balancierte Partition es ist |V1 | = |V2 | = n/2 und ext(V1 , V2 ) y ∈ Zn : ( −1 yi = +1 = σ(G). V1 , V2 von G, d.h. Zu dieser Partition denieren wir wie folgt einen Vektor Oensichtlich ist Pn i=1 yi = 0 (y, y) ist Nachbarn von Knoten Pn i=1 vi . vi ∈ V1 , falls vi ∈ V2 und deshalb gilt: λ2 ≤ Der Wert von , falls (LG y, y) (y, y) yi2 = n. Sei im folgenden Für einen beliebigen Vektor (LG x, x) = = n X n X i=1 j=1 n X = lij xj = lii xi − X vj ∈N (i) |N (i)| · xi − X xj xi vj ∈N (i) X (xi − xj ) xi vj ∈N (i) X ((xi − xj )xi + (xj − xi )xj ) {vi ,vj }∈E = xj xi i=1 = gilt dann: xi i=1 n X x ∈ Zn die Menge der ! i=1 n X N (i) X (xi − xj )2 {vi ,vj }∈E 56 Für alle Kanten, die nicht zum Schnitt der optimalen Partition ist yi = yj ; für eine Kante des Schnitts gilt X (LG y, y) = (yi − yj )2 = {vi ,vj }∈E Zusammen mit (y, y) = n λ2 ≤ 6.2 X |yi − yj | = 2 (yi − yj )2 = {vi ,vj }∈ V1 , V2 gehören, und deshalb X 22 = 4 · σ(G) {vi ,vj }∈ Ext(V1 ,V2 ) Ext(V1 ,V2 ) erhalten wir schlieÿlich: 4 · σ(G) (LG y, y) = (y, y) n =⇒ σ(G) ≥ λ2 · n 4 Obere Schranken für die Bisektionsweite Nachdem wir im letzten Abschnitt Verfahren zur Berechnung von unteren Schranken der Bisektionsweite vorgestellt haben, dreht sich dieser Abschnitt um obere Schranken der Bisektionsweite. Für einen einzelnen Graphen lässt sich eine obere Schranke einfach durch Angabe einer balancierten Partition berechnen. Daher geht es in diesem Abschnitt um die Bestimmung von oberen Schranken für ganze Klassen von Graphen, nämlich für reguläre Graphen. Reguläre Topologien spielen aufgrund ihrer Regelmäÿigkeit weiterhin eine groÿe Rolle bei parallelen Architekturen. Wir verwenden im folgenden ausschlieÿlich konstruktive Verfahren. Dies bedeutet, dass diese Verfahren es ermöglichen, zu jedem Graphen aus der betrachteten Klasse einen Schnitt zu erzeugen, der höchstens so viele Kanten enthält, wie die obere Schranke vorgibt. Dazu denieren wir: Denition 83. σd (n) n (maximale Bisektionsweite regulärer Graphen) Für d∈N die maximale Bisektionsweite aller regulären Graphen vom Grad d sei mit Knoten, d.h. σd (n) = max{σ(G); G hat n Knoten und ist regulär vom Grad d} Transputer-Systeme Einleitend wollen wir uns kurz mit einer Anwendung von oberen Schranken für die Bisektionsweite beschäftigen, dem Bau von Transputer-Systemen. Denition 84. (Transputer) Ein Transputer-System ist ein Parallelrechner mit verteiltem Speicher, in dem spezielle Prozessoren, Transputer genannt, zum Einsatz kommen. Jeder Prozessor ist mit vier Kommunikationskanälen (Links) ausgerüstet, über die er direkt mit anderen Transputern verbunden werden kann. Der Datenaustausch zwischen den Prozessoren ndet ausschlieÿlich über diese Links statt. 57 Abbildung 6.3: Ein Transputer-System mit n Prozessoren und einem Switch Abbildung 6.4: Ein Transputer-System mit n Prozessoren und zwei Switches Die Art und Weise, in der ein Transputer-System verschaltet ist, wird dabei normalerweise nicht im voraus festgelegt, damit man (nach Möglichkeit) jeden beliebigen 4-regulären Graphen als Netzwerk-Topologie verwenden kann. Dabei kommen sogenannte Switches zum Einsatz; ein Switch mit n Kanälen kann seine Kanäle beliebig paarweise miteinander verschalten. Abbildung 6.3 zeigt, wie man mit einem Switch mit n 4n Kanälen ein Transputer-System mit Prozessoren realisieren kann. Switches mit vielen Kanälen sind technisch sehr aufwendig und teuer. Der Satz von Petersen (s. Satz 53 im Skript) zeigt eine Möglichkeit auf, wie man Transputer mit kleineren Switches bauen kann, ohne dabei die Flexibilität einzuschränken. Auf 4-reguläre Graphen angewandt bedeutet er, dass die Kanten in zwei Mengen aufgeteilt werden können und die so entstehenden Teilgraphen 2-regulär sind. Also kann man ein Transputer-System auch wie in Abbildung 6.4 aufbauen; jeder 4-reguläre Graph kann weiterhin direkt als Netzwerk-Topologie verwendet werden, indem die Kanten in zwei Partition aufgeteilt werden und die erste Kantenpartition dem oberen Switch und die zweite dem unteren Switch zugewiesen wird. Will man mit noch kleineren Switches ein Transputer-System aufbau- ? en, kann man dies wie in Abbildung 6.5 tun (siehe [ ]). Die Frage, die sich dabei stellt, ist, wie viele Kanten man zwischen den beiden Blöcken vorsehen muÿ, um gewährleisten zu können, dass man immer noch jeden 4-regulären Graphen direkt auf dem Transputer-System abbilden kann. Man kann zeigen, 58 Abbildung 6.5: dass man mit durch σ4 (n) + 1 bσ4 (n)/2c bσ4 (n)/2c − 1 Ein Transputer-System mit n Prozessoren und vier Switches Kanten auskommt. Die oberen Switches sind dabei Kanten miteinander verbunden, die unteren Switches durch Kanten; ferner benötigt man noch zwei Kanten, die die obe- ren mit den unteren Switches verbinden. Es reichen also vier Switches mit je mindestens n + bσ4 (n)/2c + 1 Kanälen, um das Transputer-System zu bauen. Die Methode der hilfreichen Mengen Es verbleibt, den Wert von σ4 (n) möglichst genau zu ermitteln. Mit dieser Auf- gabe beschäftigen wir uns im restlichen Kapitel. Wir beweisen zunächst eine obere Schranke für die Bisektionsweite von regulären Graphen mit geradem Grad. Das dabei verwendete Verfahren wird anschlieÿend verfeinert, um eine schärfere Schranke für reguläre Graphen vom Grad 4 zu beweisen. Denition 85. (externer/interner Knotengrad) Sei G = (V, E) ein ungerich. teter Graph und V1 ∪ V2 = V eine Partition von G. Für einen Knoten v ∈ V1 ist sein externer bzw. interner Knotengrad extV1 ,V2 (v) bzw. intV1 ,V2 (v) deniert durch: Für einen Knoten extV1 ,V2 (v) = |{ {v, w} ∈ E; w ∈ V2 }| intV1 ,V2 (v) = |{ {v, w} ∈ E; w ∈ V1 }| v ∈ V2 ist sein externer bzw. interner Knotengrad entspre- chend deniert. Wenn klar ist, auf welche Partition wir uns beziehen, schreiben wir für den externen bzw. internen Knotengrad eines Knotens Oensichtlich gilt für alle Knoten Satz 86. N, n v v einfach ext(v) bzw. int(v). eines Graphen ext(v) + int(v) = grad(v). (obere Schranke für reguläre Graphen mit geradem Grad) Seien gerade. Dann gilt: σ2d (n) ≤ d · 59 n 2 d, n ∈ Proof. Sei G = (V, E) ein beliebiger regulärer Graph vom Grad 2d mit n . Knoten und V1 ∪ V2 = V eine beliebige balancierte Partition von G. Wir geben einen einfachen Hill-Climbing-Algorithmus an, der die Partition in eine balancierte Partition mit einem Schnitt kleiner gleich V1 , V2 d·n/2 umwandelt. Wir teilen dazu die Knoten des Graphen bezüglich der aktuellen Partition in drei Klassen A, B und C ein. Ein Knoten v∈V A-Knoten, falls ext(v) >d B-Knoten, falls ext(v) =d C-Knoten, falls ext(v) <d ist ein gilt. Beim Verschieben eines Knotens auf die andere Seite der Partition ändert sich der Schnitt in Abhängigkeit von der Klasse, zu der der Knoten gehört. Das Verschieben von einem A-Knoten verkleinert den Schnitt B-Knoten läÿt den Schnitt unverändert C-Knoten vergröÿert den Schnitt Der Hill-Climbing-Algorithmus sieht nun wie folgt aus: V2 do Verschiebe gefundenen A-Knoten von V1 while Es gibt A-Knoten in V1 und nach V2 Verschiebe gefundenen A- oder B-Knoten von V2 nach V1 od Die Verschiebe-Operationen im Schleifenrumpf sind wohldeniert. Das erste Verschieben eines A-Knotens von V1 nach V2 ist oensichtlich möglich. Dadurch kann sich der externe Knotengrad von Knoten in V2 höchstens um 1 verringern, d.h. danach existiert mindestens noch ein A- oder B-Knoten in In jedem Schleifendurchlauf wird ein Knoten von Knoten von V2 nach V1 V1 V2 . nach V2 und ein verschoben, die Partition bleibt also balanciert. Ferner wird der Schnitt der Partition in jedem Schleifendurchlauf echt kleiner, da mindestens ein A- und ein B-Knoten verschoben werden. Daraus folgt auch, dass der Algorithmus terminiert, da ein Schnitt nur endlich oft verkleinert werden kann. Nach der Terminierung enthält O.B.d.A. enthalte V1 V1 oder V2 keine A-Knoten mehr. keine A-Knoten mehr. Für den Schnitt gilt dann: ext(V1 , V2 ) = X ext(v) v∈V1 ≤ X v∈V1 60 d=d· n 2 Abbildung 6.6: Beispiele für hilfreiche Mengen von 4-regulären Graphen Die gerade beschriebene Idee wollen wir verwenden, um für reguläre Graphen vom Grad 4 eine bessere obere Schranke der Bisektionsweite anzugeben. Dabei werden (ausgehend von einer beliebigen balancierten Partition) pro Runde nicht mehr nur einzelne Knoten, sondern Knotenmengen verschoben. Denition 87. . V1 ∪ V2 = V (S ⊆ V2 ) (hilfreiche Menge) Sei eine Partition von heiÿt k -hilfreiche den Schnitt ext(V1 , V2 ) um G G = (V, E) und k ∈ Z. ein ungerichteter Graph, Eine Knotenmenge Menge, wenn das Verschieben von k S nach S ⊆ V1 V2 (V1 ) vermindert. Abbildung 6.6 zeigt Beispiele für hilfreiche Mengen. Der sich für reguläre Graphen vom Grad 4 ergebende Algorithmus zur Bestimmung einer Partition mit kleinem Schnitt sieht grob wie folgt aus: Solange wie möglich do 1.) Verschiebe 4-hilfreiche Menge von V1 2.) Balanciere die Partition mittels einer nach V2 (−2)-hilfreichen Menge od Insgesamt wird der Schnitt dadurch in jedem Schleifendurchlauf um 2 Kanten kleiner. Das Finden einer 4-hilfreichen Menge wird später in Satz 89 behandelt. Kommen wir zunächst dazu, wie man Partitionen balancieren kann, ohne den Schnitt um mehr als 2 Kanten zu vergröÿern. Satz 88. Sei G = (V, E) ein ungerichteter Graph vom Grad 4 mit gerader . Knotenanzahl n = |V |. Zu einer Partition V1 ∪ V2 = V mit |V1 | ≤ |V2 | und . 4 · |V2 | < 5 · ext(V1 , V2 ) + 2 lässt sich eine balancierte Partition U1 ∪ U2 = V mit ext(U1 , U2 ) Proof. Sei e = ≤ ext(V1 , V2 ) + 2 konstruieren. ext(V1 , V2 ) die Gröÿe des ursprünglichen Schnitts. Für den Beweis teilen wir die Knoten bezüglich der aktuellen Partition in vier Klassen 61 v∈V ein. Ein Knoten ist ein A-Knoten, falls ext(v) ≥3 B-Knoten, falls ext(v) =2 C-Knoten, falls ext(v) =1 D-Knoten, falls ext(v) =0 Zuerst modizieren wir die Partition derart, dass in Knoten vorkommen und die Bedingung V2 nur noch C- und D- 4 · |V2 | < 5 · ext(V1 , V2 ) + 2 weiterhin erfüllt ist. while |V1 | < |V2 | do if Es existiert A- oder B-Knoten in V2 Verschiebe A- bzw. B-Knoten von elseif ext(V1 , V2 ) <e V2 then nach V1 then Verschiebe C-Knoten von V2 V1 nach else Breche Schleife ab od Es werden alle A- und B-Knoten von V2 die Knotenanzahl von V2 nach V1 verschoben. Dadurch kann sich und die Gröÿe des Schnitts verkleinern. Hat sich der Schnitt verkleinert, ist unter Umständen die Bedingung 2 4·|V2 | < 5·ext(V1 , V2 )+ nicht mehr erfüllt. Deshalb werden dann so lange C-Knoten von V2 verschoben, bis die ursprüngliche Schnittgröÿe wieder erreicht ist; in nach V2 V1 kann es nicht nur D-Knoten geben, da der Graph sonst nicht zusammenhängend wäre. Im Verlauf dieser Modikationen kann es passieren, dass bereits eine ≤ e) balancierte Partition (mit einem Schnitt gefunden wird. In diesem Fall ist der Satz bewiesen. |V1 | < |V2 | Wir können nun also annehmen, dass 5 · ext(V1 , V2 ) + 2 gilt. Ferner enthält V2 und 4 · |V2 | < nur C- und D-Knoten. Im folgenden betrachten wir die Zusammenhangskomponenten, die nur aus C-Knoten bestehen, genauer. Sei dazu nur aus C-Knoten in komponente hat ferner besitzt höchstens aus V2 von C C C C ⊆ V2 V2 eine beliebige Zusammenhangskomponente, die besteht, mit mindestens genau c c−1 verbinden. Somit ist V1 Knoten. Als Zusammenhangs- Kanten, die innerhalb von externe Kanten zu Knoten aus 4c − 2(c − 1) − c = c + 2 nach c = |C| C Kanten, die mindestens C V1 . 62 verlaufen; Es verbleiben also mit den restlichen Knoten (−2)-hilfreich, d.h. das Verschieben vergröÿert den Schnitt höchstens um 2; enthält Kreis, so ändert sich der Schnitt nicht. C C gar einen Wir zeigen im folgenden, dass es in V2 immer eine Zusammenhangskom- ponente aus C-Knoten mit einen Kreis gibt. Unter dieser Voraussetzung läÿt sich die Partition oensichtlich wie folgt balancieren, ohne den Schnitt um mehr als 2 Kanten zu vergröÿern: while Sei if |V1 | < |V2 | C do eine Zusammenhangskomponente mit Kreis aus C-Knoten in |C| < (|V2 | − |V1 |)/2 V2 then Verschiebe alle Knoten aus C von V2 nach V1 /* Der Schnitt bleibt unverändert. */ else Sei /* C0 ⊆ C C0 eine Zusammenhangskomponente mit (|V2 | − |V1 |)/2 Knoten enthält nicht unbedingt einen Kreis. */ Verschiebe alle Knoten aus C0 von V2 nach V1 /* Die Partition ist balanciert; maximal 2 zusätzliche Kanten im Schnitt. */ od Es verbleibt zu zeigen, dass es in V2 immer eine Zusammenhangskomponente aus C-Knoten mit einem Kreis gibt. Es gibt keine Zusammenhangskomponente aus C-Knoten mit Kreis. Es gibt in C-Knoten mit Kreis. Sei C (D) V2 eine Zusammenhangskomponente aus die Menge aller C-Knoten (D-Knoten) in V2 , c = |C| (d = |D|) deren Anzahl und ext(C, D) die Anzahl der Kanten zwischen Knoten aus C und D. Oensichtlich gilt ext(C, D) = 4d−2·int(D) ≤ 4d. Ferner bilden nach unserer Annahme die C-Knoten einen Wald, d.h. es verlaufen maximal c−1 Kanten innerhalb von ext(C, D) C. Also: = 4c − 2 · int(C) − ext(C, V1 ) ≥ 4c − 2(c − 1) − c = c + 2 =⇒ 4d ≥ ext(C, D) ≥ c + 2 c + d = |V2 | Zusammen mit und c = ext(V1 , V2 ) folgt: 4 · |V2 | = 4(c + d) = 4c + 4d ≥ 4c + c + 2 = 5c + 2 = 5 · ext(V1 , V2 ) + 2 Dies ist oensichtlich ein Widerspruch zu der Voraussetzung ext(V1 , V2 ) 4 · |V2 | < 5 · + 2. Nachdem wir gesehen haben, wie sich Partitionen balancieren lassen, folgt nun ein Verfahren, mit dem sich (kleine) 4-hilfreiche Mengen in balancierten Partitionen nden lassen. Satz 89. Sei G = (V, E) der Knotenanzahl n = |V | ein ungerichteter Graph vom Grad 4 mit gera. und V1 ∪ V2 = V eine balancierte Partition mit 63 ext(V1 , V2 ) > n/2 + 1. Dann lässt sich entweder eine balancierte Partition mit kleinerem Schnitt oder eine 4-hilfreiche Menge H mit |H| ≤ 6dlog ne+2 nden. Proof. Der Beweis wurde in der Vorlesung nicht geführt. Der Vollständigkeit halber wird er aber ins Skript aufgenommen. Wir unterscheiden zwei Fälle. 1. Fall: V1 V2 und enthalten je mindestens einen A-Knoten Durch das Vertauschen von einem A-Knoten aus aus V2 V1 mit einem A-Knoten wird der Schnitt um mindestens 2 kleiner und die resultierende Partition ist balanciert. 2. Fall: V1 oder V2 enthält keine A-Knoten O.B.d.A. enthalte V1 keine A-Knoten. Wir zeigen, dass chend kleine 4-hilfreiche Menge enthält. der B-, C- bzw. D-Knoten in ext(V1 , V2 ) = 2b + c > n/2 + 1. V1 . b, c Es gilt bzw. d einem Knoten stehe V1 und T (v) s(v) und =⇒ b≥d+2 V1 . Wir führen von eine Baumsuche durch. Dabei führen wir die Suche an w nicht weiter fort, wenn es sich bei w um einen D-Knoten handelt oder der Abstand von v stehe für die Anzahl Also: Das heiÿt, es gibt (mindestens zwei) B-Knoten in v eine hinrei- b + c + d = |V1 | = n/2 2b + c ≥ n/2 + 2 = b + c + d + 2 jedem B-Knoten V1 w zu v dlog ne beträgt. Für jeden B-Knoten für den sich aus der Baumsuche ergebenden Teilgraph von für die Anzahl der D-Knoten in T (v). Nach Konstruktion haben alle Knoten in T (v) einen Abstand ≤ dlog ne zur Wurzel und innerhalb des kürzesten Weges von einem Knoten zur Wurzel liegt kein D-Knoten. Bei den inneren Knoten eines kürzesten Weges handelt es sich also nur um B- oder C-Knoten. Wie Abbildung 6.7 zeigt, hat ein solcher innerer Pfad, unabhängig von seiner Länge, keinen Einuÿ auf die Hilfreichheit; wie hilfreich ein kürzester Weg ist, entscheiden die beiden Endknoten. Kommt im inneren Pfad ein BKnoten vor, erhöht sich die Hilfreichheit des gesamten Weges dadurch sogar noch; für die folgenden Argumentationen genügt es zu wissen, dass ein innerer Pfad die Hilfreichheit nicht verschlechtert. In den weiteren Abbildungen wird deshalb ein solcher innerer Pfad nur gepunktet dargestellt. 64 Abbildung 6.7: Innere Knoten haben keinen Einuÿ darauf, ob ein Pfad hilf- reich ist a) Es ist s(v) ≥ 2 In allen für alle B-Knoten T (v)-Teilgraphen v. zusammen tauchen mindestens ten zu D-Knoten auf. Wegen b≥d+2 Kanten. Da andererseits insgesamt nur 2b sind das mindestens Kan- 2d + 4 4d D-Kanten existieren, gibt es entweder einen D-Knoten, der zu 4 Teilgraphen gehört oder 2 DKnoten, die in jeweils 3 Teilgraphen vorkommen. Im ersten Fall haben wir eine ne (4dlog ne + 1)-elementige (6dlog ne + 2)-elementige und im zweiten Fall ei- 4-hilfreiche Menge gefunden, wie die Abbildungen 6.8 und 6.9 zeigen. Abbildung 6.8: 4-hilfreiche Menge: D-Knoten kommt in 4 Suchbäumen vor 65 Abbildung 6.9: 4-hilfreiche Menge: zwei D-Knoten kommen in je 3 Suchbäu- men vor b) Es gibt einen B-Knoten Im Suchbaum von v v mit s(v) ≤ 1. kommt eine der drei 4-hilfreichen Mengen aus Abbildung 6.10 vor, d.h. T (v) enthält entweder zwei weitere B- Knoten, zwei Kreise oder einen weiteren B-Knoten und einen Kreis. Die Gröÿe der 4-hilfreichen Menge ist dabei maximal 4dlog ne + 1. dass eine dieser drei Konstellationen auftreten muÿ, zeigen wir mittels eines Widerspruchsbeweises. Abbildung 6.10: Ann.: Mögliche 4-hilfreiche Mengen in einem Suchbaum T (v) enthält höchstens einen weiteren B-Knoten oder einen Kreis, aber nicht beides. Wir zeigen, dass T (v) dann aus mehr als bestehen muÿ. Wir modizieren |V1 | = n/2 Knoten T (v), indem wir etwaige Kreis- kanten und D-Knoten löschen und anschlieÿend alle (inneren) Knoten mit Grad 2 (auÿer der B-Wurzel v ) durch eine entspre- chende Kante ersetzen. Der resultierende Graph T 0 (v) ist ein binärer Baum, in dem alle inneren Knoten zwei Söhne besitzen. Welche Knoten werden bei der Modikation durch eine Kante ersetzt? Zum einen der eventuell vorhandene B-Knoten bzw. 66 ein C-Knoten, dessen Kreiskante gelöscht worden ist (nur einer der beiden Fälle ist nach unserer Annahme möglich). Zum anderen ein Knoten, der Nachbar eines D-Knotens war. Davon kann es nach Voraussetzung ebenfalls maximal einen geben. In T 0 (v) ist also der Abstand eines jeden Knotens zur Wurzel T (v) bis zu einer Tiefe höchstens um 2 kleiner geworden. Da wir von dlog ne vollständigen binären Baum der Tiefe enthält also mindestens ist aus T (v) also enthält T 0 (v) einen geben. T 0 (v) Knoten. T 0 (v) aufgebaut haben, muÿ es deshalb in dlog ne − 2 2dlog ne−1 − 1 ≥ n/2 − 1 durch Entfernen zweier Knoten hervorgegangen, T (v) mindestens n/2 + 1 > |V1 | Knoten, was den gewünschten Widerspruch liefert. In Fazit: T (v) ist eine der drei 4-hilfreichen Mengen aus Abbildung 6.10 enthalten Mit den Ergebnissen der Sätze 88 und 89 läÿt sich nun eine obere Schranke für die Bisektionsweite von 4-regulären Graphen angeben. Satz 90. (obere Schranke für reguläre Graphen mit Grad 4) Sei gerade. Dann gilt: σ4 (n) ≤ Proof. Sei |V | G = (V, E) n ≥ 466, n n +1 2 ein beliebiger regulärer Graph vom Grad 4 mit n = . Knoten und V1 ∪ V2 = V eine beliebige balancierte Partition. Folgender Algorithmus berechnet eine balancierte Partition mit while ext(V1 , V2 ) > n/2 + 1 ≤ n/2 + 1 do Verkleinere Schnitt oder bestimme 4-hilfreiche Menge if 4-hilfreiche Menge H Kanten: H (Satz 89) gefunden then Verschiebe alle Knoten aus H auf die andere Seite der Partition Balanciere Partition mit (-2)-hilfreicher Menge (Satz 88) od Korrektheit und Terminierung des Algorithmus sind klar, wenn wir zeigen können, dass Satz 88 angewendet werden darf. Sei dazu die Partition, die sich nach dem Verschieben von H U1 , U2 mit |U1 | ≤ |U2 | ergibt. Es gilt |U2 | ≤ n/2+6dlog ne+2 und ext(U1 , U2 ) ≥ n/2−2. Um Satz 88 anwenden zu können, 67 Abbildung 6.11: Graph mit 12 Knoten und Bisektionsweite 10 muÿ gelten: 4 · |U2 | < 5 · ext(U1 , U2 ) + 2 n 5n n −8 =⇒ 4( + 6dlog ne + 2) = 2n + 24dlog ne + 8 < 5( − 2) + 2 = 2 2 2 n =⇒ − 24dlog ne > 16 2 =⇒ n ≥ 466 Durch eine etwas genauere Analyse läÿt sich Satz 89 noch verschärfen und Satz 90 gilt dann für n ≥ 340. Ohne Beweis geben wir im folgenden Satz weitere Ergebnisse zu der maximalen Bisektionsweite von regulären Graphen mit Grad 4 an. Satz 91. Sei n∈N gerade. Dann gilt: 1.) σ4 (n) ≤ n/2 + 4 für n mod 4 = 0 2.) σ4 (n) ≤ n/2 + 3 für n mod 4 = 2 3.) σ4 (n) ≤ n/2 + 1 für n ≥ 340 4.) σ4 (n) ≤ (0.4 + )n Für n ≤ 20 für n ≥ n() sind die Schranken 1.) und 2.) scharf. Abbildung 6.11 zeigt beispielsweise einen Graphen mit 12 Knoten und Bisektionsweite 10. 68 6.3 Maximale Schnitte in Graphen In diesem Kapitel behandeln wir den Approximationsalgorithmus von Goemans und Williamson für das MaxCut-Problem. Die Beschreibung des Algorithmus in der Vorlesung baut auf dem Buch von Rolf Wanka [8] auf, auf welches an Stelle einer Übertragung ins Skript verwiesen wird. 69 Literaturverzeichnis [1] West: Introduction to Graph Theory, Pretince Hall, 2nd ed., ISBN: 013-014400-2. [2] Chartrand, Oellermann: Applied and Algorithmic Graph Theory, McGraw-Hill, ISBN: 0-07-557101-3. [3] Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, MIT Press / McGraw-Hill, 2nd ed., ISBN: 0-262-53196-8. [4] Cormen, Leiserson, Rivest: Algorithmen - Eine Einführung, Oldenburg, ISBN: 3-486-27515-1. [5] Motwani, Raghavan: Randomized Algorithms, Cambridge University Press, ISBN: 0-52-147465-5. [6] Drake, Hougardy: A simple approximation algorithm for the weighted matching problem. Information Processing Letters, Volume 85, Issue 4, 28 February 2003, Pages 211-213. doi:10.1016/S0020-0190(02)00393-9. [7] Leighton: Einführung in parallele Algorithmen und Architekturen. Gitter, Bäume und Hypercubes. Internat. Thomson Publ., ISBN: 3-82660248-X. [8] Wanka: Approximationsalgorithmen - Eine Einführung, Teubner, ISBN: 3-519-00444-5. [9] Monien, Grothklags, Meyerhenke: Skript zur Vorlesung Algorithmen für synchrone Rechnernetze. 70