Algorithm Engineering – Eine Einführung – Vorlesung für BSc-Studierende der Informatik und Mathematik Anand Srivastav Lasse Kliemann Sommersemester 2015 Inhaltsverzeichnis 1 Das Algorithm Engineering Konzept 5 2 Graphen 9 3 Minimal Spannende Bäume 15 4 Bipartites Matching 19 4.1 Bipartite Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2 Matchingberechnung über augmentierende Pfade . . . . . . . . . . . . . . 20 4.3 Matching-Heuristiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.4 Generatoren für bipartite Graphen . . . . . . . . . . . . . . . . . . . . . 24 4.4.1 Gpn1 , n2 , pq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.4.2 Seil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.4.3 HiLo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.4.4 RBG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.5 Der Satz von Hall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.6 A Faster Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5 Streaming-Algorithmen 37 5.1 Das Semi-Streaming-Modell . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.2 Approximations-Theorie für Matching . . . . . . . . . . . . . . . . . . . . 40 5.3 Beschreibung des DAP-Approximationsalgorithm . . . . . . . . . . . . . 43 5.4 Analyse: Approximationsratio . . . . . . . . . . . . . . . . . . . . . . . . 49 5.5 Analyse: Pass-Garantie und Speicherbedarf . . . . . . . . . . . . . . . . . 52 3 Inhaltsverzeichnis 6 Lineare Programmierung – Dualitätssatz 4 55 6.1 Polyeder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.2 Farkas Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 6.3 Der Dualitätssatz der Linearen Programmierung . . . . . . . . . . . . . . 65 Kapitel 1 Das Algorithm Engineering Konzept Eines der fundamentalen Konzepte der Informatik ist der Entwurf und die Analyse von Algorithmen. Heutzutage sind effiziente Algorithmen Herzstücke von weltweit genutzten Anwendungssystemen, beispielsweise der Suchmaschine Google. Der wirtschaftliche Erfolg von Google hängt an der hohen Akkuranz und Effizienz der verwendeten Algorithmen. Eine neue Herausforderung ist die Verarbeitung von extrem großen Dateienmengen in algorithmischen Fragenstellungen: die Big Data Problematik. Big Data tritt mannigfach auf: in wirtschaftlichen Anwendungen (z. B. Cloud Computing), in wissenschaftlichen Fragen, wie in der Lebenswissenschaften, wo man versucht das Erbgut (DNA) von Organismen zu entschlüsseln, der Elementarteilchenphysik, der Astronomie und den großen Netzwerken, wie dem Internet und sozialen Netzwerken, wie Facebook und Twitter. Wirtschaftlicher Erfolg und wissenschaftlicher Fortschritt hängen mehr denn je vom Entwurf effizienter Algorithmen ab. Dies stellt den Entwurf von Algorithmen vor bisher ungekannte Probleme, denn es ist oftmals nicht möglich die Eingabedaten in dem Hauptspeicher (RAM) des Computers zu halten, schlicht, weil die Datenmenge viel zu groß ist (Terrabyte oder Petabyte Bereich). Traditionell hat sich die theoretische Informatik mit dem Entwurf und der Analyse von effizienten Algorithmen befasst. Dabei sind viele Probleme NP-schwer, so dass effiziente Algorithmen unter der Vermutung P ‰ N P ohnehin nicht entworfen werden können. Die Algorithmentheorie hat sich daher in den letzten 30 Jahren auf die effiziente Lösung von Teilproblemen oder den Entwurf von approximativ-optimalen Algorithmen konzentriert. Dabei wurde schon jede polynomielle Laufzeit als effizient angesehen. Oftmals sind die Algorithmen, die so analysiert wurden, sehr komplex und wurden auch aus diesem Grund nie implementiert und an relevanten Instanzen getestet. Das hat bei vielen Problemen dazu geführt, dass der algorithmische Fortschritt stagniert: man kennt zwar die bislang bewiesenen Performance-Garantien, aber kommt nicht darüber hinaus. Andererseits werden Algorithmen in der Praxis eingesetzt, auch wenn ihre theoretische Performance (z. B. Approximationsverhalten oder Laufzeit) bisher nicht beweisbar ist. Dieser Ansatz ist nicht nur in der Industrie, sondern auch in experimentellen Wissenschaften, beispielsweise der Physik, etabliert und erfolgreich. Leider sind beide Herangehensweisen, 5 Kapitel 1. Das Algorithm Engineering Konzept die theoretische Analyse einerseits und der Einsatz von hocheffizienten Heuristiken in der Praxis andererseits, bislang unzureichend sowohl von der agierenden Personen, aber vor allem wissenschaftlich unzureichend vernetzt gewesen. Umgekehrt darf man hoffen, dass eine enge Wechselwirkung beider Ansätze sowohl zum theoretisch-wissenschaftlichen Fortschritt als auch zum Praxiserfolg und zur Ausdehnung der Reichweite algorithmischer Anwendungen führen wird. Das Algorithmen Engineering setzt hier an. Es ist ein neues Konzept für den Entwurf, die Analyse und den praktischen Einsatz von Algorithmen, der die Interaktion dieser Paradigmen wissenschaftlich fundiert, integriert und in sich aufhebt. Im AE wird der Algorithmus als ein Objekt betrachtet, das durch wissenschaftlich fundierte Experimente behandelt und validiert werden kann. Dies kann man durchaus in Analogie zu der Methodik den experimentellen Naturwissenschaften sehen, wo Naturgesetze durch geeignete Experimente validiert werden und gleichzeitig der Modellcharakter der Gesetze als Hypothese erscheint, die durch neue Erkenntnisse falsifiziert werden kann. So werden auch bei der experimentellen Untersuchung von Algorithmen im Algorithmen Engineering falsifizierbare Hypothesen für interessierenden Eigenschaften von Algorithmen aufgestellt. In der Untersuchung werden diese entweder durch Gegenbeispiele widerlegt oder im besten Fall bewiesen. Dies ist allerdings nur ein Pfad des Algorithmen Engineering. Die Frage der Praktikabilität, des Einsatzes geeigneter Hardware, aber auch das Benchmarking gehören ebenfalls in die umfassende Sichtweise, die das AE fordert. Insgesamt kann dieses intergrativ-interaktive Konzept des Algorithmen Engineering durch den folgenden Designkreislauf dargestellt werden. 6 Abbildung 1.1. Zwei Sichtweisen der Algorithmik: Links: traditionell. Rechts: AE = Algorithmik als von falsifizierbaren Hypothesen getriebener Kreislauf aus Entwurf, Analyse, Implementierung und experimenteller Bewertung In diese Vorlesung werden wir eine Einführung in das Algorithmen Engineering geben und Aspekte der AE-Designkreislaufs an Beispielen demonstrieren. Der Schwerpunkt liegt auf der Wechselwirkung von Theorie, Implementierung und Experimenten. 7 Kapitel 2 Graphen Wir vereinbaren folgende Bezeichnungen. Ź N “ {1, 2, 3, . . .}, N0 :“ N Y {0}, für n P N setzen wir rns :“ {a P N ; a ď n}. Ź Für eine Menge M bezeichne PpM q :“ {T ; T Ď M } die Potenzmenge von M . Für M eine Menge M und n P N0 sei n :“ {T Ď M ; |T | “ n} die Menge der n-elementigen Teilmengen von M . Ist M endlich, so gilt M n ! ! |M | |M |! . “ “ n n!p|M | ´ nq! Ź Sei k P N und seien f, g : Nk Ñ Rě0 Abbildungen. Wir schreiben f pnq “ Opgpnqq, falls es c1 , c2 P Rą0 gibt, so dass für alle n P N gilt: f pnq ď c1 gpnq ` c2 , f pnq “ Ωpgpnqq, falls gpnq “ Opf pnqq, f pnq “ Θpgpnqq, falls f pnq “ Opgpnqq und f pnq “ Ωpgpnqq, f pnq nÑ8 f pnq “ opgpnqq, falls ÝÑ 0. gpnq Beispiel 2.1. Für f : N Ñ Rě0 , n ÞÑ 170n2 ` 13n ´ 21, g : N Ñ Rě0 , n ÞÑ n2 und h : N Ñ Rě0 , n ÞÑ log2 n gilt: f pnq “ Opgpnqq, hpnq “ Opgpnqq, gpnq “ Θpf pnqq, hpnq “ opgpnqq, hpnq “ Θpln nq. Definition 2.2 (Graphen). (i) Ein Hypergraph oder Mengensystem ist ein Tupel H “ pV, Eq, bestehend aus einer endlichen Menge V , der Knotenmenge und der Menge der Hyperkanten E Ď PpV q. (ii) Ein einfacher Graph ist ein Hypergraph, in dem alle Hyperkanten die Kardinalität genau zwei haben. Wir notieren Graphen in der Regel durch das Tupel G “ pV, Eq, wobei E Ă V2 . Eine Kante e hat die Form e “ {v, w}, v, w P V . Für einen Graphen G bezeichnet V pGq die Menge seiner Knoten und EpGq die Menge seiner Kanten. 9 Kapitel 2. Graphen ~ besteht aus einer endlichen Knotenmenge V und (iii) Ein gerichteter Graph G “ pV, Eq ~ Ď V ˆ V . Dabei interpretieren wir für eine Kante pv, wq P E ~ einer Kantenmenge E den Knoten v als Anfangs- und w als Endpunkt der Kante pv, wq. Man zeichnet pv, wq oft als Vektorpfeil mit Anfangspunkt v und Spitze w ein. Beispiel 2.3. (i) Hypergraph H “ p{1, 2, 3, 4, 5}, {{1, 2}, {1, 3, 5}, {2, 3, 4}}q (ii) (einfacher) Graph G “ p{1, 2, 3, 4, 5}, {{1, 2}, {1, 3}, {2, 4}, {3, 4}, {3, 5}, {4, 5}}q 10 (iii) gerichteter Graph G “ p{1, 2, 3, 4, 5}, {p1, 2q, p2, 1q, p3, 5q, p4, 5q}q Vereinbarung. Wenn im folgenden von einem Graphen die Rede ist – ohne nähere Angaben, zu welcher Klasse er gehört, so ist stets ein einfacher Graph mit n Knoten und m Kanten gemeint. Sei G “ pV, Eq ein Graph und n :“ |V | ą 0. Ź Zwei Knoten v, w P V heißen benachbart, falls {v, w} P E. Für v P V sei Γpvq :“ {w P V ; {v, w} P E} die Nachbarschaft von v und degpvq :“ |Γpvq| der Grad von v. Ź Für V 1 Ď V sei ΓpV 1 q :“ ⋃vPV 1 Γpvq die Nachbarschaft von V 1 . Ź Gibt es r P N mit degpvq “ r für alle v P V , so heißt G r-regulär. Ein Graph G1 “ pV 1 ,E 1q heißt Teilgraph von G, falls V 1 Ď V und E 1 Ď E. Gilt zusätzlich 1 E 1 “ E X V2 , so heißt G1 induzierter Teilgraph von G, und wir schreiben: G1 “ G|V 1 . Beispiele. 11 Kapitel 2. Graphen Ź Für V 1 Ď V und E 1 Ď E sei ! V zV 1 q und G ´ E 1 :“ pV, EzE 1 q. G ´ V :“ pV zV , E X 2 1 1 Für v P V schreiben wir statt G ´ {v} auch G ´ v, und analog für e P E statt G ´ {e} auch G ´ e. Ź G heißt vollständiger Graph. wenn E “ V2 und wir schreiben: G “ Kn . G heißt leerer Graph, wenn E “ H. Ein vollständiger Teilgraph heißt Clique, ein leerer induzierter Teilgraph heißt unabhängige Menge. ~ ein Ź Das Komplement von G ist der Graph Ḡ :“ Kn ´ E. Sei G P {pV, Eq, pV, Eq} einfacher oder gerichteter Graph und seien v, w P V . Ein Subgraph P heißt Weg von u nach v in G, kurz u-v-Weg, wenn V pP q “ {v1 , . . . , vk } und für alle i P rk ´ 1s gilt: ~ P heißt geschlossen, falls v1 “ vk . Einen Weg P {vi , vi`1 } P E (bzw. pvi , vi`1 q P E). notieren wir auch durch P “ v1 , . . . , vk . Ź Ist P “ v1 , . . . , vk ein Weg, so heißt |P | :“ k ´ 1 die Länge des Weges P . Ź Sind P1 “ v1 , . . . , vk und P2 “ w1 , . . . , wl zwei Wege mit vk “ w1 , so bezeichne P1 ˝ P2 den Weg v1 , . . . , vk , w2 , . . . , wl . Ź Ein Pfad ist ein Weg P mit |P | “ |V pP q| ´ 1, d.h. alle Knoten auf P sind verschieden. Achtung: Die Bezeichnung kommt aus der englischsprachigen Literatur, hier wird ein Pfad meist als “path” bezeichnet, während ein Weg “walk” genannt wird. Ź Ein Weg P “ v1 , . . . , vk , v1 heißt Kreis, falls |P | ě 3 und v1 . . . , vk ein Pfad ist. G heißt kreisfrei, wenn es keinen Kreis in G gibt. Ź Ein Graph G heißt zusammenhängend, wenn für alle v, w P V ein Weg von v nach w existiert. Ein zusammenhängender induzierter Teilgraph von G, der in keinem anderen 12 zusammenhängenden Teilgraphen von G echt enthalten ist, heißt Zusammenhangskomponente von G. G heißt Baum, wenn G kreisfrei und zusammenhängend ist. G heißt Wald, wenn G kreisfrei ist. Satz 2.4. Sei G “ pV, Eq ein Baum, n :“ |V |, m :“ |E|. Dann gilt m “ n ´ 1. Satz 2.5. Für einen Graph G sind folgende Aussagen äquivalent: (a) G ist ein Baum. (b) G ist ein minimaler zusammenhängender Graph. (c) G ist ein maximaler kreisfreier Graph. Beweis. (a) ùñ (b). Da G kreisfrei ist, zerstört die Entnahme einer Kante den Zusammenhang. (b) ùñ (c). Seien u, v P V . Da G zusammenhängend ist, gibt es einen Weg von u nach v. Fügt man die Kante {u, v} ein, so bildet sie zusammen mit dem Weg einen Kreis. (c) ùñ (a). Angenommen, G ist nicht zusammenhängend. Wähle zwei Zusammenhangskomponenten K1 und K2 . Zwischen diesen kann eine Kante eingefügt werden, ohne dass ein Kreis entsteht. Dies ist ein Widerspruch zu (c). Definition 2.6. Sei G “ pV, Eq ein zusammenhängender Graph. Ein Baum T “ pV, F q mit F Ď E heißt Gerüst oder aufspannender Baum von G. Satz 2.7. Jeder zusammenhängende Graph enthält einen aufspannenden Baum. Betrachte den folgenden Algorithmus. Algorithm 1: Aufspannender Baum Eingabe: Graph G “ pV, Eq, E “ {e1 , . . . , em }. Ausgabe: Ein aufspannender Baum von G. 1 2 3 4 T Ð pV, Hq; für i Ð 1 bis m tue wenn T ` ei kreisfrei dann T Ð T ` ei ; Ergebnis: T ; Der Beweis von Satz 2.7 ist eine Übungsaufgabe. 13 Kapitel 3 Minimal Spannende Bäume Lemma 3.1. Sei G “ pV, Eq ein Graph. Folgende Aussagen sind äquivalent. (a) G ist ein Baum. (b) Zwischen je zwei Knoten von G existiert genau ein Pfad. (c) G ist zusammenhängend und |E| “ |V | ´ 1. Problem 3.2 (Minimal aufspannender Baum (MST)). Eingabe Zusammenhängender Graph G “ pV, Eq, Kantengewichtsfunktion c : E Ñ Q. Aufgabe Finde einen aufspannenden Baum T “ pV, F q von G mit minimalem Gewicht, d.h. mit cpF q “ min {cpF 1 q ; T 1 “ pV, F 1 q ist Baum }. Algorithm 2: MST (Kruskal) Eingabe: G “ pV, Eq mit n :“ |V |, m :“ |E|, c : E Ñ Q. 1 2 3 4 5 T Ð pV, Hq; Sortiere die Kanten nach Gewicht: cpe1 q ď cpe2 q ď . . . ď cpem q; für i Ð 1 bis m tue wenn T ` ei kreisfrei dann T Ð T ` ei ; Ergebnis: T ; Beispiel 3.3. Wir wenden den Kruskal-Algorithmus auf folgenden Graphen an. 15 Kapitel 3. Minimal Spannende Bäume Ein möglicher Ablauf des Algorithmus sieht dann so aus. Satz 3.4 (Kruskal, 1956). Der Kruskal-Algorithmus findet einen MST in Zeit Opmnq. Beweis. Sei T “ pV, F q die Ausgabe des Algorithmus. Angenommen, T ist nicht zusammenhängend. Dann gibt es zwei Zusammenhangskomponenten und eine Kante e1 P EzF , die diese verbindet. Sei e P EzF die leichteste Verbindungskante der beiden Zusammenhangskomponenten. Dann ist T ` e kreisfrei und folglich e P F im Widerspruch zur Wahl von e. Somit ist T zusammenhängend. Nach Konstruktion ist T auch kreisfrei und enthält alle Knoten von G, also ist T ein Gerüst von G. Angenommen, es gibt einen MST T ˚ “ pV, F ˚ q mit cpF ˚ q ă cpF q. Für alle i P rn ´ 1s sei fi P F diejenige Kante, die der Algorithmus als i-te hinzugefügt hat. Wir können T ˚ so wählen, dass der kleinste Index k P rn ´ 1s mit fk R F ˚ maximal ist. T ˚ ` fk besitzt einen Kreis K. Dieser enthält eine Kante g mit g R F . Wegen g P F ˚ und {f1 , . . . , fk´1 } P F ˚ ist pV, {f1 , . . . , fk´1 }} Y {g}q kreisfrei. Da g R F gilt, folgt cpgq ě cpfk q. Dann aber ist T 1 “ pV, F 1 q :“ T ˚ ` fk ´ g ein Gerüst von G mit cpF 1 q “ cpF ˚ q ` cpfk q ´ cpgq ď cpF ˚ q, d.h. T 1 ist ein MST mit {f1 , . . . , fk } P F 1 im Widerspruch zur Wahl von T ˚ . Zur Laufzeit: Die Eingabelänge ist Ωpm ` nq. Das Sortieren der Kanten lässt sich in Zeit Opm log mq erledigen. Mit Breitensuche ist der Test auf Kreisfreiheit in Zeit Opnq möglich, also ist die Gesamtlaufzeit Opmnq. Bemerkung 3.5. Durch eine geschicktere Implementierung lässt sich die Laufzeit des Kruskal-Algorithmus auf Opm log nq verringern (siehe B. Korte, J. Vygen, Combinatorial Optimization, Seite 120). 16 Algorithm 3: MST (Prim) Eingabe: G “ pV, Eq mit n :“ |V |, m :“ |E|, c : E Ñ Q. 1 2 3 4 Wähle v P V und setze T Ð p{v}, Hq; solange V pT q ­“ V tue Wähle e P E mit minimalem Gewicht unter allen Kanten mit |e X V pT q| “ 1; T Ð T ` e; Ergebnis: T ; Beispiel 3.6. Mit dem Graphen aus Beispiel 3.3 als Eingabe kann der Prim-Algorithmus wie in Abbildung 3.1 dargestellt arbeiten. Abbildung 3.1. Beispiel für den Prim-Algorithmus. Satz 3.7 (Jarnik, 1930; Prim, 1957). Der Prim-Algorithmus bestimmt einen MST in Zeit Opn2 q – bei Verwendung geeigneter Datenstrukturen („Fibonacci-Heaps“, siehe M.L. Fredman, R.E. Tarjan, Fibonacci heaps and their uses in improvemed network optimization problems, Journal of the ACM 34 (1987), Seite 596–615) sogar in Zeit Opm ` n log nq. Der nachfolgende Algorithmus braucht die komplette Struktur des Eingangsgraphen zur Laufzeit nicht zu kennen, denn er muss jede Kante nur einmal betrachten. Algorithm 4: MST-Online Eingabe: zusammenhängender Graph G “ pV, Eq Ausgabe: minimal spannender Baum T in G 1 T :“ pV, Hq; 2 für e P EpGq tue 3 T :“ T ` e; 4 wenn ein Kreis K in T existiert dann 5 wähle a P arg maxaPEpKq wpaq; 6 T :“ T ´ a; Ergebnis: T ; 17 Kapitel 3. Minimal Spannende Bäume Proposition 3.8. Sei G ein Graph und T ein spannender Baum von G. Sei e P EpT q in einem Kreis K in G enthalten. Dann findet man eine Kante e1 P EpKq, derart dass T ´ e ` e1 zusammenhängend ist. Beweis. T ´ e besteht aus zwei Zusammenhangskomponenten V1 , V2 Ď V pGq mit V pGq “ V1 ŸV2 . Da K sowohl V1 als auch V2 besucht, gibt es mindestens zwei Kanten in K, die einen Knoten in V1 und den anderen Knoten in V2 haben. Eine dieser Kanten ist e, die andere Kante kann als e1 gewählt werden. Theorem 3.9. Algorithmus 4 arbeitet korrekt. Beweis. Sei T ˚ die Menge aller minimal spannenden Bäume, die eine maximale Anzahl von Kanten mit T gemeinsam haben, das heißt T ˚ ist die Menge aller Lösungen der folgenden Optimierungsaufgabe: max: |EpT ˚ q X EpT q| N.B: T ˚ ist minimaler Spannbaum von G Falls T P T ˚ , so sind wir fertig. Angenommen, T R T ˚ , also EpT ˚ qzEpT q ‰ H für alle T ˚ P T ˚ . Wir bezeichnen mit a1 , . . . , ak die in Zeile 6 des Algorithmus entfernten Kanten, entsprechend der Reihenfolge ihrer Betrachtung. Insbesondere entstehen nach der Entfernung von ak keine Kreise mehr in T . Ferner ist {a1 , . . . , ak }ŸEpT q “ EpGq. Unter allen Bäumen in T ˚ wählen wir einen Baum T ˚ aus, der ai P EpT ˚ q für den größtmöglichen Index i erfüllt. Sei K derjenige Kreis mit ai P EpKq, der dazu führte, dass ai nicht in T ist. Dann ist wpeq ď wpai q für alle e P EpKq. Mit Proposition 3.8 existiert e1 P EpKq, derart dass T 1 :“ T ˚ ´ ai ` e1 ein Spannbaum ist, der wegen wpe1 q ď wpai q sogar ein minimaler Spannbaum ist. Ist nun e1 P EpT q, so hat T 1 eine Kante mehr mit T gemeinsam als T ˚ (da ai R EpT q), im Widerspruch zur Definition von T ˚ . Wir wissen also, e1 R EpT q und T 1 P T ˚ . Nun hatte der Kreis K aber die Entfernung der Kante ai verursacht, sodass K und insbesondere e1 zum Zeitpunkt, als ai entfernt wurde, in T enthalten waren. Da die Kante e1 am Ende aber nicht mehr in T enthalten ist, muss sie später entfernt worden sein, das heißt e1 “ aj für ein j ą i. Dies ist ein Widerspruch zur Wahl von T ˚ und ai . 18 Kapitel 4 Bipartites Matching 4.1. Bipartite Graphen Definition 4.1. Ein Graph G “ pV, Eq heißt bipartit, wenn es V1 , V2 Ď V gibt mit V1 X V2 “ H, V1 Y V2 “ V und E Ď {{v1 , v2 } ; v1 P V1 , v2 P V2 }. In diesem Fall heißt pV1 , V2 q eine Bipartition von G und wir schreiben G “ pV1 ẎV2 , Eq. Satz 4.2 (König, 1916). Ein Graph G ist genau dann bipartit, wenn G keinen geschlossenen Pfad ungerader Länge enthält. Beweis. „ñ“: Sei G “ pV1 ẎV2 , Eq bipartit und sei P “ pu1 , . . . , uk , u1 q ein geschlossener Pfad in G. Wie dürfen annehmen, dass u1 P V1 gilt. Dann ist u2 P V2 , u3 P V1 und so weiter, d.h. ui ist genau dann in V1 , wenn i P rks ungerade ist. Wegen {u1 , uk } P E ist uk P V2 , und folglich ist |P | “ k gerade. „ð“: Sei nun G “ pV, Eq nicht bipartit. Wir dürfen annehmen, dass G zusammenhängend ist. Sei v0 P V . Wir betrachten kürzeste Wege bezüglich der Kantengewichtsfunktion c : E Ñ {1} und setzen V1 :“ {v P V ; dG pv0 , vq ungerade} und V2 :“ V zV1 . Da G nicht bipartit ist, gibt es eine Kante {a, b} in G|V1 oder G|V2 . Dann ist dG pv0 , aq ` dG pv0 , bq gerade, und für kürzeste Wege P1 P {v0 Ñ a}G , P2 P {b Ñ v0 }G gilt: P1 ˝ pa, bq ˝ P2 ist ein geschlossener Pfad ungerade Länge. Problem 4.3 (Bipartition). Eingabe: Zusammenhängender Graph G “ pV, Eq Aufgabe: Finde eine Bipartition pV1 , V2 q von G oder einen geschlossenen Pfad ungerader Länge. Satz 4.4. Der Algorithmus 5 Bipartition löst das Problem Bipartition in Zeit Opm`nq. 19 Kapitel 4. Bipartites Matching Algorithm 5: Bipartition Eingabe: G “ pV, Eq mit n :“ |V |, m :“ |E|. 1 2 3 4 5 6 7 Wähle v0 P V ; Führe Breitensuche mit folgender Modifikation durch: Der Startknoten wird mit 1 markiert. Jeder unmarkierte Nachbar eines mit i markierten Knotens wird mit i ` 1 markiert. Außerdem wird für jeden Knoten v der benachbarte Vorgängerknoten als ppvq abgespeichert; V1 Ð {v P V ; v hat ungerade Markierung}; V2 Ð V zV1 ; für alle {a, b} “ e P E tue wenn e Ď V1 oder e Ď V2 dann gib pv0 , . . . , ppppaqq, ppaq, a, b, ppbq, ppppbqq, . . . , v0 q aus und halte; Ergebnis: pV1 , V2 q 4.2. Matchingberechnung über augmentierende Pfade Definition 4.5. Sei G “ pV, Eq ein Graph. (i) Eine Menge M Ď E heißt Matching (Paarung), wenn für alle e1 ­“ e2 P M gilt: e1 X e2 “ H. (ii) Ein Matching M Ď E heißt (kardinalitäts-)maximal, wenn für jedes Matching M 1 Ď E gilt: |M 1 | ď |M |. Die Mächtigkeit eines maximalen Matchings in G bezeichnen wir mit νpGq. (iii) Ein Matching M Ď E heißt perfekt (1-Faktor), wenn |M | “ |V |{2 gilt. Problem 4.6 (Maximales Matching). Eingabe: Graph G “ pV, Eq. Aufgabe: Finde ein maximales Matching in G. Definition 4.7. Sei G “ pV, Eq ein Graph und M Ď E. (i) Ein Knoten v P V wird von M überdeckt, wenn es e P M gibt mit v P e. (ii) Ein Pfad in G heißt M -alternierend, wenn er abwechselnd Kanten aus M und EzM durchläuft (oder Länge 1 hat). (iii) Ein M -alternierender Pfad heißt M -augmentierender Pfad, wenn seine Endknoten nicht von M überdeckt werden. 20 4.2. Matchingberechnung über augmentierende Pfade Satz 4.8 (Berge, 1957). Sei G “ pV, Eq ein Graph und M Ď E ein Matching in G. M ist genau dann maximal, wenn G keinen M -augmentierenden Pfad enthält. Beweis. „ñ“: Sei M maximal. Angenommen, es gibt einen M -augmentierenden Pfad P in G. Dann ist M 1 :“ pM zEpP qq Y pEpP qzM q ein Matching mit |M 1 | “ |M | ` 1. „ð“: Sei M ein Matching, so dass G keinen M -augmentierenden Pfad enthält und sei M 1 ein maximales Matching. Wir betrachten den Teilgraphen H :“ p⋃pM Y M 1 q, M Y M 1 q. Alle Knoten in H haben Grad höchstens 2. Daher besteht H aus Kreisen und Wegen. Jeder Kreis enthält ebensoviele Kanten aus M wie aus M 1 . Die Wege sind M - und M 1 -alternierend und haben gerade Länge, da es weder M - noch M 1 -augmentierende Pfade gibt. Also enthalten auch die Wege ebensoviele Kanten aus M wie aus M 1 . Es folgt: |M | “ |M 1 |. Definition 4.9. Seien A und B Mengen. Dann ist A∆B :“ pAzBqYpBzAq die symmetrische Differenz von A und B. Algorithm 6: Bipartites maximales Matching Eingabe: G “ pV1 ẎV2 , Eq. 1 2 3 M Ð H; solange es existiert ein M -augmentierender Pfad P in G tue M Ð M ∆EpP q; Ergebnis: M Satz 4.10. Der Algorithmus 6 Bipartites maximales Matching lässt sich so implementieren, dass er in Zeit Opmnq das Problem Maximales Matching in bipartiten Graphen löst. Beweis. Die Korrektheit folgt aus dem Satz von Berge. Schritt 2 implementieren wir mittels wie folgt modifizierter Tiefensuche: Wir betrachten für jeden Knoten zwei Adjazenzlisten ΓM und ΓEzM , wobei für alle v P V die Liste ΓM pvq alle Nachbarn w mit {v, w} P M enthalte und ΓEzM pvq die Liste der Nachbarn w mit {v, w} P EzM sei. In jeder Iteration von 2 wählen wir einen unmarkierten, nicht durch M überdeckten Startknoten v1 und markieren ihn mit 1. Für mit 1 markierte Knoten werden nur Nachbarn aus ΓEzM betrachtet und mit 2 markiert. Für mit 2 markierte Knoten werden nur Nachbarn aus ΓM betrachtet und mit 1 markiert. Für jeden Knoten v wird ein Vorgängerknoten als ppvq abgespeichert. Die Suche bricht ab, sowie ein nicht von M überdeckter Knoten w mit 2 markiert wurde, mit dem M -augmentierender Pfad P :“ pw, ppwq, ppppwqq, . . . , v1 q als Suchergebnis. Sind alle von v1 erreichbaren Knoten 21 Kapitel 4. Bipartites Matching markiert, ohne dass ein M -augmentierender Pfad gefunden wurde, so wird ein neuer unmarkierter, nicht von M überdeckter Startknoten v1 gewählt. Der Algorithmus terminiert, wenn alle Knoten markiert sind. ΓM und ΓEzM lassen sich in Zeit Opmq erzeugen. Die Suche hat ebenfalls Laufzeit Opmq. Da jeder Knoten höchstens einmal als Startknoten einer Suche betrachtet wird, ist die Gesamtlaufzeit Opmnq. Es bleibt zu zeigen, dass die modifizierte Tiefensuche stets einen M -augmentierenden Pfad findet, wenn ein solcher existiert. Angenommen, die Tiefensuche betrachtet überhaupt keinen Anfangsknoten eines M -augmentierenden Pfades als Startknoten, obwohl ein solcher Anfangsknoten v1 existiert. Dann wird v1 von der Tiefensuche markiert, und zwar auf dem Pfad von einem nicht von M überdeckten Startknoten v0 aus. Da v1 nicht von M -Uberdeckt wird, ist dieser Pfad ein M -augmentierender Pfad im Widerspruch zur Annahme. Sei nun v1 der erste Knoten, den die modifizierte Tiefensuche als Startknoten betrachtet, für den ein M -augmentierender P “ pv1 , . . . , vk q existiert. Zu dem Zeitpunkt, an dem v1 Startknoten wird, ist kein Knoten auf P markiert, denn wäre vi von einem Startknoten v0 aus markiert worden, so gäbe es einen M -alternierenden Weg P 1 von v0 nach vk oder nach v1 mit nicht-überdeckten Endknoten. Da G bipartit ist, enthielte P 1 nur gerade Kreise, so dass durch Weglassen der Kreiskanten ein M -augmentierender Pfad entstünde. Sei i P rks der größte Index, so dass vi von der Tiefensuche mit Startknoten v1 markiert wird. Offenbar ist vi ­“ v1 . Angenommen, vi ­“ vk . Sei P1 “ pv1 “ v11 , v21 , . . . , vl1 “ vi q der alternierende Pfad von v1 nach vi , den die Tiefensuche findet, und P2 P {v1 Ñ vi }G der Teilpfad von P . 1. Fall: {vi´1 , vi } P M . Dann gilt {vi , vi`1 } P EzM . Da die Tiefensuche vi`1 nicht als 1 Nachbarn von vi betrachtet, obwohl vi`1 unmarkiert ist, gilt {vl´1 , vl1 } P EzM . Dann aber ist |P1 | ungerade und |P2 | gerade, und folglich enthält G einen geschlossenen Weg ungerader Länge, im Widerspruch zur Wahl von G als bipartit. 1 2. Fall: {vi´1 , vi } P EzM . Dann folgt analog {vl´1 , vl1 } P M , d.h. |P1 | ist gerade und |P2 | ungerade, im Widerspruch zur Wahl von G als bipartit. Somit gilt vi “ vk , und die Tiefensuche findet einen M -augmentierenden Pfad. 4.3. Matching-Heuristiken Matching-Heuristiken werden seit über 30 Jahren studiert. Wir geben hier zwei der bekanntesten Heuristiken an. Obwohl wir uns ausschließlich auf bipartite Graphen konzentrieren, eignen sich diese Heuristiken ebenfalls für allgemeine Graphen. 22 4.3. Matching-Heuristiken Einfacher Greedy-Algorithmus Die wahrscheinlich einfachste und meistverwendete Regel für die Auswahl der Kanten ist der einfache Greedy-Algorithmus: Für jeden Knoten finde einen ungepaarten Nachbarn und füge die jeweilige Kante zum Matching hinzu. Falls alle Nachbarn gepaart sind, belasse den Knoten ungepaart. Auch wenn die Approximationsratio für den einfachen Greedy-Algorithmus nur 12 ist, generiert er gewöhnlich Lösungen im 9 Bereich von mindestens 10 des Optimums [Möhrig und Müller-Hannemann 1995; Magun 1998], wie Untersuchungen gezeigt haben. Seine Worst-Case-Laufzeit ist Opmq und die erwartete Laufzeit ist Opnq, wenn Knoten in zufälliger Reihenfolge ausgewählt werden. Algorithm 7: Greedy Bipartite Matching Eingabe: G “ pV, Eq mit n :“ |V |, m :“ |E|. 1 2 3 4 5 6 7 M “ H, W “ H; solange W ‰ V tue Wähle einen zufälligen Knoten u P V zW ; W “ W Y {u}; wenn v P Γpuq X pV zW q existiert dann M “ M Y {{u, v}}; W “ W Y v; Ergebnis: M Anspruchsvollere Ansätze nutzen die Tatsache, dass die Wahrscheinlichkeit, einen Knoten so zu paaren, dass einer seiner Nachbarn nicht mehr gepaart werden kann, im Allgemeinen geringer ist, wenn Knoten bevorzugt mit Nachbarn niedrigen Grades gepaart werden. Diese Beobachtung führt zur Familie der grad-basierten Heuristiken, die als Mindegree bezeichnet werden. Ihr Grundkonzept ist wie folgt: Der Algorithmus bestimmt den Grad jedes Knotens und wählt dann in jeder Iteration einen Knoten minimalen Grades und einen ungepaarten Nachbarn, mit dem er gematched wird. Die resultierende Matching-Kante und ihre Knoten werden aus dem Graphen entfernt, wodurch sich der Grad ihrer Nachbarn um je eins verringert. Hierdurch ändert sich möglicherweise die Reihenfolge, in der die weiteren Knoten ausgewählt werden. Dieser Vorgang wird so lange wiederholt, bis kein weiterer Knoten gematched werden kann. Ein naheliegender Ansatz zur Implementierung ist die Verwendung einer Vorrangwarteschlange (engl. Priority Queue) zur „Buchführung“ über die Knoten niedrigsten Grades. In Abhängigkeit davon, ob der jeweilige Nachbar zufällig auswählt wird oder ebenfalls hinsichtlich des minimalen Grades, sprechen wir von einseitigem Mindegree oder doppel- 23 Kapitel 4. Bipartites Matching seitigem Mindegree. Möglich sind viele Varianten dieses Schemas. Algorithm 8: Dynamic Mindegree Eingabe: G “ pV, Eq mit n :“ |V |, m :“ |E|. 1 2 3 4 5 6 M “ H; solange V ‰ H tue Entferne alle isolierten Knoten aus V ; Wähle ein u P V mit minimalem Grad in G und ein v P Γpuq; M “ M Y {{u, v}}; G “ G ´ u ´ v; Ergebnis: M 4.4. Generatoren für bipartite Graphen 4.4.1. Gpn1 , n2 , pq Parameter: n1 , n2 P N und p P r0, 1s. Der Generator Gpn1 , n2 , pq erzeugt einen Graphen G “ pA Y B, Eq mit |A| “ n1 und |B| “ n2 . Dabei wird E generiert, indem jede Kante des vollständigen bipartiten Graphen Kn1 ,n2 unabhängig mit Wahrscheinlichkeit p gezogen wird. 4.4.2. Seil Parameter: l, k P N und p P r0, 1s. Es sei n :“ lk und A und B seien zwei Mengen der Kardinalität jeweils n, dieses sind die beiden Knotenmengen des bipartiten Graphen. Wir permutieren die Knoten zufällig A “ {a0 , . . . , an´1 } und B “ {b0 , . . . , bn´1 }. Dann definieren wir die Gruppen Ai :“ {aj ; ki ď j ă k pi ` 1q} und B i :“ {bj ; ki ď j ă k pi ` 1q} für jedes 0 ď i ă l. Dies gibt also jeweils (in A und in B) l Gruppen von jeweils k Knoten. Kanten werden wie folgt gezogen. Für jedes 0 ď i ă l fügen wir zwischen Ai und B i ein perfektes Matching ein. Für jedes 1 ď i ă l fügen wir zwischen Ai und B i´1 jede mögliche Kante unabhängig mit Wahrscheinlichkeit p ein. 24 4.4. Generatoren für bipartite Graphen Für l “ 5 und k “ 4 sieht das zum Beispiel so aus wir in der folgenden Abbildung. So ein Graph hat offenbar genau ein perfektes Matching. 4.4.3. HiLo Parameter: l, k, d P N mit d ď k Es sei n :“ lk und A und B seien zwei Mengen der Kardinalität jeweils n. Wir definieren l l Gruppen pAi qi“1 und pB i qi“1 genau wie beim Seil. Führe Bezeichnungen für die Knoten in den einzelnen Gruppen ein, nämlich Ai “ {ai0 , . . . , aik´1 } und B i “ {bi0 , . . . , bik´1 } für jedes 0 ď i ă l. Kanten werden wie folgt gezogen. Für jedes 0 ď i ă l und jedes 0 ď j ă k und jedes 0 ď p ă d mit 0 ď j ´ p fügen wir zwischen aij und bij´p eine Kante ein, und falls i ` 1 ă l i i so auch zwischen aij und bi`1 j´p . Das heißt, aj wird mit seinem „direkten Gegenüber“ bj verbunden, sowie mit den d ´ 1 davor liegenden Knoten in B i ; und dann dasselbe noch mit B i`1 anstelle von B i , vorausgesetzt wir sind noch nicht bei der letzten Gruppe angekommen. Offenbar hat so ein Graph ein perfektes Matching. Übungsaufgabe: dieses ist sogar eindeutig. Für l “ 4 und k “ 5 und d “ 2 sieht das genau so aus wie in der folgenden Abbildung, wobei die obere Reihe die Knoten von A darstellen und die untere Reihe die von B. 25 Kapitel 4. Bipartites Matching 4.4.4. RBG Parameter: l, k P N und p P r0, 1s Es sei n :“ lk und A und B seien zwei Mengen der Kardinalität jeweils n. Wir definieren l l Gruppen pAi qi“1 und pB i qi“1 genau wie beim Seil und bei HiLo. Für jedes 0 ď i ă l und jedes j P {i ´ 1, i, i ` 1} (wobei die Arithmetik modulo l ist, also insbesondere ´1 “ l ´ 1 und l “ 0) und jeden Knoten v P Ai und jeden Knoten w P B j fügen wir die Kante {v, w} unabhängig mit Wahrscheinlichkeit p ein. Für l “ 4 und k “ 5 und p “ 0.2 könnte das so aussehen wie in der folgenden Abbildung, wobei die obere Reihe die Knoten von A darstellen und die untere Reihe die von B. 4.5. Der Satz von Hall Satz 4.11 (Hall 1935;Heiratssatz). Sei G “ pV, Eq ein bipartiter Graph mit Bipartition V “ S Y T , S X T “ H. Es gilt νpGq “ |S| genau dann, wenn |N pAq| ě |A| für alle A Ď S. 26 4.5. Der Satz von Hall Abbildung 4.1. Ein bipartiter Graph mit Partitionsmengen S und T . In der klassischen Anschauung ist S eine Menge von Jungen, T eine Menge von Mädchen und Kanten stehen für gegenseitige Sympathie. „Vollständige Heirat“ ist möglich, wenn jedem s P S ein t P T zugeordnet werden kann. Der Heiratssatz ist ein Struktursatz. Leider ist es nur in 2|S| Zeit möglich, alle Teilmengen A Ď S auf die Hall-Bedingung|N pAq| ě |A| zu testen. Beweis. (Satz 4.11) Wir benutzen Induktion nach |S|. Induktionsanfang: |S| “ 1. Hier gibt es wegen |N pSq| ě |S| “ 1 einen t P T , das mit dem Knoten s P S gematcht werden kann und die Behauptung gilt. Induktionsschluß: Sei |S| ě 2 and wir nehmen an, daß die Behauptung für Graphen mit Bipartitions-menge der Kardinalität höchstens |S| ´ 1 gilt. Ź Fall: |N pAq| ě |A| ` 1 für alle A Ď S, A ‰ S. Sei {a, b} P E beliebig gewählt und betrachte G1 :“ Gz{a, b}. Für jedes A Ď Sz{a} gilt nun. |NG1 pAq| ě |NG pAq| ´ 1 ě |S| ` 1 ´ 1 “ |S| Damit besitzt G1 ein Matching M von S nach T und |M | “ |S| ´ 1 nach Induktionsvoraussetzung. Nun füge man die Kante {a, b} zu M hinzu und erhalte so ein Matching M 1 mit |M 1 | “ |S| ´ 1 ` 1 “ |S|. 27 Kapitel 4. Bipartites Matching Ź Fall: Es gibt ein A1 Ď S, A1 ‰ S, A1 ‰ H mit |N pA1 q| “ |A1 |. Sei G1 der Graph auf der Knotenmenge A1 Y N pA1 q. Diese erfüllt die Hall-Bedingung und da |A1 | ă |S|, besitzt er nach Induktionsvoraussetzung ein Matching M von A1 nach N pA1 q mit |M | “ |A1 |. Sei G2 “ GzG1 . G2 erfüllt ebenfalls die Hall-Bedingung. Nehmen wir für einen moment an, daß dies nicht der Fall ist. Dann gibt es A Ď SzV pG1 q und NG2 pAq ă |A|. Somit |NG pA Y A1 q| ď |NG pAq| ` |NG pA1 q| “ |NG2 pAq| ` |NG pA1 q| ă |A| ` |A1 | “ |A Y A1 |, ein Widerspruch zu Hall-Bedingung für G. Also enthält G ´ G2 ein Matching F mit |F | “ |SzA1 | “ |S| ´ |A|. Die Mengen M und F sind nach Konstruktion disjunkt Ferner gilt. |M Y F | “ |A1 | ` |S| ´ |A1 | “ |S|, also wird S nach T gematcht. Korollar 4.12 („Heiratssatz“, Frobenius, 1917). Sei G “ pS ẎT, Eq ein bipartiter Graph. Genau dann hat G ein perfektes Matching, wenn |S| “ |T | und |ΓpHq| ě |H| für alle H Ď S. Wie sieht νpGq in einem allgemeinen bipartiten Graphen G “ pS ŸT, Eq aus ? Das Problem ist, daß die Hallbedingung |N pAq| ě |A| für gewisse A Ď S verletzt sein kann. Eine Menge A Ď S mit |A| ą |N pAq| kann nicht vollständig gematcht werden. Die in diesem Sinn nicht matchbaren Knoten definieren den Matchingdefekt. Definition 4.13. Sei G “ pS ŸT, Eq ein bipartiter Graph. Der Matchingdefekt von G ist defpGq :“ max{|A| ´ |N pAq| : A Ď S}. Korollar 4.14. (Defektversion des Heiratssatzes) Sei G “ pS ŸT, Eq ein bipartiter Graph. Dann gilt νpGq “ |S| ´ defpGq. 28 4.5. Der Satz von Hall Beweis. Sei A Ď S mit |A| ´ |N pAq| “ defpGq. Sei maximales Matching. Es gilt: |A X ⋃ M | “ |NM pAq Ď |N pAq|, folglich νpGq “ |M | “ |S X ⋃ M | “ |pSzAq X ⋃ M | ` |A X ⋃ M | ď |SzA| ` |N pAq| “ |S| ´ |A| ` |N pAq| “ S ´ defpGq. Sei D eine neue Knotenmenge mit |D| “ defpGq. Setze G1 “ pS ŸpT Y Dq, E Y {{s, d}; s P S, d P D}q. Dann gilt für A Ď S: |NG1 pAq| “ |NG pAq Y D| “ |NG pAq| ` defpGq “ |NG pAq| ` max e ´ |N |A| G e A e pAq|; Ď S| ě |NG pAq| ` |A| ´ |NG pAq| “ |A|. Also erfüllt G1 die Heiratsbedingung, und es existiert ein Matching M in G1 mit |S| “ |M |. f “ M X E. Dann gilt |M f | ě |M | ´ |D| “ |S| ´ defpGq und somit auch νpGq ě Sei M |S| ´ defpGq. Ein Vertex-Cover (oder Knotenüberdeckung) in einem Graphen G “ pV, Eq ist eine Teilmenge W Ď V , in der all Kanten sind. τ pGq ist die Größe eines Vertex-Cover minimaler Kardinalität. Es gilt νpGq ď τ pGq für jeden Graphen G. Satz 4.15. (Dualitätssatz für Bipartites Matching / Vertex-Cover) Ist G bipartit, so gilt νpGq “ τ pGq. Beweis. Sei A Ď S mit defpGq “ |A| ´ |N pAq|. W :“ pSzAq Y N pAq ist ein Vertex-Cover von G, da es keine Kanten zwischen A und T zN pAq gibt. Es folgt: τ pGq ď |W | “ |S| ´ |A| ` |N pAq| “ |S| ´ defpGq “ νpGq pKorollar 4.14q 29 Kapitel 4. Bipartites Matching 4.6. A Faster Algorithm The main advantage of Algorithmus 6 is being simple. This can be an advantage not only from a theoretical but also from a practical point of view, since implementations can also be kept simple. However, it is worth studying a more complex version that allows √ an Op nmq bound to be proven on the running time. It is the algorithm by Hopcroft and Karp from 1973 [HK73]. The basic idea is to augment the matching along multiple pairwise vertex-disjoint augmenting paths at once, and to only use shortest augmenting paths. Two paths P1 and P2 are called vertex-disjoint if V pP1 q X V pP2 q “ H. Instead of „pairwise vertex-disjoint“ we will simply write „disjoint“ in the following. Denote shortestpM q the length of a shortest M -augmenting path. Fix a matching M and consider a modified BFS starting at freepAq in G, where freepAq denotes the vertices in A which are not covered by M . The modified BFS builds a layered structure as follows: Ź layer 0 consists of freepAq; Ź layer 1 consists of all the vertices in B that are reachable in one step from freepAq (via a non-matching edge), they are at distance 1 from freepAq; Ź layer 2 consists of all the vertices in A that are reachable in one step from layer 1 via a matching edge, they are at distance 2 from freepAq; Ź layer 3 consists of all the vertices in B that are reachable in one step from layer 2 via a non-matching edge, they are at distance 3 from freepAq; Ź and so on. The first layer containing a free vertex of B, say layer number `, marks the length of a shortest augmenting path, so shortestpM q “ `. All shortest augmenting paths run between layer 0 and layer `. We forget everything beyond layer `. We also remove any edges that point ‘backward’, i. e., running from layer j to layer i with i ă j – those cannot be part of a shortest augmenting path. Denote the resulting layered graph by LayM . We use LayM to find an inclusion-maximal set of disjoint shortest augmenting paths. We use the procedure given in Algorithmus 9 auf der nächsten Seite for it. This algorithm just keeps exploring until it finds its goal (a free vertex from B) or it cannot go any further without stepping onto a vertex already visited. The set of visited vertices is kept in X. Whenever a new vertex w is visited, the vertex v we are coming from is memorized as its predecessor predpwq. The predecessor relation helps backtracking when we cannot go further, this happens in line 11. It also helps to actually deliver the 30 4.6. A Faster Algorithm Algorithm 9: (Special) DFS Input: Layered graph as described above, a P freepAq. Output: A set of visited vertices and possibly an augmenting path. 1 2 3 4 5 6 7 8 9 10 11 12 13 X Ð {a}; predpaq Ð nil; v Ð a; repeat while Dw P N pvqzX do X Ð X Y {w}; predpwq Ð v; if w P freepBq then return X and pw, predpwq, predppredpwqq, . . . , aq; ; v Ð w; v Ð predpvq; until v “ nil; return X; augmenting path found, if any, in line 8. The set of all visited vertices is returned in order that it can subsequently be removed from LayM : they have either shown not to lead to a vertex from freepBq, or they are part of the augmenting path just found and so cannot be used for other augmenting paths, since we want them vertex-disjoint. We invoke the algorithm on each a P freepAq. After each invocation, all vertices in X and their incident edges are removed from LayM . A possibly returned augmenting path is stored. When all vertices in freepAq have been treated, the matching is improved using all the found augmenting paths. This is feasible due to their disjointness – augmenting a matching along a single path P affects only the vertices and edges of P (all those vertices become covered, matching edges become non-matching edges, and non-matching edges become matching edges). Everything from the construction of LayM , multiple invocations of Algorithmus 9, and finally the improvement of M is called a phase. Recall that during one phase, only shortest augmenting paths are found and used for the improvement due to the structure of the layered graph. After one phase the next phase starts, with the construction of a new layered graph. When no augmenting paths are detected anymore, we are done. The total of all executions of Algorithmus 9 in one phase takes up Opmq time. So the running time of the matching algorithm is that times the number of phases. We summarize in Algorithmus 10. It may be plausible that this treatment of multiple paths makes the algorithm faster. √ But can we prove it? We have to show that the number of phases is Op nq. This is 31 Kapitel 4. Bipartites Matching Algorithm 10: Hopcroft and Karp Input: Bipartite graph G “ pA, B, Eq. Output: Maximum matching. 1 2 3 4 5 6 7 8 9 10 11 12 M Ð inclusion-maximal matching; construct LayM using BFS; while augmenting paths are left do A Ð H; foreach a P freepAq do conduct DFS starting at vertex a (Algorithmus 9); remove X and all incident edges from the layered graph; if DFS found an augmenting path P then A Ð A Y {P }; ; M Ð M 4 ⋃P PA EpP q; construct LayM using BFS; return M ; accomplished in the following series of lemmas. First we show that the repeated use of Algorithmus 9 yields an inclusion-maximal set A of shortest disjoint augmenting paths, i. e., any shortest augmenting path not in A must cross one of the paths in A (Lemma 4.17). Then we show that elimination of a shortest augmenting path P , i. e., going from matching M to M 1 :“ M 4EpP q, cannot create a new augmenting path shorter than P (Lemma 4.18). Using those two lemmas, we show that after each phase, the length of a shortest augmenting path grows by at least 2, i. e., shortestpM q`2 ď shortestpM 1 q, where M 1 is the matching after augmentation along all the paths in A (Korollar 4.19). This alone does not improve upon the trivial Opnq bound on the number of phases. However, we also show that a large distance to the optimum demands for a large number of augmenting paths. Precisely, we show that there always exists a set of |M ˚ | ´ |M | disjoint augmenting paths (Lemma 4.20), with M ˚ denoting a maximum matching. In other words, there is always the theoretical possibility of choosing a set of disjoint augmenting paths so that we reach the optimum in just one augmentation step. We do not know how to do this efficiently, but we can use this result for another purpose: √ Theorem 4.16. The algorithm by Hopcroft and Karp needs at most Op nq phases. √ Beweis. Let M ˚ denote a maximum matching. After 2n phases, by Korollar 4.19 we √ have shortestpM q ě n. Hence those k :“ |M ˚ | ´ |M | disjoint augmenting paths that √ √ are still left by Lemma 4.20 cover a number of k n vertices at least – hence k ď n. √ Since the matching grows by at least 1 in each phase, there are at most n more phases 32 4.6. A Faster Algorithm v w x y (a) Assume v, w, x, and y being M -free. Then P “ pv, . . . , wq is M -augmenting, but P 1 “ px, . . . , yq is not. v w x y (b) Augmenting along P yields the matching drawn. Now, P 1 is M augmenting of length 5, shorter than P , which has length 7. Abbildung 4.2. How shorter augmenting paths can emerge when we do not augment along shortest augmenting paths. required. We prove the required lemmas. Lemma 4.17. Repeated application of DFS yields an inclusion-maximal set of disjoint augmenting paths. Beweis. Exercise. For the next lemma, we first provide some intuition. The question is what new augmenting paths can emerge when an augmenting path is eliminated (i. e., when we augment the matching along it). In Abbildung 4.2 we see that new augmenting paths can emerge, and they can even be shorter than the one that is being eliminated. However, the next lemma shows that this cannot happen when the augmenting path eliminated is a shortest one. Lemma 4.18. Let M be a matching in a graph, not necessarily bipartite. Let P be a shortest M -augmenting path. Denote M 1 :“ M 4EpP q the augmented matching and P 1 an M 1 -augmenting path (if there exists any). Then |P 1 | ě |P | ` 2 |EpP q X EpP 1 q| . In particular, there does not emerge an augmenting path shorter than P by augmenting M . 33 Kapitel 4. Bipartites Matching Beweis. If P and P 1 do not share any vertices, then P 1 is already an M -augmenting path and so plenP 1 ě shortestpM q “ plenP . The lemma follows. Now let P and P 1 share at least one vertex. The M 1 -free vertices of P 1 are not on P , since all vertices on P are M 1 -covered. So P 1 enters P and leaves P again, prossibly multiple times. Since all vertices on P are covered by M 1 , the path P 1 enters P via a non-M 1 edge. Then it must traverse an M 1 edge, since it’s an alternating path, and that M 1 edge can only be along P . So P and P 1 do never cross in a single vertex, but for each crossing share at least one edge (from M 1 ). Consider the subgraph D :“ EpP q4EpP 1 q. By what we have just established, its maximum degree is at most 2, so D consists of paths and cycles. We claim that D contains two disjoint M -augmenting paths. With respect to M , the endpoints of both P and of P 1 are free (they are the only M -free vertices in D). The endpoints of P are not located on P 1 , and the endpoints of P 1 are not located on P . Hence we have four path-ends in D with an M -free vertex each. The claim follows when we show that any component of D being a path of positive length must have M -free vertices at both its ends. Let Q “ pw, u, . . .q be such a component of D and consider one of its endpoints, say w. If w is not M -free, it is an inner vertex of P or of P 1 . W.l.o.g. assume the former,1 so we have P “ p. . . , e1 , w, e2 , . . .q. Since Q cannot be extended beyond w, one of e1 , e2 is not in the symmetric difference, so it is also on P 1 , say e1 P EpP q X EpP 1 q. Since w cannot be an endpoint of P 1 , there is a third edge e such that P 1 “ p. . . , e1 , w, e1 , . . .q. Since e2 P D, we have e1 ‰ e2 . Since Q cannot be extended beyond w, we have e1 R D, i. e., e1 P EpP q X EpP 1 q. Now we have three distinct edges indicent in w that all belong to P . This is impossible since P is a path. Next we show that any path in D is M -alternating. Let Q “ p. . . , u, v, w, . . .q be a path in D. If both {u, v}, {v, w} P EpP q, we are done since P was chosen M -alternating. If both {u, v}, {v, w} R EpP q, we are also done since P 1 is M -alternating outside of P . Thus v is a junction between P and P 1 , say {u, v} P EpP qzEpP 1 q and {v, w} P EpP 1 qzEpP q. Recall that when P and P 1 meet, they do so at an inner vertex and then share at least one edge, namely from M 1 . Writing P “ p. . . , u, v, x, . . .q that edge is {v, x} P M 1 . Since M 1 was obtained from M by augmenting along P , it follows {u, v} P M . Recall also that the edges by which P 1 enters or leaves P are not in M 1 , so they are also not in M since M and M 1 coincide outside of P . It follows {v, w} R M . In total we have gained that there are two disjoint M -augmenting paths Q and Q1 in D. Clearly plenQ, plenQ1 ě shortestpM q “ plenP . By disjointness, 2 plenP ď |D|. It follows The situation is not completely symmetric in P and P 1 since P is M -augmenting while P 1 is not. However, for the arguments in this paragraph, we will only need that P and P 1 are two paths with the only M -free vertices being their endpoints. 1 34 4.6. A Faster Algorithm by the definition of the symmetric difference: plenP ` plenP 1 “ |D| ` 2 |EpP q X EpP 1 q| ě 2 plenP ` 2 |EpP q X EpP 1 q| . Subtracting plenP from both sides yields the lemma. Korollar 4.19. Let M be a matching in a graph, not necessarily bipartite. Let A be an inclusion-maximal set of shortest disjoint M -augmenting paths. Denote M 1 :“ M 4 ⋃P PA EpP q the augmented matching. Then shortestpM q ` 2 ď shortestpM 1 q. Beweis. Let P 1 be a shortest M 1 -augmenting path. If P 1 does not share a vertex with any of the paths in A, then clearly plenP 1 ą shortestpM q, since otherwise P 1 P A. Since augmenting paths have odd length, it follows plenP 1 ě shortestpM q ` 2. Now let P 1 share at least one vertex with at least one path in A. We arbitrarily pick one such path P̃ P A. Denote f :“ M 4 ⋃ EpP q . M P PA P ‰P̃ f -augmenting path, since by Lemma 4.18 (applied inductively) Then P̃ is a shortest M no shorter augmenting paths emerge. Augmenting along P̃ yields M 1 . Since P and P̃ share a vertex, also |EpP q X EpP̃ q| ě 1. By Lemma 4.18 it follows |P 1 | ě |P̃ | ` 2 |EpP̃ q X EpP 1 q| ě |P̃ | ` 2 “ shortestpM q ` 2. Lemma 4.20. Let M be a matching in a graph, not necessarily bipartite. Let M ˚ denote a maximum matching. Then there is a set of exactly |M ˚ | ´ |M | disjoint M -augmenting paths. Beweis. Exercise. 35 Kapitel 5 Streaming-Algorithmen 5.1. Das Semi-Streaming-Modell Traditionell wird vorausgesetzt, dass der wahlfreie Zugriff auf Problem-Instanzen (hier Graphen) billig ist. Beispielsweise sind folgende Annahmen typisch, wobei ∆ :“ maxvPV degpvq der Maximalgrad im Graphen ist: • Bei Verwendung einer Adjazenzmatrix kann in Zeit Op1q getestet werden, ob zwei Knoten adjazent sind, und die Nachbarschaft eines Knotens kann in Zeit Opnq eingesammelt werden. • Bei Verwendung von Adjazenzlisten, kann die Adjazenz zweier Knoten in Zeit Op∆q überprüft werden, und die Nachbarschaft eines Knotens v kann in Zeit Opdegpvqq durchlaufen werden. So stützen sich zum Beispiel auch die BFS- und DFS-basierten Techniken, von denen in den Algorithmen der vorherigen Kapitel intensiv Gebrauch gemacht wurde, auf diese Annahmen. Die Annahmen bleiben allerdings nicht mehr realistisch, wenn die Eingabe sehr groß wird, möglicherweise größer als der auf der verwendeten Maschine verfügbare Arbeitsspeicher. Große Datenmengen verlangen nach einem anderen Modell für den Zugriff. Eine populäre Klasse solcher Modelle ist das Streaming-Modell. In einem StreamingModell kommt die Eingabe als eine Folge von Objekten, z.B. Zahlen, oder Zahlenpaare (als Representanten für Kanten eines Graphen). Eine solche Folge von Objekten wird Stream genannt. Ein Algorithmus kann einen Stream einmal oder mehrfach anfordern, wobei die Objekte dem Algorithmus jeweils eines nach dem anderen presentiert werden. Das einmalige Betrachten des Streams wird als Pass bzw. Passieren der Eingabe bezeichnet. Über die Betrachtungsreihenfolge der Objekte wird hierbei keine Annahme gemacht, und oft werden Algorithmen so entworfen, dass die Reihenfolge sich von Pass zu Pass beliebig ändern darf. Ein Pass wird als teuer angenommen, sodass ein Limit bezüglich der Anzahl der Pässe, die sogenannte Pass-Garantie, eine wichtige Charakteristik eines Streaming-Algorithmus ist. Dabei ist es ein allgemeiner Konsens, dass die Pass-Garantie 37 Kapitel 5. Streaming-Algorithmen zwar unabhängig von der Eingabegröße sein soll, aber von Approximationsparametern abhängen darf. Die ersten Streaming-Algorithmen wurden in den späten 1970er Jahren entwickelt (siehe z.B. [MP80; FM85]), und eine der einflussreichsten Arbeiten wurde 1996 von Alon et al. [AMS99] publiziert. Der Begriff „Streaming“ wurde kurz darauf von Henzinger et al. [HRR00] geprägt. Neben der Pass-Garantie ist der benötigte Arbeitsspeicherbedarf eines Algorithmus eine weitere wichtige Charakteristik. Für eine zweckdienliche Verwendung eines StreamingAlgorithmen sollte der Arbeitsspeicher deutlich kleiner sein als die Größe der Eingabe. Andererseits muss der Arbeitsspeicher groß genug sein, um etwas Sinnvolles tun zu können. Für Graphenprobleme enthält der Stream die Kanten des Graphen, also eine Folge e1 , . . . , eN , wobei jedes ei ein Zahlenpaar (interpretiert als ungeordnetes Paar) aus {1, . . . , n} ist, mit n als Anzahl der Knoten. Feigenbaum et al. [FKM+04] hat gezeigt, dass Oppoly log nq Bits1 nicht ausreichen, um festzustellen, ob zwischen zwei gegebenen Knoten ein Pfad der Länge 2 existiert, (d.h. ob sie disjunkte Nachbarschaften haben), sofern die Anzahl der Pässe nicht von der Eingabegröße abhängen darf. Das Argument basiert auf der Tatsache, dass die Disjunktheit von Mengen in einer n-elementigen Basismenge eine Kommunikations-Komplexität von Ωpnq Bits [KS92] hat. Hingegen würde ein ppnq-Pass Streaming-Algorithmus mit Oppoly log nq Bits Arbeitsspeicher, sagen wir Oplogc nq für ein c ą 0, die Lösung des Problems mit nur Opppnq ¨ logc nq Bits für die Kommunikation erlauben. Es ist daher keine Pass-Garantie ppnq “ opn{ logc nq möglich, und insbesondere nicht ppnq “ Op1q. Folglich macht Speicher logarithmischer Größe wenig Sinn, wenn es um Graphenprobleme geht. Kurz vor der Arbeit von Feigenbaum et al. [FKM+04] hat Muthukrishnan im Jahre 2003 das Semi-Streaming-Modell [Mut05], vorgeschlagen, in dem der Arbeitsspeicher durch Opn ¨ poly log nq Bits beschränkt ist, was bedeutet, dass wir eine (in n) lineare Anzahl von Kanten zur Zeit speichern können.2 In diesem Modell werden in der Arbeit [FKM+04] ´1 viele Graphenprobleme untersucht, insbesondere wird ein Semi-Streaming p 23 ´ εq Approximationsalgorithmus, 0 ă ε ă 31 , für das Problem des kardinalitäts-maximalen Matchings in bipartiten Graphen vorgeschlagen, der eine Pass-Garantie von Opε´1 log ε´1 q hat. Obwohl diese Schranke beachtlich ist, kann eine 2-Approximation, die nicht all zu ´1 weit von p 23 ´ εq « 32 entfernt ist, in nur einem Pass berechnet werden, nämlich ein inklusions-maximales Matching. Mit poly x bezeichnen wir ein Polynom in x, eine andere Möglichkeit, dies zu notieren, ist xOp1q . Das Attribut „Semi“ wurde gewählt, da der Begriff „Streaming-Modell“ im Allgemeinen mit logarithmischen Speicher verbunden ist. Das Semi-Streaming-Model liegt „zwischen“ logarithmischem and quadratischem Speicher, wobei letzteres äquivalent zum RAM-Modell ist, da ein Graph mit Opn2 q Speicherkapaziät auskommt. 1 2 38 5.1. Das Semi-Streaming-Modell Die exakten Algorihtmen der vorherigen Kapitel können nicht direkt im Streaming-Modell angewendet werden. Wenn die Reihenfolge der Kanten ungünstig ist, kann die Zahl der Pässe, die für eine Breitensuche benötigt werden, der Anzahl der Schichten entsprechen. Um dies einzusehen betrachten wir einen Graphen, der ein Pfad pv0 , e1 , v1 , . . . , eN , vN q ist. Die Reihenfolge im Stream sei eN , eN ´1 , . . . , e1 , aber der Startknoten der Breitensuche sei v0 . Dann gibt es N ` 1 Schichten, und das Auffinden jeder Schicht benötigt einen eigenen Pass. Im nächsten Abschnitt werden wir sehen, dass es genügt, augmentierende Pfade der Länge Opε´1 q zu betrachten, um eine 1 ` ε-Approximation für ein kardinalitätsmaximales Matching zu erhalten. Eine Breitensuche kann dann beim Erreichen dieser Tiefe beendet werden. Wir benötigen dann allerdings noch eine Schranke für die Anzahl der Vergrößerungs-Schritte (für den Basis-Algorithmus), aber sogar für Hopcroft-Karp kennen √ wir nur die von der Größe der Eingabe abhängige Schranke Op nq bzgl. der Anzahl der Phasen. Unter der Voraussetzung, dass wir die Anzahl der im Hopcroft-Karp-Algorithmus benötigten Phasen auf Oppoly ε´1 q reduzieren können, bleibt noch das Problem, die Tiefensuche so zu realisieren, dass diese wenig Pässe benötigt. Die bahnbrechende Idee hierzu stammt von McGregor [McG05]. Er schlägt eine Kombination aus Breiten- und Tiefensuche vor, bei der in Abhängigkeit davon, welche Kante gerade aus dem Datenstrom eingeht, entschieden wird, ob man in die Breite oder in die Tiefe geht. Basierend auf dieser Technik hat McGregor einen randomisierten 1 ` ε-Approximationsalgorithmus für allgemeine Graphen angegeben, dessen Pass-Garantie allerdings exponentiell von ε abhängt. Eggert et al. [EKM+12] haben gezeigt, dass diese Abhängigkeit sogar für bipartite Graphen ´1 bestehen bleibt, genauer wurde eine untere Schranke von Ωpε´pε q q für die Anzahl der vom Algorithmus von McGregor benötigten Pässe in bibartiten Graphen bewiesen. Dies liegt im Wesentlichen an der randomisierten Arbeitsweise des Algorithmus, die eine große Anzahl an Iterationen voraussetzt, um eine hinreichende Erfolgswahrscheinlichkeit zu erreichen. Durch Verwendung des sogenannten Positionsgrenzen-Konzepts haben Eggert et al. [EKM+12] eine neue Kombination aus Breiten- und Tiefensuche für den bipartiten Fall entwickelt, der eine Pass-Garantie von Opε´5 q gestattet. Im nächsten Abschnitt stellen wir diesen Algorithmus im Detail vor. Bibliographisches. Eine verbesserte Version des in [EKM+12] presentierten Algorithmus, der in Experimenten deutlich weniger Pässe benötigt, wird in [Kli11] vorgeschlagen. Ein anderer Forschungsansatz beschäftigt sich mit der Entwicklung von Algorithmen, die auf linearer Programmierung (siehe Kapitel 6) basieren. Er wurde von Ahn und Guha [AG13] für eine Reihe von matching-artigen Graphenproblemen verfolgt. Für das bipartite Matching-Problem wird ein Algorithmus mit Pass-Garantie Opε´2 log log ε´1 q 39 Kapitel 5. Streaming-Algorithmen vorgestellt (wobei der Arbeitsspeicherbedarf von der Anzahl der Pässe abhängig ist). Konrad et al. [KMM12] haben Algorithmen für das bipartite Matchingproblem angegeben, die mit einem oder zwei Pässen auskommen. Deren Approximationsgüte liegt geringfügig unterhalb des Faktors 2, der durch ein inklusions-maximales Matching garantiert wird. Für weitere Arbeiten zu Graphen-Streams (Zusammenhang, Spannbäume, gewichtete Matchings, Schnitte) verweisen wir auf Zelke [Zel09]. Eine weitere wichtige Technik für Graphen-Streams, die hier nicht betrachtet wird, ist das Ausdünnen (englisch sparsification). Einen Einstieg hierzu findet man z.B. in [KL13]. 5.2. Approximations-Theorie für Matching Da Breitensuche auf gesamten Graphen zu viele Pässe erfordern kann, beschränken wir uns bei der Suche nach augmentierenden Pfaden auf Längen, die von der Größe der Eingabedaten anhängt. Hierzu stellen wir in diesem Abschnitt eine allgemeine Herangehensweise vor. Sei λ P N. Ein Pfad heißt λ-Pfad wenn seine Länge (also die Anzahl seiner Kanten) maximal 2λ`1 ist. Sei M ein Matching. Eine inklusions-maximale Menge disjunkter augmentierender λ-Pfade heißt λ-DAP-Menge, wobei inklusions-maximal bedeutet, dass wir keinen weiteren augmentierenden λ-Pfad hinzufügen können, ohne die Disjunktheit zu zerstören. Sei δ P r0, 1s. Ein pλ, δq-DAP-Approximationsalgorithmus liefert zu einem Matching M stets eine Menge A disjunkter augmentierender λ-Pfade, derart dass es eine λ-DAP-Menge Y mit |Y| ď |A| ` δ |M | gibt. Sei DAP ein pλ, δq-DAP-Approximationsalgorithmus. Unser Streaming-Allgorithmus verwendet die folgende Schleife: Algorithm 11: Hauptschleife 1 M :“ ein inklusion-maximales Matching; 2 repeat 3 c :“ |M |; 4 A :“ DAPpM q; 5 augmentiere M mittels A; 6 until |A| ď δc; Wenn diese Schleife terminiert, gibt es offensichtlich eine λ-DAP-Menge Y mit |Y| ď |A|` δ |M | ď δ |M | ` δ |M | “ 2δ |M |, wobei M das Matching vor der letzten Augmentierung ist. Sei k P N. Diese Konstante kontrolliert die Approximation, k1 spielt die Rolle von ε 40 5.2. Approximations-Theorie für Matching des vorangegangenen Abschnitts. Es sei ferner k ď λ und λ´k`1 δpλq :“ ą0 . 2kλ pλ ` 2q Die folgenden zwei Lemmas zeigen eine Approximationsgarantie von 1 ` schleife für δ “ δpλq. (5.1) 1 k der Haupt- Lemma 5.1. Seien M ein inklusions-maximales Matching und M ˚ ein kardinalitätsmaximales Matching. Sei D :“ M 4M ˚ und für alle i P N0 sei Di die Menge aller Zusammenhangskomponenten von D, die i Kanten aus M und i ` 1 Kanten aus M ˚ i| enthalten. Für jedes i P N definiere αi :“ |D P r0, 1s. |M | Es gelte Pλ i“1 αi ď λ´k`1 kλ für ein λ. Dann ist M eine p1 ` k1 q-Approximation. P Beweis. Wir beginnen mit einer oberen Schranke für iěλ`1 αi , also die Summe aller αi , P die nicht in der Summe λi“1 αi vorkommen. Offenbar ist α0 “ 0, denn D0 “ H, da M P inklusions-maximal ist. Es stehen maximal |M | ´ λi“1 |Di | Kanten aus M zur Verfügung, die in Zusammenhangskomponenten Di , i ě λ ` 1, vorkommen können. Andererseits benötigt jede Zusammenhangskomponente eines solchen Di mindestens λ ` 1 Kanten aus M . Damit gilt λ 1 1 X 1 “ |M| ´ αi αi |M| “ |Di | ď |M| ´ |Di | λ`1 λ ` 1 λ ` 1 i“1 i“1 iěλ`1 iěλ`1 X also λ X X X iěλ`1 αi ď ! ! λ 1 X 1 ´ αi . λ ` 1 λ ` 1 i“1 , (5.2) Als nächstes setzen wir |M ˚ | und |M | in Beziehung. Die Zusammenhangskomponenten von D können wir unterteilen in jene, die eine Kante mehr aus M ˚ als aus M enthalten (diese befinden sich alle in D :“ ⋃iě1 Di , beachte, dass D0 “ H), jene die gleich viele Kanten aus M ˚ und M enthalten und jene, die eine Kante weniger aus M ˚ als aus M enthalten. Letztere treten nicht in Erscheinung, da sie M ˚ -augmentierende Pfade wären. Für jede Zusammenhangskomponente in D füge eine beliebige Kante aus M ˚ in eine Menge X ein und setze M 1 :“ M ˚ zX. Wir haben M 1 “ M ˚ zX “ (pM ˚ X M q Ÿ pM ˚ X Dq)zX “ pM ˚ X M q Ÿ pM 1 X Dq und M “ pM X M ˚ q Ÿ pM X Dq “ pM ˚ X M q Ÿ pM X Dq . Es gibt eine Bijektion von M 1 nach M : • auf M ˚ X M wähle die identische Abbildung; diese ist offenbar injektiv und trifft ganz M˚ X M, 41 Kapitel 5. Streaming-Algorithmen • auf M 1 X D wählen wir innerhalb jeder Zusammenhangskomponente eine Bijektion (nach Entfernung von X hat jede Zusammenhangskomponente genauso viele Kanten aus M ˚ wie aus M ). Diese Abbildung ist injektiv und trifft ganz M X D. Es folgt: |M ˚ | “ |M 1 | ` |X| “ |M| ` |X| “ |M| ` X |Di | “ |M| ` iPN “ |M| 1 ` λ X i“1 X αi |M| iPN ! αi ` X αi iěλ`1 λ X λ 1 1 X ď |M| 1 ` αi ` ´ αi λ ` 1 λ ` 1 i“1 i“1 λ λ X 1 ` αi “ |M| 1 ` λ ` 1 λ ` 1 i“1 ! wegen (5.2) ! Durch Einsetzen der vorausgesetzten Schranke an die Summe erhalten wir hiermit λ´k`1 k`λ´k`1 1 1 ` “ |M| 1 ` ď |M| 1 ` . |M ˚ | ď |M| 1 ` λ`1 pλ ` 1q k pλ ` 1q k k Lemma 5.2. Sei M ein inklusions-maximales Matching. Sei Y eine λ-DAP-Menge, sodass |Y| ď 2δ |M | gilt mit δ “ δpλq. Dann ist M eine 1 ` k1 -Approximation. Beweis. Sei M ˚ ein optimales Matching. Sei X eine kardinalitäts-maximale Menge dis1 junkter augmentierender λ-Pfade (für M ). Dann ist |Y| ě λ`2 |X |, denn jeder Pfad P P Y kann mit höchstens λ ` 2 Pfaden aus X inzidieren, da P zwei freie Knoten und maximal λ Kanten aus M enthält. Es folgt |X | ď pλ ` 2q |Y| ď 2 pλ ` 2q δ |M | “ λ´k`1 |M |. kλ Sei D :“ M 4M ˚ und Di , αi für jedes i P N definiert wie in Lemma 5.1, und sei Z :“ ⋃λi“1 Di . Dann ergibt Z eine Menge |Z| disjunkter M -augmentierender λ-Pfade, P sodass |Z| ď |X |. Somit ist λi“1 αi |M | “ |Z| ď |X | ď λ´k`1 |M |. Lemma 5.1 garantiert kλ 1 nun, dass M eine p1 ` k q-Approximation ist. Welche Werte sind wünschenswert für λ? Je länger die Pfade sind, desto teurer ist vermutlich ihre Konstruktion, ein Grund für kleines λ. Andererseits wünschen wir uns für eine schnelle √ Terminierung ein großes δ. Die Funktion λ ÞÑ δpλq steigt an bis λ “ k ´ 1 ` k 2 ´ 1 ď 2k ´ 1 ist und fällt danach ab. Da wir nur ganzzahlige Werte für λ verwenden, ist der größte zu betrachtende Wert λ “ 2k ´ 1. Der kleinste Wert ist λ “ k. Den Bereich dazwischen parametrisieren wir wie folgt: λpγq :“ dk p1 ` γqe ´ 1 für alle γ P [1{k, 1] . 42 (5.3) 5.3. Beschreibung des DAP-Approximationsalgorithm Betrachte das Setting λ :“ λpγq und δ :“ δpλq. Eine Erhöhung des γ-Wertes erhöht sowohl die Pfadlänge als auch δ, was bedeutet, dass wir uns mit einer weniger guten Approximation durch den DAP-Algorithmus zufrieden geben und zugleich die Bedingung für die Beendigung der Hauptschleife lockern. Der γ-Wert steuert also einen Kompromiss zwischen Pfadlänge und Halte-Kriterium. In der Praxis sollte daher mit verschiedenen γ-Werten experimentiert werden. 5.3. Beschreibung des DAP-Approximationsalgorithm Im vorigen Abschnitt haben wir ein algorithmisches Gerüst geschaffen, aber es fehlt uns noch ein pλ, δq-DAP-Approximationsalgorithmus als der wesentliche Bestandteil. Einen solchen geben wir in diesem Abschnitt an. Er basiert auf der Arbeit [EKM+12] und hat eine Pass-Garantie von Opk 5 q. Algorithmus 12 gibt die genaue Beschreibung des Algorithmus. Der Zustand der Schleife, die in Zeile 4 beginnt ist (im Wesentlichen) gegeben durch: • für jede Matching-Kante m P M eine Positionsgrenze `pmq P {1, . . . , k ` 1}, • die verbleibenden Knoten in V 1 , • für jedes α P freepAq einen λ-Pfad P pαq “ pα, . . .q, der konstruierter Pfad genannt wird, • eine boolesche Variable stuckα , die als Indikator dafür benutzt wird, ob P pαq am Ende einer Sackgasse angelangt ist und Backtracking notwendig ist. Die Menge der konstruierten Pfade wird in unvollständige Pfade I und augmentierende Pfade A partitioniert. Die Menge I besteht aus M -alternierenden Pfaden, die (noch) nicht zu M -augmentierenden Pfaden vervollständigt werden konnten. Die Menge A besteht aus M -augmentierenden Pfaden. Sie ist das Resultat des DAP-Approximationsalgorithmus bei dessen Terminierung. Sobald ein unvollständiger Pfad zu einem M -augmentierenden Pfad vervollständigt wird, wird dieser von I nach A verschoben und im weiteren Verlauf des Algorithmus nicht wieder angerührt. Seine Knoten weren dabei aus V 1 gelöscht. Zur Laufzeit des Algorithmus gelten für die konstruierten Pfade einige Invarianten: • Je zwei konstruierte Pfade sind disjunkt. • Alle konstruierten Pfade sind M -alternierend. • Die Knoten der Pfade liegen abwechselnd in A und B. • Unvollständige Pfade enden mit einem Knoten in A, und wenn sie positive Länge haben, so enden sie mit einer Matching-Kante. 43 Kapitel 5. Streaming-Algorithmen Algorithm 12: Positionbegrenzungs-Algorithmus für die DAP-Approximation Input: Parameter λ P N und δ ą 0, inklusions-maximales Matching M Output: Eine Menge A von M -augmentierenden λ-Pfaden 1 foreach m P M do `pmq :“ λ ` 1; 1 2 A :“ H; I :“ H; V :“ A Y B; 3 foreach α P freepAq do P pαq :“ pαq; I :“ I Y {P pαq}; 4 repeat 5 foreach α P freepAq do stuckα :“ true; 6 foreach e “ {a, b} P E do /* nimm an, dass a P A, b P B */ 7 if a, b P V 1 und DP pα˚ q “ pα˚ , . . . , aq P I then /* Position der mutmaßlichen neuen Matching-Kante: 8 9 10 11 12 13 14 15 16 17 18 19 20 21 */ |P pα˚ q| 2 i :“ ` 1; if b ist freier Knoten then P pα˚ q :“ pα˚ , . . . , a, e, bq; A :“ A Y {P pα˚ q}; /* speichere */ ˚ I :“ Iz{P pα q}; V 1 :“ V 1 zV pP pα˚ qq; else if i ă `pmq mit m “ {b, Mb } then if b ist in keinem unvollständigen Pfad then P pα˚ q :“ pα˚ , . . . , a, e, b, m, Mb q; stuckα˚ :“ false; `pmq :“ i; else sei α̃ so, dass P pα̃q “ pα̃, . . . , ã, ẽ, b, m, Mb , . . .q P I; /* schiebe rechten Zweig von b von P pα̃q nach P pα˚ q: */ P pα̃q :“ pα̃, . . . , ãq; P pα˚ q :“ pα˚ , . . . , a, e, b, m, Mb , . . .q; stuckα̃ :“ false; stuckα˚ :“ false; passe `-Werte auf den neuen Kanten von P pα˚ q an; 22 23 24 25 26 Ią0 “ {P P I ; |P | ą 0} if |Ią0 | ď δ |M | then return A; foreach P pα1 q P Ią0 mit stuckα1 “ true do entferne die letzten zwei Kanten von P pα1 q; /* beachte, dass 27 28 29 30 44 until endlos; */ /* Backtracking */ 5.3. Beschreibung des DAP-Approximationsalgorithm Wir stellen uns vor, dass die konstruierten Pfade von links nach rechts verlaufen. In jedem unvollständigen Pfad schließt sich somit rechts von jedem Knoten aus B eine Matchingkante an. Wenn eine Matching-Kante m in einem unvollständigen Pfad P enthalten ist, ist ihre Positionsgrenze `pmq gerade so, dass m in P genau die `pmq-te Matching-Kante von links ist, insgesamt also die 2 `pmq-te Kante. Die Positionsgrenzen werden für alle m P M als `pmq :“ λ ` 1 initialisiert (was für Kanten innerhalb eines konstruierten Pfades ein nicht erreichbarer Wert ist), und die konstruierten Pfade sind zu Beginn P pαq :“ pαq für alle α P freepAq, haben also alle Länge 0. Während eines Passes über die Eingabe versucht der Algorithmus die konstruierten Pfade zu verlängern. Ein Lauf durch die „foreach“-Schleife von Zeile 6 bis Zeile 26 bedeutet einen Pass über die Eingabe. Wir erklären zunächst, was während eines Passes mit jeder Kante geschieht. Die aktuelle Kante zwischen zwei verbliebenen Knoten sei e “ {a, b}, a P A, b P B. Wir testen, ob wir e zur Erweiterung eines unvollständigen Pfades benutzen können und wollen. Ein Pfad P pα˚ q kann nur dann Verlängert werden, wenn er a als Endknoten hat, also falls P pα˚ q “ pα˚ , . . . , aq. Da alle Pfade paarweise disjunkt sind, kann es höchstens einen Pfad geben, der dies erfüllt. Gibt es keinen solchen Pfad, so verwerfen wir e und setzen den Pass mit der nächsten Kante fort. Ansonsten sei P pα˚ q “ pα˚ , . . . , aq der gefundene Pfad. Wir unterscheiden die folgenden beiden Fälle. Der erste Fall ist, dass b ein freier Knoten ist. Dann haben wir einen M -augmentierenen Pfad gefunden, nämlich P :“ pα˚ , . . . , a, e, bq. Wir setzen A :“ A Y {P }, I :“ Iz{P pα˚ q} und aktualisieren die Menge der verbliebenen Knoten V 1 . Da unsere ApproximationsTheorie auf inklusions-maximalen Mengen M -augmentierender Pfade basiert, ist plausibel, dass wir mit der erstbesten Möglichkeit, einen unvollständigen Pfad zu einem augmentierenden Pfad zu vervollständigen, nichts verkehrt machen können. Für den zweiten Fall, dass b gematched ist, sei m :“ {b, Mb } P M . Wir prüfen, ob wir unterhalb der Positionsgrenze von m bleiben. Trifft dies zu, so setzen wir stuckα˚ :“ false, da P pα˚ q verlängert werden wird. 3 Es sind hier zwei Unterfälle zu betrachten. Falls m auf keinem unvolständigen Pfad liegt (es ist dann auch in keinem konstruierten Pfad enthalten), setzen wir P pα˚ q :“ pα˚ , . . . , a, e, b, m, Mb q und `pmq :“ i. Wir erweitern den unvollständigen Pfad also rechts um e und die Matching-Kante m und aktualisieren die Positionsgrenze von m entsprechend. Falls m bereits in einem anderen unvollständigen Pfad P pα̃q “ pα̃, . . . , ã, ẽ, b, m, Mb , . . .q enthalten ist (die Reihenfolge ist p. . . , b, m, Mb , . . .q, da b P B, Mb P A und stets e ‰ ẽ gilt), verschieben wir b Vor jedem Pass setzen wir stuckα :“ true für alle α. Ein Pfadende wird nur dann nicht als Sackgasse betrachtet, wenn es modifiziert wird. Wir erklären die Bedeutung der „stuck“-Indikatoren später detailierter. 3 45 Kapitel 5. Streaming-Algorithmen samt der rechten Fortsetzung P pα̃q nach P pα˚ q, d.h. wir setzen P pα̃q :“ pα̃, . . . , ãq und P pα˚ q :“ pα˚ , . . . , a, e, b, m, Mb , . . .q. Weil sich P pα̃q hierbei ändert, muss zuätzlich stuckα̃ :“ false gesetzt werden, da es nun eine mögliche Verlängerung von P pα̃q um eine im aktuellen Pass bereits betrachtete Kante e P E geben könnte. Wir setzen `pmq :“ i und aktualisieren auch die Positionsgrenzen jeder Matching-Kante, die auf dem soeben verschobenen Teilpfad rechts von m liegt, d.h. für die nächste Matching-Kante m1 setzen wir `pm1 q :“ i ` 1, und so weiter. Nach jedem Pass wird getestet, ob wir mit einem weiteren Pass fortfahren oder mit der Rückgabe A zur Hauptschleife zurückkehren. Wir sind fertig, wenn |Ią0 | ď δ |M |. Später werden wir zeigen, dass der Algorithmus nicht mehr als |Ią0 | zusätzliche M augmentierende Pfade finden kann. Unmittelbar nach dem Test findet, falls nötig, in Zeilen 28 und 29 das Backtracking statt. Backtracking wird auf jeden Pfad P pαq angewendet, der in seiner aktuellen Form in der nächsten Iteration nicht weiter wachsen könnte. Dies ist der Fall, wenn das Ende von P pαq im vorangegangenen Pass nicht modifiziert wurde, was durch seinen Indikator stuckα angezeigt wird. Beim Backtracking entfernen wir die letzten beiden Kanten jedes unvollständigen Pfades Ią0 , der entsprechend gekennzeichnet ist, d.h. für alle α P freepAq mit P pαq P Ią0 und stuckα “ true und aktuellem P pαq “ pα, . . . , a, e, b, m, a1 q setzen wir P pαq :“ pα, . . . , aq. Wir dürfen das an dieser Stelle tun, da alle zulässigen Pfaderweiterungen schon ausprobiert wurden. Die entfernten Kanten werden aufgrund ihrer Positionsgrenzen nicht noch einmal an dieser Position von P pαq eingefügt werden. Dadurch eröffnet sich für andere Kanten die Möglichkeit in einem der weiteren Pässe eingefügt zu werden. Anschaulich liegen am Anfang alle Matching-Kanten auf der rechten Seite an Position λ ` 1. Dies ist keine Position, die sich innerhalb eines konstruierten Pfades befinden kann. Danach wandern Matching-Kanten nach links. Jedesmal, wenn eine Matching-Kante m in einen kostruierten Pfad eigefügt wird, wandert sie um mindestens eine Position nach links, einhergehend mit einer Reduzierung ihrer Positionsgrenze `pmq. Wird eine Kante durch Backtracking entfernt, so ändert sich ihre Positionsgrenze nicht, sodass sie an jeder Position, die weiter links als ihre letzte Position liegt, wieder eingefügt werden kann. Insbesondere wird keine Positionsgrenze im Verlauf des Algorithmus größer. Wenn eine Matching-Kante auf der linken Seite angekommen ist, ihre Positionsgrenze also auf 1 gefallen ist, und danach durch Backtracking entfernt wird, wird sie nicht wieder in einen konstruierten Pfad eingesetzt werden. Befindet sich eine Kante in einem konstruierten 46 5.3. Beschreibung des DAP-Approximationsalgorithm Pfad, so ist Backtracking in Zeile 29 die einzige Möglichkeit, sie wieder außerhalb aller konstruierten Pfade zu bringen. Wir schließen den Abschnitt mit einer graphischen Demonstration möglicher Operationen des DAP-Approximationsalgorithmus für λ “ k “ 7. Die konstruierten Pfade werden von links nach rechts gezeichnet. In der folgenden Skizze sind fünf konstruierte Pfade positiver Länge und ein konstuierter Pfad der Länge 0 eingezeichnet. Wenn die hereinkommende gepunktete Kante einen freien Knoten (auf der rechten Seite) hat, wird der vierte Pfad von oben zu einem augmentierenden Pfad vervollständigt und sofort in A gespeichert: i“4 k`1“8 Wenn hingegen der zweite Endknoten der gepunkteten Kante gematched ist, wir also eine Matching-Kante m haben, wird geprüft, ob m zur Verlängerung des konstruierten Pfades verwendet werden kann. Da wir es mit Position i “ 4 zu tun haben, wird geprüft, ob 4 ă `pmq gilt. Ist dies der Fall, wird der Pfad um die gepunktete Kante und die Matching-Kante m erweitert und die Positionsgrenze von m zu `pmq :“ 4 aktualisiert: m i“4 k`1“8 Sollte m bisher keinem konstruierten Pfad angehören, geschieht an dieser Stelle weiter nichts. Als Nächstes betrachten wir den Fall, dass die eingehende Kante das Ende des 47 Kapitel 5. Streaming-Algorithmen vierten konstruierten Pfades mit einer Matching-Kante verbindet, die sich innerhalb des ersten konstruierten Pfades befindet. m1 m2 m3 k`1“8 i“4 Hier wird geprüft, ob wir m1 und die Fortsetzung des Pfades rechts davon (mit den Matching-Kanten m2 und m3 ) benutzen können, um den vierten Pfad zu erweitern. Dazu ist nur die Positionsgrenze von m1 relevant. Wir prüfen 4 ă `pm1 q, was wegen `pm1 q “ 5 erfüllt ist. Somit wird m1 samt der rechten Pfadfortsetzung vom ersten konstruierten Pfad zum vierten konstruierten Pfad verschoben und die Positionsgrenzen entsprechend aktualisiert durch `pm1 q :“ 4 und `pm2 q :“ 5 und `pm3 q :“ 6: m1 i“4 m2 m3 k`1“8 Wenn nun eine der gepunkteten Kanten in der folgenden Skizze herein kommt, passiert nichts, weil die Positionsgrenzen von m und m1 zu klein sind, nämlich `pmq “ 2 und `pm1 q “ 4, aber für eine Verschiebung echt größer als 4 sein müssten: 48 5.4. Analyse: Approximationsratio m1 m i“4 k`1“8 Die folgende Situation kann wegen der Bipartitheit des Graphen nicht entstehen: i“4 k`1“8 5.4. Analyse: Approximationsratio Wir zeigen in zwei Schritten, dass Algorithmus 12 ein pλ, δq-DAP-Approximationsalgorithmus ist. Zuerst zeigen wir, dass eine Verschärfung des Abbruchkriteriums dazu führt, dass er eine λ-DAP-Menge findet. Danach beweisen wir, dass wir mit dem eigentlichen Abbruchkriterium nur δ |M | weitere M -augmentierende Pfade verfehlen. Die beiden Eigenschaften ergeben die Definition eines pλ, δq-DAP-Approximationsalgorithmus. Schließlich benutzen wir Lemma 5.2, um die Approximationsgüte zu beweisen. Wir beginnen mit einer einfachen Proposition, die wir an zwei Stellen benutzen werden. Proposition 5.3. Wenn ein unvollständiger Pfad nach einem Pass Länge 0 hat, so hatte er bereits vor dem Pass Länge 0. 49 Kapitel 5. Streaming-Algorithmen Beweis. Wir müssen lediglich nachweisen, dass keine der in einem Pass ausgeführten Operationen die Länge eines Pfades auf 0 reduzieren kann. Pfade werden nur in Zeile 22 reduziert, wenn wir von pα̃, . . . , ã, ẽ, b, m, Mb , . . .q zu pα̃, . . . , ãq übergehen. Der Test in Zeile 15 stellt 2 ď `pmq sicher, sodass der neue Pfad nicht Länge 0 haben kann. Lemma 5.4. Wenn die Bedingung „|Ią0 | ď δ |M |“ in Zeile 27 durch „|Ią0 | “ 0“ ersetzt wird, findet der Algorithmus eine λ-DAP-Menge. Beweis. Sei die Abbruchbedingung in Zeile 27 also „|Ią0 | “ 0“. Betrachte den Zeitpunkt, zu dem diese Bedingung erreicht ist und der Algorithmus terminiert. Wir nehmen an, dass dann ein augmentierender Pfad pα, e1 , v1 , m1 , . . . , mr , v2r , er`1 , βq in G mit 1 ď r ď k, ej R M für alle 1 ď j ď r ` 1, mj P M für alle 1 ď j ď r sowie α P freepAq und β P freepBq existiert, der zu allen Pfaden in A disjunkt ist. Wir werden zeigen, dass diese Annahme zu einem Widerspruch führt. Wir werden per Induktion über j von j “ r hinab bis 1 zeigen, dass `pmj q ą j für alle 1 ď j ď r gilt. Insbesondere ist `pm1 q dann immer größer als 1, da die Werte der Positionsgrenzen nicht ansteigen. Wir können dann wie folgt schließen: Zu Beginn des Algorithmus wird der freie Knoten α zum Startknoten eines unvollständigen Pfades erklärt. Da α am Ende in keinem M -augmentierenden Pfad aus A enthalten ist, bleibt sein Pfad die ganze Zeit über unvollständig. Wenn am Ende die Abbruchbedingung erfüllt ist, gibt es keine unvollständigen Pfade positiver Länge mehr, d.h. alle verbliebenen unvollständigen Pfade bestehen aus nur einem Knoten. Der Pfad P pαq ist einer davon. Wegen Proposition 5.3 muss P pαq schon zu Beginn des Passes Länge 0 gehabt haben. Es sind jedoch die Kante e1 , die α als Endknoten hat, sowie m1 immer in GrV 1 s. Somit tritt α in irgendeinem Pass als Knoten a auf mit einem b, sodass a, b P V 1 und {b, Mb } “ m1 . Wegen `pm1 q ą 1 wird die Bedingung in Zeile 15 wahr, was dazu führt, dass e1 und m1 hinter α hinzugefügt werden. Sie verbleiben dann dort bis zum Ende des Passes. Dies ist ein Widerspruch dazu, dass nach diesem Pass keine unvollständigen Pfade positiver Länge übrig sind und beweist somit das Lemma. Wir beginnen die Induktion bei j “ r. Angenommen, `pmr q ď r ă λ ` 1. Das bedeutet, dass mr zunächst in einen unvollständigen Pfad eingefügt und anschließend durch Backtracking wieder entfernt worden sein muss, da mr am Ende in keinem Pfad aus Ią0 (diese Menge ist am Ende leer) und auch in keinem Pfad aus A enthalten ist. Wenn mr durch Backtracking entfernt worden ist, muss sie direkt nach einem Pass das Ende eines unvollständigen Pfades P pα1 q gewesen sein, der eine Sackgasse war. Das Steckenbleiben in einer Sackgasse bedeutet aber, dass im vorherigen Pass keine Änderungen an P pα1 q vorgenommen wurden. Somit hatte P pα1 q die Form pα1 , . . . , mr , v2r q während des gesamten Passes. Dann aber wäre P pα1 q wegen er`1 “ {v2r , β} P E in jenem Pass zu pα1 , . . . mr , v2r , er`1 , βq vervollständigt worden, ein Widerspruch. 50 5.4. Analyse: Approximationsratio Für den Induktionsschritt sei 1 ď j ă r und es gelte, dass `pmj 1 q ą j 1 for all j ă j 1 . Wir argumentieren ähnlich wie eben. Angenommen, `pmj q ď j ă λ ` 1. Dann wurde mj in einen unvollständigen Pfad eingefügt und durch Backtracking wieder entfernt. Während eines Passes direkt vor einer Entfernung muss mj ständig das Ende eines unvollständigen Pfades gewesen sein. Wegen `pmj q ď j muss mj irgendwann höchstens an Position j eines unvollständigen Pfad gelegen haben. Wir betrachten nun einen Pass, während dessen mj dauerhaft am Ende eines unvollständigen Pfades liegt und `pmj q ď j gilt. Wenn eine Matching-Kante m am Ende dieses Pfades eingefügt werden soll, wird geprüft, ob `pmq ą `pmj q ` 1 ist. Letzteres ist insbesondere erfüllt, falls `pmq ą j ` 1 ist. Die Matching-Kante mj`1 ist am Ende des Algorithmus in keinem Pfad aus A enthalten. Also ist mj`1 während des Passes entweder in einem unvollständigen Pfad oder in gar keinem konstruiertem Pfad enthalten. Nach Induktionsvoraussetzung ist `pmj`1 q ą j ` 1. Somit werden ej`1 und mj`1 im Laufe des Passes hinter mj eingefügt im Widerspruch dazu, dass mj während des gesamten Passes das Pfadende bildet. Lemma 5.5. Sei r ě 0. Falls Algorithmus 12 mit |Ią0 | “ 0 statt |Ią0 | ď r terminiert, so findet er maximal r weitere disjunkte M -augmentierende λ-Pfade. Beweis. Es genügt zu zeigen, dass ein unvollständiger Pfad der irgendwann in Zeile 27 Länge 0 hat, im weiteren Verlauf des Algorithmus nicht mehr wächst. Sei also P pαq ein Pfad der in Zeile 27 Länge 0 hat, d.h. P pαq “ pαq. Mit Proposition 5.3 hatte dieser Pfad bereits vor dem vorherigen Pass Länge 0. Der Algorithmus konnte den Pfad also während dieses Passes nicht verlängern, d.h. es gab keine Kante e “ {α, b} P E mit `p{b, Mb }q ě 2. Weil die Positionsgrenzen im Laufe des Algorithmus nicht ansteigen, wird es bis zur Terminierung keine solche Kante e P E mehr geben, sodass der Pfad P pαq “ pαq bleibt. Korollar 5.6. Algorithmus 12 ist ein pλ, δq-DAP-Approximationsalgorithmus, d.h. wenn die Ausgabe A ist, so existiert eine inklusions-maximale Menge Y disjunkter M -augmentierender λ-Pfade mit |Y| ď |A| ` δ |M |. Beweis. Wende Lemma 5.5 mit r :“ δ |M | an und wähle Y als die Menge der M augmentierender Pfade, die mit der Abbruchbedingung „|Ią0 | “ 0“ konstruiert worden wäre. 51 Kapitel 5. Streaming-Algorithmen 5.5. Analyse: Pass-Garantie und Speicherbedarf Lemma 5.7. Algorithmus 12 benötigt höchstens 2λδ ´1 ` 1 Pässe. Beweis. Sei Π die Menge aller Pässe ohne dem letzten Pass, nach welchem die Bedingung in Zeile 27 erfüllt ist und der Algorithmus terminiert. Für alle π P Π sei ipπq die Anzahl der Ausführungen von Zeile 19 während π, apπq die Anzahl der Ausführungen von Zeile 26 während π, und bpπq die Anzahl der Ausführungen von Zeile 29 direkt nach π. Wir zählen also die Ereignisse, in denen eine Matching-Kante in einen Pfad eingefügt wird, die zuvor noch nicht Teil eines Pfades war, oder die Positionsgrenzen eines verschobenen rechten Pfadendes angepasst werden, oder eine Matching-Kante durch Backtracking aus einem Pfad entfernt wird. Jede Positionsgrenze `pmq, m P M wird durch `pmq “ λ ` 1 initialisiert. Somit kann `pmq im Laufe des Algorithmus höchstens λ mal verkleinert werden. Insgesamt wird also höchstens λ |M | mal eine Positionsgrenze verkleinert. Dies passiert jeweils in Zeile 19 X oder Zeile 26. Es folgt (ipπq ` apπq) ď λ |M| . (5.4) πPΠ Fixiere nun einen Pass π P Π. Weil der Algorithmus nicht direkt nach π terminiert, gilt |Ią0 | ą δ |M | in Zeile 27. Das nächste Backtracking wird auf alle Pfade in Ią0 angewendet, die als Sackgasse gekennzeichnet sind. Da direkt vor jedem Pass alle Pfade als Sackgasse gekennzeichnet werden, sind die einzigen Pfade, auf die kein Backtracking angewendet wird, jene für die Zeile 18, Zeile 24 oder Zeile 25 während π ausgeführt wurde. Die Zahl der nicht als Sackgasse markierten Pfade hängt von ipπq und apπq ab. In jeder Ausführung von Zeile 19 wird maximal ein Pfad zusätzlich als nicht stecken geblieben gekenzeichnet, und in jeder Ausführung von Zeile 26 geschieht dies für höchstens zwei weitere Pfade. Mit U pπq :“ {P pαq P Ią0 ; stuckα “ false direkt nach π} folgt |U pπq| ď ipπq ` 2apπq und damit δ |M| ă |Ią0 | “ bpπq ` |U pπq| ď bpπq ` ipπq ` 2apπq . (5.5) Wir summieren nun über alle π P Π. Eine Kante muss in irgendeinen Pfad eingefügt P worden sein, bevor sie durch Backtracking entfernt werden kann. Somit ist πPΠ bpπq ď P πPΠ ipπq. Es folgt: (5.5) |Π| δ |M| ď X πPΠ 52 pbpπq ` ipπq ` 2apπqq ď 2 X (5.4) pipπq ` apπqq ď 2λ |M| , πPΠ 5.5. Analyse: Pass-Garantie und Speicherbedarf also |Π| ď 2λδ ´1 . Da Π den letzten Pass nicht enthält, muss für die Abschätzung der Anzahl aller Pässe 1 addiert werden. Mit Hilfe des Lemmas können wir nun die behauptete Schranke von Opk 5 q Pässen beweisen. Genaugenommen zeigen wir ein allgemeineres Ergebnis. Wir erinnern uns an die verschiedenen Möglichkeiten, λ in Abhängigkeit von γ in (5.3) zu wählen. Wir bestimmen γ mittels γ̃ P r0, 1s durch γ “ k ´γ̃ . Theorem 5.8. Algorithmus 11 (die Hauptschleife) mit Algorithmus 12 als DAP-Approximationsalgorithmus benötigt Opk 5`2γ̃ q Pässe, wenn λ “ λpk ´γ̃ q mit γ̃ P r0, 1s und δ “ δpλq. Beweis. Die Hauptschleife (Algorithmus 11) beginnt mit einem inklusions-maximalen Matching M “: M0 . In jeder Iteration, außer ggf. der letzten, wächst das Matching um mindestens δ |M0 |. Da M0 als inklusions-maximales Matching eine 12 -Approximation ist, kann es insgesamt um nicht mehr als |M0 | wachsen. Es gibt also maximal δ ´1 ` 1 Iterationen. Mit Lemma 5.7 braucht jede Iteration höchstens 2λδ ´1 ` 1 Pässe. Nun ist einerseits λ “ dk p1 ` k ´γ̃ qe´1 ď 2k und andererseits λ´k`1 “ dk p1 ` k ´γ̃ qe´k ě k 1´γ̃ , also 2kλ pλ ` 2q δ ´1 “ ď 2k γ̃ λ pλ ` 2q “ O(k 2`γ̃ ) . λ´k`1 Es folgt als obere Schranke für die Anzahl aller Pässe: (δ ´1 ` 1) (2λδ ´1 ` 1) “ O(k 2`γ̃ ) ¨ O(λk 2`γ̃ ) “ O(k 5`2γ̃ ) . Theorem 5.9. Algorithmus 11 mit Algorithmus 12 als DAP-Approximationsalgorithmus hat einen Speicherbedarf von Opn log nq Bits, ist also ein Semi-Streaming-Algorithmus. Beweis. Um eine Kante zu speichern, müssen wir ihre Endknoten speichern, also zwei Zahlen in {1, . . . , n}, d.h. wir brauchen dazu Oplog nq Bits. Alle zwischenzeitlichen Matchings M haben jeweils Opnq Kanten. Alle konstruierten Pfade, die gleichzeitig gespeichert werden müssen, sind disjunkt und haben damit insgesamt Opnq Kanten. Wir brauchen also Speicher für Opnq Kanten, also Opn log nq Bits. Zudem müssen die Positionsgrenzen gespeichert werden, also Op|M |q “ Opnq Zahlen aus {1, . . . , λ ` 1}, d.h. insgesamt Opn log λq Bits. Wir dürfen λ “ Opnq annehmen, da durch größere λ keine Verbesserungen erzielt werden können (es gibt keine augmentierenden Pfade mit mehr als n Knoten). Offenbar können alle weiteren Informationen, wie die Menge der verbliebenen Knoten V 1 und die Positionen i durch Opnq Zahlen aus {1, . . . , n} und damit durch Opn log nq Bits dargestellt werden. 53 Kapitel 6 Lineare Programmierung – Dualitätssatz 6.1. Polyeder Polyeder sind fundamentale geometrische Objekte, deren Studium eine reiche und lebendige mathematische Theorie hervorgebracht hat. Eine Möglichkeit, Polyeder im Rn einzuführen besteht darin, sie als Durchschnitt von endlich vielen Halbräumen zu definieren. Daher beschreiben Polyeder nichts anderes als Systeme von Ungleichungen. Ein grundlegendes Problem der Kombinatorischen Optimierung ist die Maximierung oder Minimierung von linearen oder nicht-linearen Zielfunktionen über einem Polyeder. Wir beschränken uns in dieser Vorlesung auf lineare Zielfunktionen. Dies wirft unmittelbar die Frage auf, ob es etwa ausgezeichnete Bereiche von Polyedern gibt, auf denen die Optima angenommen werden, in Analogie zu dem in der Analysis bekannten Maximierungsprinzip, nach dem eine stetige lineare Funktion über einer kompakten Menge ihr Maximum auf dem Rand des Kompaktums annimmt. In diesem Kapitel werden wir extremale Bereiche von Polyedern untersuchen, die für die Optimierung von Bedeutung sind. Eine Menge K Ď Rn heißt konvex, wenn für alle x, y P K und λ P r0, 1s gilt λx`p1´λqy P K. Dies bedeutet, dass die Strecke L “ {λx ` p1 ´ λqy ; λ P r0, 1s} ganz in K liegt. Ein Vektor x P Rn ist konvexe Kombination der Vektoren y1 , . . . , yr , falls Zahlen P P λ1 , . . . , λr P r0, 1s mit ri“1 λi “ 1 existieren, derart dass x “ ri“1 λi yi gilt. Der Vektor x heißt strikte konvexe Kombination, falls zusätzlich yi ‰ x für alle i P 1, . . . , r gilt. 55 Kapitel 6. Lineare Programmierung – Dualitätssatz Die konvexe Hülle copKq einer Menge K Ď Rn ist der Durchschnitt aller konvexen Mengen, die K enthalten, also copKq “ \ K̂ K̂ĚK,K̂konvex Bemerkung: Die konvexe Hülle copKq einer Menge K Ď Rn besteht aus allen Vektoren, die eine konvexe Kombination von Vektoren aus K sind. Für konvexe Mengen können wir die Extremalpunkte oder Ecken definieren: Definition 6.1. Sei K Ď Rm konvex. x P K heißt Extremalpunkt oder Ecke von K, falls aus der Darstellung x “ λy ` p1 ´ λqz mit y, z P K, λ P p0, 1q folgt x “ y “ z. Die Menge der Extremalpunkte von K wird mit expKq bezeichnet. Sei a P Rn \{0} und c P R. Eine Hyperebene in Rn ist eine Menge der Form H “ P {x P Rn ; aT x :“ ni“1 ai xi “ c}. Ein Halbraum ist eine Menge der Form H “ {x P Rn ; aT x ě c}. Definition 6.2. Ein Polyeder in Rn ist der Durchschnitt endlich vieler Halbräume in Rn . Ein Polytop ist ein beschränktes Polyeder. Ein allgemeines Polyeder P in Rn ist daher eine Menge der Form P “ {x P Rn ; Ax ď b} wobei A P Rmˆn und b P Rm . Halbräume sind konvex, daher sind auch Polyeder als endliche Durchschnitte von Halbräumen konvex. Sei S Ď Rn . Ein Vektor x P Rn ist affine Kombination von Vektoren x1 , . . . , xk Ď Rn , P P falls λ1 , . . . , λk P R existieren mit ki“1 λi “ 1 und x “ ki“1 λi xi . Die affine Hülle affpSq von S ist die Menge aller Vektoren, die affine Kombinationen von Vektoren aus S sind. S heißt affiner Raum, falls affpSq “ S gilt. Weiter heißt S affin unabhängig, wenn kein Element aus S affine Kombination von Vektoren aus S ist. Der affine Rang arangpSq von S ist die Kardinalität einer größten in S enthaltenen, affin unabhängigen Menge, und die Dimension dimpSq von S ist definiert als dimpSq “ arangpSq´1. S heißt voll-dimensional, falls dimpSq “ n. Definition 6.3. Sei P “ {x P Rn ; Ax ď b} ein nicht-leeres Polyeder, a P Rn und b0 P R. (i) Eine Ungleichung aT x ď b0 heißt gültig für P , falls P Ď {x ; aT x ď b0 }. (ii) Für eine gültige Ungleichung aT x ď b0 heißt F “ {x P P ; aT x “ b0 } eine Seite von P . F heißt echt, falls F ‰ H und F ‰ P gilt. 56 6.1. Polyeder (iii) Eine Seite F heißt Facette, falls dimpF q “ dimpP q ´ 1. (iv) Eine Ecke von P ist eine Seite der Dimension 0. Wir benötigen etwas affine Algebra. Im Folgenden sei P stets ein Polyeder P “ {x P Rn ; Ax ď b} mit A P Rmˆn , b P Rm und n ď m . Sei weiter I “ {1, ¨ ¨ ¨ , m} und I “ :“ {i P I ; aTi x “ bi für alle x P P } die Menge der Ungleichungen, die für alle Punkte aus P mit Gleichheit erfüllt sind und I ă :“ I\I “ . Sei A“ :“ pai qiPI “ bzw. b“ :“ pbi qiPI “ die entsprechende Untermatrix von A bzw. der entsprechende Teilvektor von b. Mit P “ bezeichnen wir das Polyeder P “ “ {x P P ; Ax “ b}. Es ist nützlich, innere Punkte im algebraischen Sinn von dem Begriff des inneren Punktes im topologischen Sinn zu unterscheiden. Definition 6.4. Ax ă b. (i) x P P heißt innerer Punkt von P (im topologischen Sinn), falls (ii) x P P heißt algebraisch innerer Punkt von P , falls pai qT x ă bi für alle i P I ă . Proposition 6.5. (i) Jedes nicht-leere Polyeder besitzt einen algebraisch-inneren Punkt. (ii) a1 , . . . , ak P Rn sind genau dann affin unabhängig, wenn a2 ´ a1 , . . . , ak ´ a1 linear unabhängig sind. Beweis. piq Ist I ă “ H , so sind alle Punkte algebraisch-innere Punkte. Ist I ă ­“ H, so P gibt es für jedes i P I ă ein xi P P mit ai xi ă bi . Sei x̂ :“ |I1ă | iPI ă xi . Offenbar gilt x̂ P P und x̂ ist algebraisch-innerer Punkt. piiq Übungsaufgabe. Satz 6.6. Sei P ein nicht-leeres Polyeder. (i) dimP “ ` rangpAq “ n. (ii) dimP ` rangpA“ , b“ q “ n. (iii) P ist genau dann volldimensional, wenn P einen inneren Punkt im topologischen Sinn enthält. 57 Kapitel 6. Lineare Programmierung – Dualitätssatz Beweis. piq P “ ist ein affiner Unterraum und arangpP “ q “ dimpKerpAqq ` 1. Mit dem Rangsatz der Linearen Algebra folgt dimpP “ q “ arangpP “ q ´ 1 “ dimpKerpAqq “ n ´ rangpAq. piiq Sei rangpA“ , b“ q “ n ´ k, 0 ď k ď n. Wir können rangpA“ , b“ q “ rangpA“ q annehmen. Es gibt x1 , . . . , xk`1 affin unabhängigie Vektoren in KerpA“ q. Sei x˚ P P ein algebraisch innerer Punkt von P . Für hinreichend kleines ą 0 sind x˚ ` xi affin unabhängige Vektoren in P , also dimpP q ě k und dimpP q ` rangpA“ , b“ q ě n. Wir sind fertig, wenn wir dimpP q ď k zeigen können. Angenommen dimpP q ě k ` 1. Seien x1 , . . . , xk`l , l ě 2, affin unabhängige Vektoren in P . Per Definition ist xi P {A“ x “ b“ }, also dim{A“ x “ b“ } ě k ` 1 und mit piq angewandt auf das Polyeder Q “ {A“ x “ b“ } gilt rangpA“ q “ n ´ dimQ “ n ´ dim{A“ x “ b“ } ď n ´ k ´ 1 ă n ´ k im Widerspruch zu rangpA“ q “ n ´ k. piiiq folgt sofort aus piiq. Die Anzahl verschiedener Seiten eines Polyeders ist endlich, denn eine Seite lässt sich als Teilsystem der Ungleichungen, die das Polyeder definieren, charakterisieren. Ein zentrales Problem in der Geometrie und Analysis ist die Charakterisierung der Extremalpunkte einer konvexen Menge K in einem topologischen Vektorraum. Diese Frage wird im allgemeinen durch den berühmten Satz von Krein-Milman beantwortet. Dieser Satz kann so formuliert werden: Sei K Ď Rn , K ‰ H konvex und kompakt. Dann gilt expKq ‰ H und K “ copexpKqq, d.h. die Menge K ist die konvexe Hülle ihrer Extremalpunkte. Beim Satz von Krein-Milman ist die Kompaktheit gefordert, insbesondere die Beschränktheit der Menge. Auf beliebige Polyeder, die nicht notwendig beschränkt sind, ist dieser Satz nicht anwendbar. Hier lassen sich die Ecken aber mit Hilfe algebraischer Eigenschaften der zugrundeliegenden Matrizen charakterisieren. Im folgenden sei A P Rmˆn und b P Rm . Satz 6.7. Es sei A P Rmˆn mit rangpAq “ n ď m, b P Rm und P “ {x P Rn ; Ax ď b}. Für alle x P P sind äquivalent: (i) x P expP q. 58 6.1. Polyeder (ii) Es gibt n linear unabhängige Zeilenvektoren ai von A mit ai x “ bi für alle i. Insbesondere ist x eindeutig bestimmte Lösung eines Teilsystems Ax x “ bx , wobei Ax aus den Zeilenvektoren ai besteht und bx der Vektor mit den entsprechenden Komponenten von b ist. (iii) {x} ist eine null-dimensionale Seite von P . Beweis. piq ñ piiq : Sei x P expP q. Dann gibt es mindestens einen Zeilenvektor ai von A mit ai x “ bi , denn andernfalls wäre Ax ă b, d.h. x liegt im Innern von P und es gäbe eine Kugel B pxq, die ganz im Innern von P liegt. Dann wäre x aber kein Extremalpunkt. Sei Ax die Matrix, deren Zeilenvektoren gerade die ai mit ai x “ bi sind und sei bx der Vektor mit den entsprechenden Komponenten von b. Annahme: rangpAx q ď n ´ 1. Sei x0 P KerpAx qz{0} und γ P R. y “ x ´ γx0 und z “ x ` γx0 . Für hinreichend kleine γ ą 0 gilt y, z P P . Ferner haben wir die Darstellung x “ 12 y ` 21 z im Widerspruch zu x P expP q. piiq ñ piiiq : Sei F “ {y P P ; Ax y “ bx }. Mit Satz 6.6 gilt dimpF q “ n ´ rangpAx q, also dimpF q “ 0, denn sonst wäre rangpAx q ď n ´ 1 im Widerspruch zur Voraussetzung (ii). piiiq ñ piq : Nach Voraussetzung ist {x} eine Seite von P , d.h. es gibt eine gültige Ungleichung cJ x1 ď c mit F “ {x1 P P ; cJ x1 “ c} “ {x}. Wäre x eine konvexe Kombination von Vektoren y, z P P , so hätten wir c “ cJ x “ cJ y “ cJ z, also y, z P F und x “ y “ z. Ein allgemeines Polyeder muss überhaupt keine Ecken besitzen. Eine geometrischanschauliche Charakterisierung, wann Ecken existieren, gibt der folgende Satz. Satz 6.8. Sei P “ {x P Rn ; Ax ď b} ein nicht-leeres Polyeder. P enthält eine Gerade genau dann, wenn expP q “ H. Beweis. Wir beweisen nur Ñ. Für Ð siehe Chvatal: Linear Programming. Sei x˚ ` tw, t P R eine Gerade in P . Dann gilt Ax˚ ď b und Aw “ 0. Angenommen x P expP q. Nach Satz 6.7 ist dann x eine eindeutige Lösung eines Teilsystems Ax x “ bx . Wegen Aw “ 0 ist aber auch x ` w eine Lösung dieses Teilsystems. Widerspruch zur Eindeutigkeit der Lösung. Sei im folgenden P “ {x P Rn ; Ax “ b, x ě 0} mit A P Rmˆn und b P Rm . Für x P P sei Zpxq :“ {j; j P {1, . . . , n}, xj ą 0} Spxq :“ {aj ; aj Spaltenvektor von A, j P ZpXq} 59 Kapitel 6. Lineare Programmierung – Dualitätssatz Dann ist b “ Ax “ x j aj . X jPZpxq Satz 6.9. Ist P wie oben und P ‰ H, so ist expP q ‰ H. Beweis. Sei x P P so gewählt, dass Zpxq minimal ist. Annahme: x R expP q. Dann existieren y, z P P, x ‰ y, λ P p0, 1q mit x “ λy ` p1 ´ λqz. Für j R Zpxq gilt P P yj “ zj “ 0. Also ist b “ Ay “ jPZpxq yj aj und b “ Az “ jPZpxq zj aj und damit P 0 “ jPZpxq pyj ´ zj qaj . Da y ‰ z existiert k P Zpxq mit yk ‰ zk . Sei vj :“ yj ´ zj für alle j P {1, . . . , n}. Sei ρ :“ min{ |vxjj | ; j P Zpxq, vj ‰ 0} “ |vxkk| für ein k P Zpxq. Sei O.B.d.A. vk ą 0 (sonst vertausche Rollen von y und z). x ´ ρvj , j P Zpxq Sei xj ˚ :“ { j für j “ 1, . . . , n. 0 sonst, Es folgt x˚j “ xj ´ xvkk vj ě 0 für j P Zpxq und x˚k “ xk ´ ρvk “ xk ´ xvkk vk “ 0. Somit ist Zpx˚ q Ă Zpxq sowie Ax˚ “ n X aj x˚j j“1 X “ aj x j ´ ρ jPZpxq X “ “ X aj pyj ´ zj q jPZpxq aj x j jPZpxq n X j a xj j“1 “ b Damit ist x˚ P P . Widerspruch zur Minimalität von Zpxq. Für Ecken ist die Menge der Spaltenvektoren mit Indizes aus der Spaltenmenge unabhängig. Es gilt sogar Satz 6.10. x P expP q genau dann, wenn die Spaltenvektoren apjq , j P Zpxq linear unabhängig sind. Beweis. ñ: (Kontraposition) Sei Spxq linear abhängig, d.h. jPZpxq αj apjq “ 0 mit αj ˚ ‰ 0 für ein j ˚ P Zpxq. Da xj ą 0 für alle j P Zpxq, gibt es ρ P Rz{0} mit xj ´ ραj ą 0 und xj ` ραj ą 0 für alle j P Zpxq. Seien y, z P Rn definiert durch P 60 6.2. Farkas Lemma xj ` ραj , j P Zpxq yj :“ 0 sonst, zj :“ xj ´ ραj , j P Zpxq 0 sonst. Dann gilt y, z P P und x “ 12 y ` 12 z, also x R expP q. ð: (Kontraposition) Sei nun x R expP q. Dann existieren y, z P P , y ‰ z, λ P p0, 1q mit x “ λy ` p1 ´ λqz. Sei α “ y ´ z. Dann ist αj “ 0 für alle j R ZpXq. Weiterhin existiert P ein j ˚ P Zpxq mit aj ˚ ‰ 0, da y ‰ z. Dann ist jPZpXq αj apjq “ 0 und α ‰ 0, also ist S linear abhängig. 6.2. Farkas Lemma Im folgenden sei A P Rmˆn und b P Rm z{0}. Satz 6.11. Genau eine der beiden Möglichkeiten trifft zu: (i) Ax “ b, x P Rn ist lösbar (ii) AT y “ 0, bT y “ ´1, y P Rm ist lösbar. Beweis. Wären piq und piiq gleichzeitig wahr mit Lösungen x P Rn und y P Rm , so hätten wir einen Widerspruch: 0 “ xT AT y “ pAxqT y “ bT y “ ´1. Wir zeigen, dass piiq gilt, falls piq nicht zutrifft. Sei A1 “ pA|bq die erweiterte Matrix, c “ p0, . . . , 0, ´1qT P Rn`1 , U “ ha1 , . . . , an i und U 1 “ ha11 , .. . , a1m i. Ist Ax “ b nicht lösbar, dann ist b R U, also rangpA1 q “ rangpAq ` 1. A1 c Sei A2 “ . Es ist rangpA2 q “ rangpA1 q und somit c P U 1 . c P U 1 ist äquivalent 0 zu piiq. Satz 6.11 hat eine unmittelbar einleuchtende geometrische Interpretation. Liegt b nicht in U, so gibt es einen Vektor y, der auf U senkrecht steht und mit b einen stumpfen Winkel bildet. Die Verallgemeinerung des Satzes 6.11 auf Ungleichungssysteme ist das Lemma von Farkas. Satz 6.12. (Farkas-Lemma I) Genau eine der beiden Möglichkeiten trifft zu: 61 Kapitel 6. Lineare Programmierung – Dualitätssatz (i) Ax “ b, x ě 0, x P Rn ist lösbar, (ii) AT y ě 0, bT y ă 0, y P Rm ist lösbar. Beweis. Zunächst einmal sind piq und piiq Alternativen: Die Annahme, dass x P Rn Lösung von piq und y P Rm Lösung von piiq ist, führt zum Widerspruch: 0 ď xT AT y “ pAxqT y “ bT y ă 0. Wir zeigen nun, dass aus lösbar. piq die Aussage piiq folgt. Sei also Ax “ b, x ě 0, x P Rn nicht Fall a: Ax “ b ist nicht lösbar. Mit Satz 6.11 trifft dann piiq zu. Fall b: Ax “ b ist lösbar, aber x 0. Durch Induktion nach n weisen wir nach, dass piiq gilt. Induktionsanfang n “ 1: Sei x P R eine Lösung von Ax “ b, x 0. Dann gilt x ă 0. Mit y :“ ´b erhalten wir 1 AT y “ ´ bT b ą 0 und bT y “ ´bT b ă 0, x und y löst piiq. Induktionsschluss. Sei n P N, n ě 2. Die Behauptung sei für alle k ď n ´ 1 richtig. Sei A1 :“ pa1 , . . . , an´1 q. Nach Voraussetzung ist A1 x “ b, x ě 0 in Rn´1 nicht lösbar. Sonst ließe sich Ax̃ “ b, x̃ ě 0 im Rn durch x̃ :“ px, 0q lösen. Damit ist entweder schon A1 x “ b nicht lösbar oder A1 x “ b ist lösbar, aber besitzt keine nichtnegative Lösung. Im ersten Fall garantiert uns Satz 6.11, im zweiten Fall die Induktionsannahme die Lösbarkeit von A1 T y ě 0, bT y ă 0. Sei v P Rm eine solche Lösung, also T A1 v ě 0 und bT v ă 0. Es gilt (6.1) A1 T v A v“ ě 0, pan qT v ! T falls pan qT v ě 0. In diesem Fall sind wir fertig. Wir nehmen an, dass pan qT v ă 0 und definieren Vektoren ā1 , . . . , ān´1 , b̄ durch āi :“ αi an ´ αn ai b̄ :“ βan ´ αn b i “ 1, . . . , n ´ 1 wobei αi “ pai qT v für i “ 1, . . . , n und β :“ bT v. Sei Ā “ pā1 , . . . , ān´1 q. Betrachte das System Āx “ b̄, x ě 0, x P Rn´1 . (6.2) 62 6.2. Farkas Lemma Fall 1: (6.2) ist lösbar. Dann gilt für eine Lösung x ě 0 von (6.2) βan ´ αn b “ b̄ “ Āx “ n´1 X xi āi “ i“1 also b“ n´1 X xi pαi an ´ αn ai q, i“1 n´1 X X 1 n´1 β ´ x i α i an ` xi ai “ Ax˚ αn αn i“1 i“1 mit x˚i “ xi für i “ 1, . . . , n ´ 1 und x˚n “ β αn ´ 1 αn Pn´1 i“1 xi α i . Nach Wahl von x ist xi ě 0 für alle i “ 1, . . . , n ´ 1. Wegen (6.1) ist αi ě 0 für alle i “ 1, ¨ ¨ ¨ , n ´ 1, also xi αi ě 0 für alle i “ 1, . . . , n ´ 1. Ferner gilt β ă 0 und αn ă 0, also auch xn ě 0. Damit ist x˚ aber eine nicht-negative Lösung von piq im Widerspruch zur Voraussetzung, dass Ax “ b keine nichtnegative Lösung besitzt. Fall 2: (6.2) ist nicht lösbar. Mit Induktion ist ĀT y ě 0, b̄T y ă 0 lösbar. Sei w P Rm eine solche Lösung. Setze y “ ppan qT wqv ´ ppan qT vqw. Dann gilt T 1 a y .. . AT y “ T an´1 y pan qT y ě 0, denn pan qT y “ pan qT wppan qT vq ´ pan qT vppan qT wq “ 0 und pai qT y “ ppan qT wqppai qT vq ´ ppan qT vqppai qT wq “ āi w ě 0. Ferner T bT y “ ppan qT wqpbT vq ´ ppan qT vqpbT wq “ b̄T w ă 0, also ist y eine Lösung von piiq und wir sind fertig. Nun lässt sich die folgende Alternative für Ungleichungssysteme aufstellen. Satz 6.13. (Farkas-Lemma II) Genau eine der folgenden Möglichkeiten trifft zu: (i) Ax ď b, x ě 0, x P Rn ist lösbar, (ii) AT y ě 0, y ě 0, bT y ă 0, y P Rm ist lösbar. Beweis. Gleichzeitig sind piq und piiq nicht lösbar, denn andernfalls ergibt sich der Widerspruch 0 ď xT AT y “ pAxqT y “ bT y ă 0. 63 Kapitel 6. Lineare Programmierung – Dualitätssatz Angenommen, piq besitzt keine Lösung. Dann hat auch das System Ax ` z “ b, x ě 0, z ě 0 (6.3) keine Lösung und umgekehrt. Sei Em die Einheitsmatrix in Rm und B “ pA|Em q. (6.3) ist genau dann nicht lösbar, wenn Bw “ b, w ě 0 nicht lösbar ist. Mit dem Lemma von Farkas (Satz 6.12) existiert y P Rm mit AT y ě 0, Em y “ y ě 0 und bT y ă 0. Für gemischte Gleichungs- und Ungleichungssysteme haben wir: Satz 6.14. (Farkas-Lemma III) Es sei A P Rmˆn und b P Rm . Genau eine der Alternativen trifft zu: (i) Ax ď b, x P Rn ist lösbar. (ii) AT y “ 0, bJ y ă 0, y ě 0, y P Rm ist lösbar. Beweis: Sei A1 :“ rEn A ´ As. Dann gilt A1 x1 “ b, x1 P Rn , x1 ě 0 genau dann, wenn Ax ď b, x P Rn . Aus dem Farkas-Lemma II folgt die Behauptung. Satz 6.15. (Farkas-Lemma IV) Sei Ax ď b, x P Rn lösbar und sei δ P R. Jede Lösung x von Ax ď b erfüllt cT x ď δ genau dann, wenn es einen Vektor y P Rm , y ě 0 gibt mit y T A “ cT und y T b ď δ. Beweis. ð: Sei x eine Lösung von Ax ď b, und sei y P Rm , y ě 0 mit y T A “ cT und y T b ď δ. Dann ist cT x “ py T Aqx ď y T b ď δ. ñ: Annahme: y T A “ cT , y T b ď δ, y ě 0 ist nicht lösbar. Dies ist äquivalent dazu, dass ! das System A b py T λq “ pcT δq, py T λq ě p0 0q 0 1 keine Lösung hat. Mit dem Farkas-Lemma II existiert ein Vektor ! ! ! ! dass A b z 0 z T ě , pc δq ă 0. 0 1 µ 0 µ Insbesondere ist µ ě 0. Fall 1: µ “ 0. Dann gilt Az ě 0 und cT z ă 0. Sei x˚ eine Lösung von Ax ď b. Ist γ ą 0 groß genug, so gilt Apx˚ ´ γzq ď b und cT px˚ ´ γzq ą δ. Im Widerspruch zur Voraussetzung “Ax ď b impliziert cT x ď δ”. 64 z µ , z P Rm , µ P R , so 6.3. Der Dualitätssatz der Linearen Programmierung Fall 2: µ ą 0. Dann gilt Az ` µb ě 0, cT z ` µδ ă 0. Mit x “ ´ µ1 z haben wir Ax ď b und cT x ą δ, wiederum im Widerspruch zur Voraussetzung. 6.3. Der Dualitätssatz der Linearen Programmierung Jeden Tag werden heutzutage in der Industrie Optimierungsprobleme gelöst, die sich als ein lineares Programm darstellen lassen. Inzwischen ist die Erstellung von Algorithmen zur Lösung von linearen Programmen soweit fortgeschritten, dass selbst Programme mit tausenden von Variablen in nur wenigen Minuten gelöst werden können. Das breitgefächerte Spektrum der Anwendungen der linearen Programmierung entspricht ihrer Bedeutung in der Praxis. Aber auch in der mathematischen Theoriebildung fällt der linearen Programmierung eine wichtige Rolle zu. So gehört der Hauptsatz der linearen Programmierung zu den klassischen, fundamentalen Sätzen der Mathematik, während der algorithmische Aspekt der linearen Programmierung ganz wesentlich zur Entwicklung und Spannung der modernen Algorithmentheorie beigetragen hat: Auf der einen Seite der im Worst-Case exponentielle aber in der Praxis unschlagbare Simplexalgorithmus von Dantzig und auf der anderen Seite die theoretisch polynomielle Ellipsoidmethode (Khachiyan, Shor), die allerdings in der Praxis zu langsam ist. In diesem Kapitel werden wir einen grundlegenden Aspekt der linearen Programmierung vorstellen: den Haupt- oder Dualitätssatz der linearen Programmierung. Gegeben sei eine Matrix A P Rmˆn mit Zeilenvektoren a1 , . . . , am und Spaltenvektoren ap1q , . . . , apnq , Vektoren b P Rm und c P Rn . Sei pI, I C q eine Partition der Zeilenindizes {1, . . . , m} und pJ, J C q eine Partition der Spaltenindizes {1, . . . , n}. Die Variablen xj , j P J C , heißen unbeschränkte Variable. 65 Kapitel 6. Lineare Programmierung – Dualitätssatz Definition 6.16. (Lineares Programm) Die drei Versionen eines linearen Programms sind: Maximierungsproblem Minimierungsproblem (i) Allgemeinform max cT x aTi x “ bi , aTi x ď bi , xj ě 0, xj P R, x P Rn i i j j P P P P I IC J JC min cT x aTi x “ bi , aTi x ě bi , xj ě 0, xj P R, x P Rn (ii) Standardform max cT x Ax ď b xě0 min cT x Ax ě b xě0 (iii) Kanonische Form max cT x Ax “ b xě0 min cT x Ax “ b xě0 i i j j P P P P I IC J JC Die verschiedenen Formen der linearen Programmierung sind äquivalent, d.h. die eine Form kann in die andere transformiert werden, so dass die Lösungen die gleichen bleiben. Satz 6.17. Allgemeine- Standard- und kanonische Form der linearen Programmierung sind äquivalent. Beweis. Wir führen den Beweis für das Minimierungsproblem; das Maximierungsproblem wird analog behandelt. Wir zeigen zunächst: Allgemeine Form ðñ Standardform. Da die Standardform eine spezielle Instanz der allgemeinen Form ist, müssen wir nur zeigen, dass die allgemeine Form sich in die Standardform überführen lässt. Dazu führen wir die folgende Transformation aus. a) Für jede Variable xj , j P J C , in der allgemeinen Form führen wir zwei Variable ´ ` ´ x` j , xj ě 0 ein und ersetzen xj durch xj ´ xj “ 0. b) Jede Gleichheitsbedingung aTi x “ bi in der allgemeinen Form wird durch zwei Ungleichungen aTi x ě bi und p´aTi qx ě ´bi ersetzt. Allgemeine Form ðñ kanonische Form. c) Unbeschränkte Variablen in der allgemeinen Form werden wie in aq durch nichtnegative Variablen ersetzt. 66 6.3. Der Dualitätssatz der Linearen Programmierung d) Ungleichungen in der allgemeinen Form werden mit Hilfe sogenannter Schlupfvariablen in Gleichungen überführt: Eine Ungleichung aTi x ě bi wird durch aTi x ´ si “ bi , si ě 0 ersetzt si heißt Schlupfvariable. Beispiele: 1. Job-Zuordnungsproblem (Fraktionale Version) Gegeben sind n Jobs und n Prozessoren. Jeder Prozessor bearbeitet einen Job, jeder Job muss bearbeitet werden. Die Bearbeitungszeit für Job i auf Prozessor j ist wij 0. min n X xij wij i,j“1 n X i“1 n X j“1 xij “ 1 @j“1,...,n xij “ 1 @i“1,...,n 0 ď xij ď 1. 2. Matching/Überdeckungs-Problem Gegeben sei ein bipartiter Graph G “ pS ŸT, Eq. Sei A “ paij q 1ďiďm die Inzidenzmatrix 1ďjďn von G. Maximum Matching Problem max Pm i“1 xi Ax ď 1 xi “ 0, 1 @i“1,...,m Minimum Vertex-Cover Problem min Pn j“1 yj AT y ě 1 yj “ 0, 1 @j“1,...,n Die zugehörigen linearen Programme entstehen aus der Relaxierung xi P r0, 1s bzw. yj P r0, 1s für alle i bzw. j. Sei νpGq die Kardinalität eines maximalen Matching und τ pGq die Kardinalität einer minimalen Knotenüberdeckung. νpGq heißt Matchingzahl und τ pGq ist die Überdeckungszahl. Mit ν ˚ pGq bzw. τ ˚ pGq bezeichnet man die Optima der LP-Relaxierung des Matching bzw des Vertex-Cover Problems. ν ˚ pGq heißt die fraktionale Matchingzahl und τ ˚ pGq ist die fraktionale Überdeckungszahl. Für eine Matrix A seien ap1q , . . . , apnq die Spalten- und a1 , . . . , am die Zeilenvektoren von A. 67 Kapitel 6. Lineare Programmierung – Dualitätssatz Definition 6.18. (Duales Programm) Sei pP q die Maximierungsversion des allgemeinen linearen Programms, das wir als primales Programm bezeichnen. Die duale Form pP ˚ q von pP q, kurz Dual von pP q, ist wie folgt definiert: PrimalpP q : max cT x aTi x “ bi , i P I aTi x ď bi , i P I C xj ě 0, j P J xj P R, j P J C DualpP ˚ q : min y T b yi P R, i P I yi ě 0, i P I C y T apjq ě cj , j P J y T apjq “ cj , j P J C mit x, c P Rn und y, b P Rm . Die Dualität ist reflexiv: Satz 6.19. pP ˚˚ q “ pP q. Das Dual eines Duals ist das primale Programm. Beweis: Übungsaufgabe. Die duale Zielfunktion ist eine obere Schranke für die primale Zielfunktion auf zulässigen Punkten. Satz 6.20. (Schwacher Dualitätssatz) Sei x P Rn bzw. y P Rm zulässig für pP q bzw. pP ˚ q. Dann gilt cT x ď bT y. Beweis: Übungsaufgabe. Korollar 6.21. Seien x, y primal/dual zulässig mit cT x “ y T b. Dann sind x und y jeweils optimale Lösungen. Beweis. Seien x˚ , y ˚ optimale primale/duale Lösungen. Dann gilt: cT x ˚ ě cT x “ y T b ě y ˚ T b ě cT x ˚ , wobei die letzte Ungleichung aus dem schwachen Dualitätssatz (Satz 6.20) folgt. Also cT x˚ “ cT x “ y T b “ y ˚ T b. Aus dem schwachen Dualitätssatz folgt unmittelbar Korollar 6.22. Sei G ein Graph. Es gilt νpGq ď τ pGq. Beweis: Der Einfachheit halber betrachten wir in diesem Kapitel lineare Programme in Standardform: 68 6.3. Der Dualitätssatz der Linearen Programmierung DualpP ˚ q : min y T b AT y ě c y ě 0, y P Rm PrimalpP q : max cT x A0 ď b x ě 0, x P Rn Es sei OPTpP q bzw. OPTpP ˚ q der Wert einer optimalen Lösung von pP q bzw. pP ˚ q. Wir nehmen an, dass b und c keine Nullvektoren sind. Der Dualitätssatz der linearen Programmierung besagt, dass OPTpP q “ OPTpP ˚ q gilt, wenn eines der Optima endlich ist. Dieses Resultat kann man auch als Min-Max-Theorem auffassen. Man spricht auch von starker Dualität. Ein kombinatorisches Beispiel für starke Dualität ist die Identität νpGq “ τ pGq für bipartite Graphen. Satz 6.23. Dualitätssatz der linearen Programmierung Es sei pP q das primale und pP ˚ q das duale Standardprogramm: pP ˚ q : min bT y AT y ě c y ě 0, y P Rm pP q : max cT x Ax ď b x ě 0, x P Rn (i) Haben pP q und pP ˚ q zulässige Lösungen, so haben sie auch optimale Lösungen und es gilt OPTpP q “ OPTpP ˚ q. (ii) Ist pP q oder pP ˚ q nicht lösbar, so besitzt weder pP q noch pP ˚ q eine optimale Lösung mit endlichem Wert. Beweis. piq pP q und pP ˚ q seien zulässig lösbar. Nach dem schwachen Dualitätssatz reicht es aus zu zeigen, dass es zulässige Lösungen x und y gibt mit cT x ě bT y. Dies ist äquivalent dazu, dass das System A 0 b x T 0 ď ´c ´A , y T T ´c b 0 x ě0 y (6.4) eine Lösung besitzt. Falls (6.4) nicht lösbar ist, gibt es mit dem Farkas-Lemma II (Satz 6.13) Vektoren z P Rm , w P Rn , sowie α P R mit z ě 0, w ě 0, α ě 0, so dass AT z ě αc, Aw ď αb, bT z ă cT w. (6.5) 69 Kapitel 6. Lineare Programmierung – Dualitätssatz Es gilt α ą 0, denn α “ 0 führt zu einem Widerspruch: Seien x0 , y0 zulässige Lösungen von pP q und pP ˚ q, die nach Voraussetzung existieren. Aus (6.5) folgt: 0 ď xT0 AT z “ pAx0 qT z ď bT z ă cT w ď pAT y0 qT w “ y0T Aw ď 0, d.h. 0 ă 0, Widerspruch Sei x “ α´1 w und y “ α´1 z. Dann gilt Ax ď b, AT y ě c, x ě 0, y ě 0, d.h. x, y sind zulässig für pP q bzw. pP ˚ q. Mit dem schwachen Dualitätssatz (Satz 6.20) erhält man cT w “ αpcT xq ď αpbT yq “ bT z im Widerspruch zu (6.5). Also ist (6.4) lösbar und piq ist bewiesen. piiq Wenn pP q keine zulässige Lösung besitzt, dann gibt es auch keine primal-endliche Lösung mit endlichem Wert. Mit dem Farkas-Lemma II (Satz 6.13) existiert w P Rm mit AT w ě 0, w ě 0, bT w ă 0. Falls pP ˚ q eine zulässige Lösung y0 besitzt, so ist auch y0 ` λw zulässig für pP ˚ q für jedes λ ě 0. Für die Zielfunktion gilt bT py0 ` λwq “ bT y0 ` λpbT wq, also limλÑ8 bT py0 ` λwq “ ´8, da bT w ă 0. Daher besitzt pP ˚ q keine optimale Lösung mit endlichem Wert. Analog zeigt man, dass pP q nicht optimal lösbar ist, falls pP ˚ q keine zulässige Lösung besitzt. Ein starkes Kriterium um die Optimalität von Lösungen zu verifizieren ist der Satz vom komplementären Schlupf. Satz 6.24. Seien pP q und pP ˚ q wie in Definition 6.18 und sei x˚ P Rn , y ˚ P Rm ein primal/dual zulässiges Paar. x˚ und y ˚ sind optimale Lösungen genau dann, wenn die folgenden Bedingungen erfüllt sind: (i) x˚j py T aj ´ cj q “ 0 für alle j “ 1, . . . , n, (ii) yi˚ pbi ´ aTi xq “ 0 für alle i “ 1, . . . , m. Bemerkung: Beachte, dass si :“ bi ´ aTi x die primale und tj :“ y T aj ´ cj die duale Schlupfvariable ist. Dies motiviert den Namen des Satzes. Beweis. O.B.d.A. sei I “ {1, . . . , k}, J “ {1, . . . , l}. Nach Definition gilt x˚j py ˚ T aj ´ cj q ě 0 und yi˚ pbi ´ aTi x˚ q ě 0 für alle i, j. Sei t :“ n X j“1 70 x˚j py ˚ T aj ´ cj q ` m X i“1 yi˚ pbi ´ aTi x˚ q. 6.3. Der Dualitätssatz der Linearen Programmierung Da alle Summanden nicht-negativ sind, ist t “ 0 genau dann, wenn piq und piiq gelten. Wir zeigen nun, dass t “ 0 genau dann gilt, wenn x˚ und y ˚ optimale primale/duale Lösungen sind. Umformen ergibt t“´ n X x˚j cj ` j“1 m X yi˚ bi ` i“1 n X x˚j y ˚ T aj ´ j“1 | m X yi˚ aTi x˚ , i“1 {z “hx,Ayi´hy,AT xi“0. } also t “ y ˚ T b ´ cT x˚ . Nach Korollar 6.21 impliziert t “ 0, dass x˚ und y ˚ optimal sind, während der Dualitätssatz die Umkehrung zeigt. Satz 6.24 besagt für primal/dual optimale Lösungen: Ź Ist eine primale (duale) Variable nicht Null, dann ist die entsprechende duale (primale) Nebenbedingung eine Gleichung. Sei pP q das Minimierungsproblem in der kanonischen Form max cT x Ax “ b, x ě 0. Sei P “ {x P Rn ; Ax “ b, x ě 0} und Popt die Menge der optimalen Lösungen für pP q. Popt ist offensichtlich konvex und abgeschlossen und besitzt die wichtige Eigenschaft, dass auch gewisse Ecken von P Optimallösungen sind, falls pP q überhaupt endliches Optimum besitzt. Satz 6.25. (i) expPopt q “ expP q X Popt (ii) Popt ‰ H ñ expPopt q ‰ H. Beweis. piq Für leeres Popt ist die Aussage klar. Offenbar gilt expP q X Popt Ď expPopt q. Sei nun x P expPopt q und seien y, z P P , λ P r0, 1s mit x “ λy ` p1 ´ λqz. Sei w der Wert einer optimalen Lösung von pP q. Dann gilt w “ cT x “ λcT y `p1´λqcT z, und weil w ď cT y, w ď cT z, folgt w “ cT y “ cT z, d.h. y, z P Popt , x “ y “ z und x P expP q, also expPopt q Ď expP q X Popt . T piiq Sei Popt ‰ H. Sei pP 1 q das Programm pP q ergänzt um die Gleichung c x “ w und sei P 1 “ P X {cT x “ w}. Damit gilt P 1 “ Popt “ {x P Rn ; cAT x “ wb , x ě 0}, und mit Satz—– folgt expP q ‰ H. 71 Kapitel 6. Lineare Programmierung – Dualitätssatz Korollar 6.26. Sei pP q das primale Maximierungsproblem n o max cT x; Ax ď b, x ě 0, x P Rn . Für die primal/duale Lösung gilt Dual pP ˚ q Primal pP q Optimal Nicht-zulässig Unbeschränkt Optimal ` ´ ´ Nichtzulässig ´ ` ` Unbeschränkt ´ ` ´ „`“ “ b möglich „´“ “ b nicht möglich Beweis. 1. Optimal/Optimal Diese Kombination ist nach dem Dualitätssat durchaus möglich. 2. Optimal/Nichtzulässig Diese Kombination ist nach dem Dualitätssat nicht möglich. 3. Optimal/Unbeschränkt Auch diese Kombination ist nicht möglich, da der Wert einer primal-optimalen Lösung eine untere Schranke für die duale Zielfunktion ist (schwacher Dualitätssatz). 4. Nichtzulässig/Optimal siehe 2. 5. Nichtzulässig/Nichtzulässig Diese Kombination ist durchaus möglich. 6. Nichtzulässig/Unbeschränkt Nach dem Dualitätssatz gilt dies immer. 7. Unbeschränkt/Optimal siehe 3. 8. Unbeschränkt/Nichtzulässig siehe 6. 9. Unbeschränkt/Unbeschränkt Diese Kombination ist wegen des Dualitätssatzes, Teil piq icht möglich. 72 6.3. Der Dualitätssatz der Linearen Programmierung Im Bezug auf die Existenz von Basislösungen können wir folgendes sagen: Satz 6.27. Jedes LP-Problem in Standartform hat die folgenden Eigenschaften: (i) Existiert keine optimale Lösung, dann ist das Programm entweder nicht-zulässig oder die Zielfunktion ist unbeschränkt. (ii) Besitzt es eine zulässige Lösung, dann existiert auch eine zulässige Basislösung. (iii) Besitzt es eine optimale Lösung, dann besitzt es auch eine optimale Basislösung. Beweis. piq Dualitätssatz (6.23). piiq Sei pP q das LP-Problem in Standartform. Durch Einführung von Schlupfvariablen können wir pP q in die kanonische Form pP 1 q bringen. Da pP q zulässig lösbar ist, ist pP 1 q zulässig lösbar und besitzt nach Satz 6.9 eine Ecke und diese definiert eine Ecke von pP q. Eine Ecke von pP q korrespondiert nach Satz 6.10 zu einer Basis. piiiq Sei pP q das Minimierungsproblem, o.E. sei pP q in kanonischer Form gegeben. Hat pP q eine optimale Lösung, so existiert auch nach Satz 6.25 eine optimale Ecke, die nach Satz 6.10 eine Basislösung darstellt. Ist pP q ein Maximierungsproblem, so überführen wir es in die kanonische Form pP 1 q und fassen es als Minimierungsproblem auf. Mit pP q hat auch pP 1 q eine optimale Lösung und mit dem obigen Fall sind wir fertig. 73 Literatur [AG13] Kook Jin Ahn und Sudipto Guha. „Linear programming in the semistreaming model with application to the maximum matching problem“. In: Information and Computation 222 (2013), S. 59–79. Conference version at ICALP 2011. [AMS99] Noga Alon, Yossi Matias und Mario Szegedy. „The space complexity of approximating the frequency moments“. In: Journal of Computer and System Sciences 58 (1999), S. 137–147. Conference version at STOC 1996. [EKM+12] Sebastian Eggert, Lasse Kliemann, Peter Munstermann und Anand Srivastav. „Bipartite matching in the semi-streaming model“. In: Algorithmica 63 (2012), S. 490–508. doi: 10.1007/s00453- 011- 9556- 8. Conference version at ESA 2009. [FKM+04] Joan Feigenbaum, Sampath Kannan, Andrew McGregor, Siddharth Suri und Jian Zhang. „On graph problems in a semi-streaming model“. In: Proceedings of the 31st International Colloquium on Automata, Languages and Programming, Turku, Finland, July 2004 (ICALP 2004). 2004, S. 531– 543. doi: 10.1007/978-3-540-27836-8_46. [FM85] Philippe Flajolet und G. Nigel Martin. „Probabilistic counting algorithms for data base applications“. In: Journal of Computer and System Sciences 31.2 (1985), S. 182–209. [HK73] John E. Hopcroft und Richard M. Karp. „An n5{2 algorithm for maximum matchings in bipartite graphs“. In: SIAM Journal on Computing 2.4 (1973), S. 225–231. doi: 10.1137/0202019. [HRR00] Monika R. Henzinger, Prabhakar Raghavan und Sridhar Rajagopalan. „‚Computing on Data Streams‘“. In: External Memory Algorithms. Bd. 50. DIMACS Series in Discrete Mathematics and Theoretical Computer Science. 2000, S. 107–118. Preliminary version in 1998. [KL13] Jonathan Kelner und Alex Levin. „Spectral sparsification in the semistreaming setting“. In: Theory of Computing Systems 53.2 (2013), S. 243– 262. Conference version at STACS 2011. 75 Literatur [Kli11] Lasse Kliemann. „Matching in bipartite graph streams in a small number of passes (extended abstract)“. In: Proceedings of the 10th International Symposium on Experimental and Efficient Algorithms, Kolimpari, Chania, Crete, Greece, May 2011 (SEA 2011). Hrsg. von Panos M. Pardalos und Steffen Rebennack. Lecture Notes in Computer Science 6630. 2011, S. 254– 266. doi: 10.1007/978-3-642-20662-7_22. [KMM12] Christian Konrad, Frédéric Magniez und Claire Mathieu. „Maximum matching in semi-streaming in few passes“. In: Proceedings of the International Workshop on Approximation Algorithms for Combinatorial Optimization Problems and Randomization and Computation, Berkeley, CA, USA, August 2005 (APPROX RANDOM 2005). 2012, S. 231–242. [KS92] Bala Kalyansundaram und Georg Schnitger. „The probabilistic communication complexity of set intersection“. In: SIAM Journal on Discrete Mathematics 5 (1992), S. 545–557. Conference version at the 2nd Structure in Complexity Theory Conference 1987. [McG05] Andrew McGregor. „Finding graph matchings in data streams“. In: Proceedings of the International Workshop on Approximation Algorithms for Combinatorial Optimization Problems and Randomization and Computation, Berkeley, CA, USA, August 2005 (APPROX RANDOM 2005). 2005, S. 170–181. doi: 10.1007/11538462_15. [MP80] J. Ian Munro und Mike Paterson. „Selection and sorting with limited storage“. In: Theoretical Computer Science 12 (1980), S. 315–323. Conference version at FOCS 1978. [Mut05] Muthu Muthukrishnan. „Data streams: algorithms and applications“. In: Foundations and Trends in Theoretical Computer Science 1.2 (2005), 67 pages. url: http://algo.research.googlepages.com/eight.ps. Preliminary version available since 2003. [Zel09] Mariano Zelke. „‚Algorithms for Streaming Graphs‘“. Diss. MathematischNaturwissenschaftliche Fakultät II, Humboldt-Universität zu Berlin, 2009. url: http://www.tks.informatik.uni-frankfurt.de/getpdf?id=561. 76