Kapitel 1: Fallstudie Bipartite Graphen Gliederung der Vorlesung 1. 2. 3. 4. 5. 6. 7. 8. 1/2, Folie 1 Fallstudie Bipartite Graphen Grundbegriffe Elementare Graphalgorithmen und Anwendungen Minimal spannende Bäume Kürzeste Wege Traveling Salesman Problem Flüsse in Netzwerken und Anwendungen Netzplantechnik © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Gliederung des Kapitels a) b) c) d) 1/2, Folie 2 Motivation Grundbegriffe Matchings in bipartiten Graphen Anwendungen © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Begriff: Bipartiter Graph • es sei G = (V,E) ein ungerichteter Graph • G ist ein bipartiter Graph, falls es zwei Mengen X, Y ⊆ V mit folgenden Eigenschaften gibt: • • • X∩Y=∅ X∪Y=V jede Kante e ∈ E hat genau eine Ecke in X und eine Ecke in Y X 1/2, Folie 3 © 2011 Prof. Steffen Lange - Y HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Anmerkungen • • • wir werden bipartite Graphen verwenden, um bestimmte Probleme zu modellieren (/* Zuordnungsprobleme ... */) in diesen Fällen ergibt sich die Zerlegung der Knotenmenge V in die beiden disjunkten Teilmengen X und Y direkt bei der Modellierung in anderen Fällen wird man für einen gegebenen Graphen G erst einmal überprüfen müssen, ob er ein bipartiter Graph ist ... dann kann man „spezielle“ Algorithmen (/* etwa zum Bestimmen von Matchings */) anwenden, die die „Besonderheiten“ von bipartiten Graphen ausnutzen 1/2, Folie 4 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Gegenbeispiel 1 2 3 kein bipartiter Graph 5 4 6 Beispiel 1 2 3 ein bipartiter Graph; wähle X = { 1,3,5 } und Y = { 2,4,5 } 4 1/2, Folie 5 5 © 2011 Prof. Steffen Lange 6 - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Ein grundlegender Zusammenhang • es sei G = (V,E) ein ungerichteter Graph Dann sind die folgenden Aussagen äquivalent: 1) 2) 1/2, Folie 6 G ist ein bipartiter Graph. G enthält keine Zyklen ungerader Länge. © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beweisidee (/* 1) impliziert 2) */) • es seien G = (V,E) ein bipartiter Graph und X,Y ⊆ V die zugehörige Zerlegung der Knotenmenge von G • Annahme: es sei (v0,v1,...,v2k-1) irgendein Zyklus ungerader Länge in G (/* also gilt v0 = v2k-1 */) • o.B.d.A. sei vo ∈ X • • da G bipartit ist, muss v1 ∈ Y gelten da G bipartit ist, muss v2 ∈ X gelten ... diese Argumentation lässt sich offenbar fortsetzen ... also muss v2k-1 ∈ Y gelten ... wegen X ∩ Y = ∅, kann damit nicht v0 = v2k-1 gelten 1/2, Folie 7 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beweisidee (/* 2) impliziert 1) */) • es sei G = (V,E) ein ungerichteter Graph der keine Zyklen ungerader Länge enthält • • es seien V1,...,Vk die Zusammenhangskomponenten von G offenbar genügt es zu zeigen, dass jede Zusammenhangskomponente Vi einen Teilgraphen von G definiert, der bipartit ist 1 4 2 3 5 6 1 2 4 der Teilgraph für V1 = { 1,2,4 } 1/2, Folie 8 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beweisidee (/* 2) impliziert 1) */) • o.B.d.A. sei G = (V,E) ein ungerichteter, zusammenhängender Graph der keine Zyklen ungerader Länge enthält • es genügt, V in zwei Teilmenge X und Y mit den üblichen Eigenschaften zu zerlegen • hierzu wählen wir irgendeinen Knoten x aus V und setzen • • X = { y ∈ V | d(x,y) ist gerade } Y = { y ∈ V | d(x,y) ist ungerade } ... d(x,y) = k, falls es i) einen Pfad der Länge k von x nach y gibt und ii) keinen Pfad von x nach y mit einer Länge < k gibt 1/2, Folie 9 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beweisidee (/* 2) impliziert 1) */) • offenbar sind X und Y Teilmengen von V, für die X ∩ Y = ∅ und X ∪ Y = V gilt • Annahme: es gibt eine Kante e = { a,b } mit o.B.d.A. a ∈ X und b ∈ X • • es sei Pa = (v0,...,vk) ein kürzester Pfad von x nach a es sei Pb = (v‘0,...,v‘r) ein kürzester Pfad von x nach b ... da G zusammenhängend ist, muss es Pa und Pb geben ... Pa und Pb haben beide eine gerade Länge ... Pa und Pb enthalten jeden Knoten nur einmal • wir betrachten den Pfad P = (v0,...,vk,v‘r,....,v‘0) von x nach x, der offenbar ungerade Länge hat ... es bleibt zu zeigen, daß P einen Zyklus ungerader Länge enthält 1/2, Folie 10 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beweisidee (/* 2) impliziert 1) */) • Fall 1: Pa und Pb enthalten nur den Knoten x gemeinsam ... dann ist P offenbar ein Zyklus ungerade Länge • Fall 2: Pa und Pb enthalten mehr als den Knoten x gemeinsam • • es sei y ein solcher Knoten und zwar einer mit maximalem Abstand von x (/* es seien vi = y und v‘j = y */) wir betrachten den Pfad P‘ = (vi,...,vk,v‘r,...,v‘j) von ... es ist zu zeigen, dass P‘ ein Zyklus ungerader Länge ist ... ungerade Länge (/* da k = r und i = j gilt */) ... enthält jeden Knoten außer y genau einmal (/* alle anderen Knoten in P‘ haben einen größeren Abstand von x als y */) 1/2, Folie 11 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beweisidee (/* 2) impliziert 1) */) x vi a b • • • v‘j x offenbar gilt d(x,a) ≤ d(x,b) + 1 und d(x,b) ≤ d(x,a) + 1 offenbar sind d(x,a) und d(x,b) gerade Zahlen also muss d(x,a) = d(x,b) gelten ... da Pa und Pb kürzeste Pfade von x nach a bzw. x nach b sind: • • • 1/2, Folie 12 sind Pa und Pb gleich lang (/* also gilt k = r */) müssen auch alle Teilpfade von a bzw. b zu einem Knoten in Pa und Pb kürzeste Pfade sein (/* ... also gilt i = j */) müssen alle anderen Knoten in P‘ einen größeren Abstand von x als y haben © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Abgeleitete algorithmische Fragestellung • gegeben: • • gesucht: • 1/2, Folie 13 ein ungerichteter Graph G = (V,E) © 2011 Prof. Steffen Lange Antwort auf die Frage, ob G ein bipartiter Graph ist (/* falls ja, soll gleichzeitig eine passende Zerlegung von V bestimmt werden */) - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Algorithmische Idee • • in jeder Zusammenhangskomponente V wird ein Knoten j ausgewählt und mit 0 markiert werden alle von j erreichbaren Knoten mit 1 markiert, wenn sie einen ungeraden Abstand von j haben, und mit 0 markiert, wenn sie einen geraden Abstand von j haben Zugrunde liegende Datenstrukturen • • • 1/2, Folie 14 die zu G gehörende Adjazenzliste A[1..n] ein Array B[1..n] (/* in dem sich die Zugehörigkeit zu X bzw. Y „gemerkt“ wird */) eine Liste L (/* zur Steuerung der Verarbeitung */) © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Realisierung • • setze B[j] = 2 für alle j = 1,...,n for j = 1,...,n do if B[j] == 2 then B[j] = 0, L = { j } while L nicht leer ist do entferne das erste Element s aus L for all v ∈ A[s] do if B[v] = 2 then setze B[v] = 1 - B[s] und füge v ans Ende von L ein else if B[v] = B[s] then stoppe mit Fehlermeldung „G ist nicht bipartit“ ... bestimmte Zerlegung von V in X und Y mit X = { i | B[i] = 0 } und Y = { i | B[i] = 1 } 1/2, Folie 15 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Anmerkung • die Korrektheit des Algorithmus ist leicht nachzuweisen (/* man braucht ähnliche Argumente wie beim Beweis, dass bipartite Graphen keine Zyklen ungerader Länge haben */) • die Rechenzeit kann völlig anlog wie beim Algorithmus zur Bestimmung der Zusammenhangskomponenten eines ungerichteten Graphen analysiert werden ... insgesamt werden maximal c*(n + m) viele Rechenschritte benötigt, um die Frage zu beantworten, ob G ein bipartiter Graph ist 1/2, Folie 16 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Satz von König • • • es sei G = (V,E) ein bipartiter Graph es sei M* ein maximales Matching von G es sei S* eine minimale Eckenüberdeckung von G Dann gilt: |M*| = |S*|. ... da G ein ungerichteter Graph ist, wissen wir, dass |M*| ≤ |S*| gilt ... wie man den verbleibenden Teil zeigt (/* dass |M*| ≥ |S*| gilt */), schauen wir uns später an 1/2, Folie 17 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Zentrale algorithmische Fragestellung • gegeben: • • gesucht: • 1/2, Folie 18 ein bipartiter Graph G = (V,E) und die zugehörige Zerlegung von V in zwei Teilmengen X und Y © 2011 Prof. Steffen Lange ein maximales Matching M von G - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Vorbereitung (/* prinzipielle algorithmische Idee */) 1) 2) starte mit einem Matching M überprüfe, ob sich anhand vom Matching M ein Matching M‘ mit |M‘| > |M| bestimmen lässt • falls nein, stoppe • falls ja, setze M = M‘ und mache mit 2) weiter ... offenbar muss geklärt werden, wie man anhand von M ein „größeres“ Matching M‘ bestimmen kann (/* bzw. wie man feststellt, dass ein „größeres“ Matching nicht existiert */) ... wenn diese Herangehensweise funktioniert, muss sicher gestellt sein, dass die „Wahl“ von M keine entscheidende Rolle spielt (/* wenn man stoppt, muss M ein maximales Matching sein */) 1/2, Folie 19 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel X 1 2 3 4 5 6 7 8 Y ... offenbar hat dieser Graph ein Matching der Größe 4 (/* dieses Matching ist offenbar auch maximal */) 1/2, Folie 20 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Ein anderes Beispiel X 1 2 3 4 5 6 7 8 • X Y ... ein Matching der Größe 3 wir betrachten den Pfad (3,6,7,8) 1 2 3 4 5 7 1 2 3 4 6 5 6 8 7 8 X Y ... ein Matching der Größe 4 1/2, Folie 21 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Y Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Noch ein anderes Beispiel X 1 2 3 4 5 6 7 8 • X Y ... ein Matching der Größe 3 wir betrachten den Pfad (3,6,7,4,1,2,5,8) 1 2 3 4 5 7 1 2 3 4 6 5 6 8 7 8 X Y ... ein Matching der Größe 4 1/2, Folie 22 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Y Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Zentraler Begriff: Alternierender Pfad • • • es seien G = (V,E) ein bipartiter Graph und X,Y ⊆ V die zugehörige Zerlegung der Knotenmenge von G es sei M ⊆ E ein Matching von G ein Pfad P = (v0,...,vk) heißt alternierender Pfad in G bzgl. M, falls folgende Bedingungen erfüllt sind: • • P ist ein Pfad in G, der keinen Knoten doppelt enthält für alle i = 0,...,k-2 gilt entweder a) oder b): a) b) 1/2, Folie 23 { vi,vi+1 } ∈ M und { vi+1,vi+2 } ∉ M { vi,vi+1 } ∉ M und { vi+1,vi+2 } ∈ M © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Zentraler Begriff: Erweiterbarer Pfad • • • es seien G = (V,E) ein bipartiter Graph und X,Y ⊆ V die zugehörige Zerlegung der Knotenmenge von G es sei M ⊆ E ein Matching von G ein Pfad P = (v0,...,vk) heißt erweiterbarer Pfad in G bzgl. M, falls folgende Bedingungen erfüllt sind: • • • 1/2, Folie 24 P ist ein alternierender Pfad in G bzgl. M es gibt keine Kante e ∈ M mit der Ecke v0 es gibt keine Kante e ∈ M mit der Ecke vk © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Konsequenzen • • • es seien G = (V,E) ein bipartiter Graph und X,Y ⊆ V die zugehörige Zerlegung der Knotenmenge von G es sei M ⊆ E ein Matching von G es sei P = (v0,...,vk) ein erweiterbarer Pfad in G bzgl. M Dann gilt: • • 1/2, Folie 25 P hat eine gerade Länge. P hat mehr Kanten, die nicht zu M gehören, als Kanten, die zu M gehören. (/* ... genau eine mehr */) © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Begriffsbildung: Erweiterte Kantenmenge • • • es seien G = (V,E) ein bipartiter Graph und X,Y ⊆ V die zugehörige Zerlegung der Knotenmenge von G es sei M ⊆ E ein Matching von G es sei P = (v0,...,vk) ein erweiterbarer Pfad in G bzgl. M • Die bzgl. M und P erweiterte Kantenmenge M‘ ist wie folgt definiert: • • 1/2, Folie 26 M‘ enthält alle Kanten aus M, die nicht in P benutzt werden. M‘ enthält zusätzlich genau die Kanten, die in P benutzt werden und nicht zu M gehören. © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel X 1 2 3 4 5 6 7 8 • Y M = { {1,4}, {5,2}, {7,6} } wir betrachten den erweiterbaren Pfad P = (3,6,7,8) (/* P benutzt die Kanten {3,6}, {6,7} und {7,8} */) ... die bzgl. M und P erweiterte Kantenmenge M‘ enthält: • • 1/2, Folie 27 die Kanten { 1,4 } und { 5,2 } (/* da sie zu M gehören und nicht in P benutzt werden */) die Kanten { 3,6 } und { 7,8 } (/* da sie in P benutzt werden und nicht zu M gehören */) © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Ein anderes Beispiel X 1 2 3 4 5 6 7 8 • Y M = { {1,4}, {5,2}, {7,6} } wir betrachten den erweiterbaren Pfad P = (3,6,7,4,1,2,5,8) (/* P benutzt die Kanten {3,6}, {6,7}, {7,4}, {4,1}, {1,2}, {2,5} und {5,8} */) ... die bzgl. M und P erweiterte Kantenmenge M‘ enthält: • 1/2, Folie 28 die Kanten { 3,6 }, {7,4}, {1,2 } und { 5,8 } (/* da sie in P benutzt werden und nicht zu M gehören */) © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Konsequenzen • • • • es seien G = (V,E) ein bipartiter Graph und X,Y ⊆ V die zugehörige Zerlegung der Knotenmenge von G es sei M ⊆ E ein Matching von G es sei P = (v0,...,vk) ein erweiterbarer Pfad in G bzgl. M es sei M‘ die bzgl. M und P erweiterte Kantenmenge Dann gilt: • • |M‘| = |M| + 1 M‘ ist ein Matching ... dass |M‘| = |M| + 1 gilt, sollte klar sein 1/2, Folie 29 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Begründung (/* verbleibender Teil */) • • es enthalte M‘1 alle Kanten von M‘, die auch zu M gehören es enthalte M‘2, alle Kanten von M‘, die nicht zu M gehören • offenbar haben alle Kanten in M‘1 und in M‘2 keine gemeinsamen Ecken (/* da M ein Matching von G ist und P ein alternierender Pfad ist */) • es seien e1 eine Kante in M‘1 und e2 eine Kante in M‘2 • Annahme: e1 und e2 haben eine gemeinsame Ecke u (/* die dann als Knoten im erweiterbaren Pfad P = (v0,...,vk) vorkommen muss */) • es gilt u ≠ v0 und u ≠ vk (/* Begründung: P ist ein erweiterbarer Pfad */) • es gilt u ≠ vi für alle i = 1,...,k-1 (/* Begründung: vi ist auf jeden Fall Ecke einer Kante aus M, die nicht zu M‘1 gehört; wäre vi auch Ecke einer Kante in M‘1, so wäre vi Ecke zweier Kanten in M */) ... Widerspuch zur Annahme !!! 1/2, Folie 30 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Algorithmische Idee 1) 2) 3) wähle ein Matching M von G (/* der Einfachheit halber das leere */) bestimme alle Knoten, die nicht Ecke einer Kante in M sind überprüfe, ob einer der in 2) bestimmten Knoten Startknoten eines erweiternden Pfades P in G bzgl. M ist • falls nein, stoppe und gib M aus • falls ja, bestimme die erweiterte Kantenmenge M‘ bzgl. M und P, setze M‘ = M und gehe zu 2) Aspekt 1: diese Art der Beschreibung erlaubt keine Rückschlüsse auf die Laufzeit des Algorithmus (/* hier fehlen offenbar Details */) Aspekt 2: es ist zwar klar, dass man so ein Matching findet; fraglich ist, ob das gefundene Matching maximal ist 1/2, Folie 31 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Diskussion zu Aspekt 2 (/* Korrektheit */) • hier kann man auf unterschiedliche Art weiter machen • Variante a) (/* direkt */) • • Variante b) (/* implizit */) • • 1/2, Folie 32 man zeigt, dass - egal wie M gewählt wurde - es kein Matching M‘ mit |M‘| > |M| gibt, falls es keinen erweiternden Pfad bzgl. M gibt man benutzt das vom Algorithmus gefundene Matching M und definiert eine zu M passende Knotenüberdeckung S falls |S| = |M| gilt, so weiß man, dass dann M ein maximales Matching sein muss (/* falls es ein größeres Matching M‘ gibt, würde |M‘| > |S| gelten ... */) © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Ein grundlegendes Ergebnis • • • es seien G = (V,E) ein bipartiter Graph und X,Y ⊆ V die zugehörige Zerlegung der Knotenmenge von G es sei M ⊆ E ein Matching von G es sei M‘⊆ E ein anderes Matching von G Dann gilt: Wenn |M| < |M‘| gilt, so gibt es einen erweiterbaren Pfad in G bzgl. M. ... in der Literatur nennt man diesen Zusammenhang auch „Theorem von der Existenz erweiterbarer Pfade“ 1/2, Folie 33 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel M mit Größe 4 1/2, Folie 34 © 2011 Prof. Steffen Lange - M‘ mit Größe 5 HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Begründung • • es sei M* die Kantenmenge, die alle Kanten aus M und M‘ enthält, die nicht gleichzeitig in M und M‘ sind es sei G* = (V,M*) • es sei j irgendein Knoten in V • • • die Zusammenhangskomponenten V‘ des Graphen G* = (V,M*) haben entweder die Eigenschaft a) oder b) a) b) 1/2, Folie 35 dann gibt es höchstens zwei Kanten in M*, die j als Ecke haben (/* weil M und M‘ Matchings in G sind */) wenn es zwei Kanten in M* gibt, die j als Ecke haben, so gehört eine zu M und eine zu M‘ die Knoten von V‘ bilden einen Zyklus die Knoten in V‘ bilden einen alternierenden Pfad bzgl. M © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen ... zurück zum Beispiel G* = (V,M*) 1/2, Folie 36 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel Zusammenhangskomponenten von G* 1/2, Folie 37 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen ... zurück zur Begründung • es sei V‘ einen Zusammenhangskomponente • • • 1/2, Folie 38 wenn die Knoten in V‘ einen Zyklus bilden, kommen in diesem Zyklus genauso viele Kanten aus M und M‘ vor wenn die Knoten in V‘ einen alternierenden Pfad bilden, so benutzt der Pfad entweder i) genauso viele Kanten aus M und M‘ oder ii) unterscheidet sich die Anzahl der benutzten Kanten aus M und M‘ um eins da |M‘| > |M| gilt und Zusammenhangskomponenten von G*, die Kantenmenge M* in paarweise disjunkte Mengen zerlegen, muss es ein V‘ geben, dessen Knoten einen erweiterbaren Pfad bilden (/* der Pfad gehört zum Typ ii), wobei mehr Kanten aus M‘ als aus M benutzt werden */) © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Anmerkungen • • bei der Definition der Begriffe alternierender Pfad, erweiterbarer Pfad haben wir gar nicht benutzt, dass der gegebene ungerichtete Graph ein bipartiter Graph ist beim Nachweis des „Theorems von der Existenz erweiterbarer Pfade“ haben wir auch nicht benutzt, dass der gegebene ungerichtete Graph ein bipartiter Graph ist ... die vorgeschlagene algorithmische Idee ist für alle ungerichteten Graphen korrekt (/* Aspekt 2 */) ... die fehlenden Details (/* Aspekt 1 */) lassen sich für bipartite Graphen einfacher „ausarbeiten“ 1/2, Folie 39 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Eine einfache Beobachtung • • • es seien G = (V,E) ein bipartiter Graph und X,Y ⊆ V die zugehörige Zerlegung der Knotenmenge von G es sei M ⊆ E ein Matching von G es sei P = (v0,...,vk) ein erweiterbarer Pfad in G bzgl. M Dann gilt: Wenn P = (v0,...,vk) ein erweiterbarer Pfad in G bzgl. M ist, so muss entweder i) v0 ∈ X und vk ∈ Y oder ii) v0 ∈ Y und vk ∈ X gelten. ... da im Fall ii) P‘ = (vk,...,v0) ebenfalls ein erweiterbarer Pfad ist, genügt es, nach erweiterbaren Pfaden zu suchen, die in X beginnen 1/2, Folie 40 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Zurück zur zentralen algorithmischen Fragestellung • gegeben: • • gesucht: • 1/2, Folie 41 ein bipartiter Graph G = (V,E) und die zugehörige Zerlegung von V in zwei Teilmengen X und Y © 2011 Prof. Steffen Lange ein maximales Matching M von G - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Hilfsbegriff: Unversorgte Knoten • • • • 1/2, Folie 42 es seien G = (V,E) ein bipartiter Graph und X,Y ⊆ V die zugehörige Zerlegung der Knotenmenge von G es sei M ⊆ E ein Matching von G ein Knoten x ∈ X ist ein unversorgter Knoten bzgl. M, falls es keine Kante in M mit der Ecke x gibt ein Knoten y ∈ Y ist ein unversorgter Knoten bzgl. M, falls es keine Kante in M mit der Ecke y gibt © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Ungarischer Algorithmus 1) 2) 3) 4) 5) 6) 7) 1/2, Folie 43 wähle ein Matching M von G (/* der Einfachheit halber das leere */) markiere alle bzgl. M unversorgten Ecken in x ∈ X mit # markiere alle noch nicht markierten Ecken y ∈ Y, die durch eine nicht zu M gehörenden Kante mit einer „neu“ markierten Ecke x ∈ X verbunden sind, mit diesem x (/* jedes y bekommt jedoch nur ein x als Markierung !!! */) wurde in 3) kein neues y ∈ Y markiert, so stoppe ist mindestens eine „neu“ markierte Ecke y ∈ Y unversorgt bzgl. M, so gehe zu 7); andernfalls gehe zu 6) markiere alle Ecken x ∈ X, die durch (/* genau */) eine Kante aus M mit einer in „neu“ markierten Ecke y ∈ Y verbunden sind mit # und gehe zu 3) bestimme ausgehend von einer unversorgten Ecke y ∈ Y einen erweiterbaren Pfad P; bestimme die bzgl. M und P erweiterte Kantenmenge M‘; setze M‘ = M; streiche alle Markierungen und gehe zu 2) © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel # 1 1‘ 2 2‘ 3 3‘ 4 4‘ 5 5‘ 6 6‘ 2 2 2 2‘ # 2 2 6‘ 1/2, Folie 44 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel 1 1‘ # 2 2‘ # 3 3‘ 4 4‘ 5 5‘ 6 6‘ # 2 2 2 # 2‘ 3 2 # 6‘ 5 # 2 1/2, Folie 45 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel 1 1‘ # 2 2‘ 2 # 3 3‘ 3 (5) 4 4‘ 5 5 5‘ 5 6 6‘ 2 # 2 # 3 2‘ 3 3‘ 2 # 5 6‘ 5 4‘ # 2 5 5‘ 1/2, Folie 46 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel # 1 1‘ # 2 2‘ 2 # 3 3‘ 3 # 4 4‘ 5 # 5 5‘ 5 # 6 6‘ 2 2 # 3 # 2‘ 3 3‘ 4 2 # 5 # 6‘ 5 4‘ 1 5 # 5‘ 6 # 2 1/2, Folie 47 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel # 1 1‘ 1 # 2 2‘ 2 # 3 3‘ 3 # 4 4‘ 5 # 5 5‘ 5 # 6 6‘ 2 2 # 3 # 2‘ 3 3‘ 4 2 # 5 # 1 6‘ 5 4‘ 1 1‘ 5 # 5‘ 6 # 2 1/2, Folie 48 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel # 1 1‘ 1 # 2 2‘ 2 # 3 3‘ 3 # 4 4‘ 5 # 5 5‘ 5 1 1‘ # 6 6‘ 2 2 2‘ 3 3‘ 4 4‘ 5 5‘ 6 6‘ 1/2, Folie 49 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Anmerkungen (/* Rechenzeit */) • es sei G ein bipartiter Graph mit n Knoten und m Kanten • offenbar terminiert der Ungarische Algorithmus immer • man kann höchsten n mal zu 2) kommen (/* das aktuell betrachtete Matching kann maximal n mal verändert werden; jede Veränderung erhöht die Anzahl der Kanten im aktuellen Matching um eins; ein maximales Matching kann höchstens n Kanten enthalten */) ... es genügt abzuschätzen, wie viele Rechenschritte benötigt werden, um das aktuell betrachtete Matching M „vollständig“ zu verarbeiten 1/2, Folie 50 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Anmerkungen (/* Rechenzeit */) • um das aktuelle Matching M „vollständig“ zu verarbeiten, benötigt man • • • c1*n viele Rechenschritte, um 2) auszuführen c2*(n+m) viele Rechenschritte, um alle durch alternierende Pfade von unversorgten Knoten in X erreichbaren Knoten zu markieren (/* analog zum Bestimmen von Zusammenhangskomponenten */) c3*n viele Rechenschritte um in 7) einen bzgl. M erweiterbaren Pfad und die bzgl. M und P erweiterte Kantenmenge M‘ zu bestimmen ... also genügen c*(n+m) viele Rechenschritte, um das aktuell betrachtete Matching M „vollständig“ zu verarbeiten ... also benötigt der Ungarische Algorithmus insgesamt c*n(n+m) viele Rechenschritte 1/2, Folie 51 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Anmerkungen (/* Korrektheit */) 1/2, Folie 52 • es sei M das vom Ungarischen Algorithmus bestimmte Matching • • es ist zu zeigen, dass M ein maximales Matching von G ist also genügt es zeigen, dass es keinen erweiterbarer Pfad bzgl. M gibt • Annahme: es sei P = (v1,v‘1,v2,v‘2,...,vk,v‘k) ein erweiterbarer Pfad bzgl. M mit vi ∈ X und v‘i ∈ Y für alle i = 1,...,k, den der Ungarische Algorithmus „übersehen“ hat (/* d.h. der Ungarische Algorithmus stoppt, ohne einen „neuen“ erweiterbaren Pfad gefunden zu haben */) • da P ein erweiterbarer Pfad ist, weiß man, dass sowohl v1 als auch v‘k bzgl. M unversorgt sind und dass für alle i = 1,...,k die Kante { vi,v‘i } nicht zu M gehört und für alle i = 1,...,k-1 die Kante { v‘i,vi+1 } zu M gehört © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Anmerkungen (/* Korrektheit */) • da P = (v1,v‘1,v2,v‘2,...,vk,v‘k) ein erweiterbarer Pfad bzgl. M ist , weiß man also auch, dass der Ungarische Algorithmus bei Verarbeitung von M • • • • • • • • v1 mit # markiert wird v‘1 irgendwann markiert wird (/* aber ggf. nicht mit v1 */) v2 irgendwann mit # markiert wird v‘2 irgendwann markiert wird (/* aber ggf. nicht mit v2 */) v3 irgendwann mit # markiert wird ... vk irgendwann mit # markiert wird v‘k irgendwann markiert wird (/* aber ggf. nicht mit vk */) ... da vk unversorgt ist, würde der Ungarische Algorithmus nicht stoppen (/* Widerspruch zur Annahme !!! */) 1/2, Folie 53 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Ergänzung • die vorgestellte Argumentation liefert u.a. folgende Einsicht ... ... es ist de facto egal, auf welchem alternierenden Pfad man einen Knoten von einem unversorgten Knoten aus erreicht, wichtig ist nur, das man den Knoten überhaupt erreicht (/* die Zusatzinformation, die sich in den Knoten aus Y gemerkt wird, ist nur wichtig, um in 7) einen erweiterbaren Pfad zu bestimmen ...*/) • bei nicht bipartiten Graphen muss man „vorsichtiger sein“ 1 3 1 2 3 4 1/2, Folie 54 © 2011 Prof. Steffen Lange 2 - 4 HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Zurück zum Satz von König • • • es sei G = (V,E) ein bipartier Graph es sei M* ein maximales Matching von G es sei S* eine minimale Eckenüberdeckung von G Dann gilt: |M*| = |S*|. ... es genügt zu zeigen, dass man eine Eckenüberdeckung finden kann, die genauso viele Knoten hat, wie das vom Ungarischen Algorithmus bestimmte Matching Kanten besitzt ... da für jedes Paar (M,S), bestehend aus einem Matching M und einer Eckenüberdeckung S, bekannt ist, dass |M| ≤ |S| gilt, würde sofort folgen: • • 1/2, Folie 55 der Ungarische Algorithmus bestimmt ein maximales Matching der Satz von König ist korrekt © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Algorithmischen Fragestellung • gegeben: • • gesucht: • 1/2, Folie 56 ein bipartiter Graph G = (V,E) und die zugehörige Zerlegung von V in zwei Teilmengen X und Y © 2011 Prof. Steffen Lange eine minimale Eckenüberdeckung S von G - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Algorithmische Idee 1) 2) wende den Ungarischen Algorithmus an (/* es seien M das bestimmte Matching, X‘ die Teilmenge der Knoten in X, die nicht mit # markiert sind und Y‘ die Teilmenge der Knoten in Y, die markiert sind */) setze S = X‘ ∪ Y‘ und gib S aus ... es genügt zu zeigen, dass a) und b) gilt a) b) 1/2, Folie 57 © 2011 Prof. Steffen Lange - HDa/FbI S ist eine Eckenüberdeckung |M| = |S| gilt - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel # 1 1‘ 1 # 2 2‘ 2 # 3 3‘ 3 # 4 4‘ 5 # 5 5‘ 5 # 6 6‘ 2 • • • X‘ = ∅ Y‘ = { 1,2,3,4,5,6 } S = { 1,2,3,4,5,6 } • • • X‘ = { 1 } Y‘ = { 2‘,3‘ } S = { 1,2‘,3‘ } Ein anderes Beispiel 1/2, Folie 58 1 1‘ # 2 2‘ 1 # 3 3‘ 2 # 4 4‘ © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Begründung (/* Teil a) */) • es gibt „theoretisch“ vier Typen von Kanten (/* mit Blick auf die vom Ungarischen Algorithmus beim Abbruch bestimmte Markierung der Knoten in X und Y */) Typ Ecke in X Ecke in Y Durch S überdeckt? 1 nicht mit # markiert nicht markiert offenbar überdeckt 2 nicht mit # markiert markiert offenbar überdeckt 3 mit # markiert nicht markiert ??? 4 mit # markiert markiert offenbar überdeckt ... es genügt zu zeigen, dass es gar keine Kanten vom Typ 3 geben kann 1/2, Folie 59 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Begründung (/* Teil a) */) • Annahme: es gibt in G eine Kante e = { x,y }, wobei x mit # markiert ist und y nicht markiert ist Fall 1: e gehört zum bestimmten Matching M • • • dann ist x bzgl. M nicht unversorgt also kann x nur dadurch markiert worden sein, dass es eine Kante e‘ = { x‘,y‘ } in M gibt, für die gilt: x‘ = x und y‘ ist markiert da y nicht markiert ist, muss y ≠ y‘ gelten und M kann folglich kein Matching sein ... Widerspuch zur Annahme !!! Fall 2: e gehört nicht zum bestimmten Matching M • dann müsste aber y auch markiert sein ... Widerspuch zur Annahme !!! 1/2, Folie 60 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Begründung (/* Teil b) */) • da wir wissen, dass S eine Eckenüberdeckung von G ist und M ein Matching von G ist, gilt |S| ≥ |M| • um zu zeigen, dass |M| = |S| ist, genügt es zu zeigen, dass nicht |S| > |M| gelten kann • Annahme: |S| > |M| Fall 1: es gibt x,y ∈ S und keine Kante in M hat x oder y als Ecke • Fall 2: • • 1/2, Folie 61 das kann nicht sein, da M ein maximales Matching von G ist es gibt x,y ∈ S und eine Kante e = { x,y } in M offenbar ist x unmarkiert und y markiert da y markiert ist und e zu M gehört, müsste x auch markiert sein ... beide Fälle sind nicht möglich !!! © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Zusammenfassung • mit Hilfe des Ungarischen Algorithmus kann man effizient maximale Matchings und minimale Eckenüberdeckungen von bipartiten Graphen bestimmen • die grundlegende Idee besteht darin, sukzessive erweiterbare Pfade zu suchen und das aktuell bestimmte Matching, mit Blick auf den jeweils gefunden erweiterbaren Pfad, zu „verbessern“ ... die gleiche Idee funktioniert auch für Graphen, die keine bipartiten Graphen sind (/* da ist die Suche aufwändiger, da nicht von vornherein klar ist, ob die Ecken einer Kante { x,y } in der Reihenfolge x,y oder in der Reihenfolge y,x in einem alternierenden Pfad besucht werden */) 1/2, Folie 62 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung Kapitel 1: Fallstudie Bipartite Graphen Matchings in bipartiten Graphen Beispiel (/* allgemeiner Fall */) 1 3 1 2 2 3 4 4 Beispiel (/* Spezialfall: Bipartite Graphen */) 1/2, Folie 63 1 2 3 4 5 6 7 8 © 2011 Prof. Steffen Lange - HDa/FbI - Graphen und Optimierung