Musterlösung - Aufgabenblatt 3 Aufgabe 1 Sei D = (V, A) ein gerichteter Graph, |V | = n und l : A → Z eine Kantenlängenfunktion. Sei s ∈ V . Wir betrachten die Funktionen d0 , . . . , dn : V → Z, die der Algorithmus von Bellman-Ford mit Startknoten s berechnet. Zu zeigen ist, dass dn = dn−1 genau dann gilt, wenn alle gerichteten Kreise, die von s aus erreichbar sind, nicht-negative Länge besitzen. Wir verwenden, dass dk (V ) = min{l(P ) : P ist s-v-Kantenfolge, die ≤ k Kanten enthält} (1) für alle v ∈ V und k = 0, . . . , n (Satz aus der Vorlesung). ⇒“: Angenommen es gilt dn = dn−1 . Wir zeigen zunächst, dass dann für jede Kan” te (u, v) ∈ A gilt, dass l((u, v)) ≥ dn−1 (v) − dn−1 (u). Da eine s-u-Kantenfolge aus ≤ n − 1 Kanten zusammen mit der Kante (u, v) eine s-v-Kantenfolge aus ≤ n Kanten ergibt, haben wir dn−1 (u) + l((u, v)) ≥ dn (v) = dn−1 (v) nach (1), was das Gewünschte zeigt. Für einen Kreis C = (v0 , a1 , v1 , a2 , . . . , am−1 , vm−1 , am , vm ) mit vm = v0 gilt also: m m X X l(C) = l(ai ) ≥ dn−1 (vi−1 ) − dn−1 (vi ) = 0. i=1 i=1 ⇐“: Nehmen wir an, dass alle gerichteten Kreise, die von s aus erreichbar sind, ” nicht-negative Länge besitzen. Für einen Knoten v vergleichen wir dn−1 (v) und dn (v). Nach der Charakterisierung (1) sind beide Werte Minima, wobei wir für dn (v) über eine größere Menge minimieren, die zusätzlich auch s-vKantenfolgen, die n Kanten enthalten, beinhaltet. Sei P eine s-v-Kantenfolge mit n Kanten. P muss dann mindestens einen Knoten zweimal besuchen und damit einen gerichteten Kreis C enthalten. Lassen wir C aus, erhalten wir eine s-v-Kantenfolge P 0 , die weniger Kanten als P und damit ≤ n − 1 Kanten enthält. Da der gerichtete Kreis C von s erreichbar ist, hat er nicht-negative Länge. Wir haben also: l(P ) = l(P 0 ) + l(C) ≥ l(P 0 ) Damit haben wir gezeigt, dass es für jede s-v-Kantenfolge mit n Kanten eine mit n − 1 Kanten gibt, die kürzere oder gleich grosse Länge besitzt. Das Hinzunehmen der Kantenfolgen aus n Kanten ändert also das Minimum nicht. Damit gilt dn = dn−1 . Aufgabe 2 Sei G = (V, E) ein ungerichteter Graph, in dem jeder Knoten höchstens zwei Nachbarn hat. Wir zeigen, dass jede Zusammenhangskomponente von G entweder ein Weg (eventuell der Länge 0) oder ein Kreis ist. Sei v ∈ V ein Knoten. Wir betrachten die Zusammenhangskomponente von v. 1.Fall - v hat keine Nachbarn: In diesem Fall besteht die Zusammenhangskomponente von v nur aus v selbst und ist ein Weg der Länge 0. 2.Fall - v hat mindestens einen Nachbarn: Wir konstruieren eine von v ausgehende Kantenfolge und setzen v0 = v. Nach Annahme hat v einen Nachbarknoten u. Wir setzen v1 = u. Hat u noch einen Nachbarn w 6= v, so setzen wir v2 = w. Dies setzen wir fort bis wir einen Knoten mit nur einem Nachbarn erreichen oder einen Knoten, dessen zweiter Nachbar bereits Teil der Kantenfolge ist: Falls vi einen Nachbarknoten x ∈ / {v0 , v1 , . . . , vi−1 } hat, setzen wir vi+1 = x. (Da es nur endlich viele Knoten gibt, tritt einer dieser zwei Fälle irgendwann ein.) So erhalten wir eine Kantenfolge (v0 , e1 , v1 , e2 , . . . , el , vl ), die nach Konstruktion ein Weg ist. Der letzte Knoten vl hat entweder nur einen Nachbarn, vl−1 , oder ist mit einem weiteren Knoten benachbart, der aber bereits in der Kantenfolge vorkommt. Betrachten wir zunächst den zweiten Fall. Da für i = 1, 2, . . . , l − 2 der Knoten vi nur die Nachbarn vi−1 und vi+1 haben kann, muss der zweite Nachbar von vl der Knoten v0 = v sein. Wir können den konstruierten Weg also zu einem Kreis (v0 , e1 , v1 , e2 , . . . , el , vl , el+1 , v0 ) erweitern. Da es keine anderen Knoten geben kann, die von v aus erreichbar sind, besteht die Zusammenhangskomponente von v aus diesem Kreis. Betrachten wir nun den Fall, dass vl nur den Nachbarn vl−1 hat. Falls dann v = v0 keinen weiteren Nachbarn außer v1 hat, besteht die Zusammenhangskomponente von v aus dem bisher konstruierten Weg. Ist dies nicht der Fall konstruieren wir eine zweite von v ausgehende Kantenfolge analog zu oben, nur beginnen wir diesmal mit dem zweiten Nachbarknoten von v0 . Es sei also w1 dieser zweite Nachbarknoten. Hat w1 neben v noch einen Nachbarn, so bezeichnen wir diesen mit w2 . Wir verfahren also wie bereits bei der Konstruktion der ersten Kantenfolge und erhalten auch hier nach Konstruktion einen Weg (v0 , f1 , w1 , f2 , . . . , fk , wk ). Hierbei können als neue Nachbarn keine Knoten auftauchen, die schon in der ersten Kantenfolge enthalten sind. Der zweite Weg muss also auch in einem Knoten wk enden, der nur einen Nachbarn hat. Damit besteht die Zusammenhangskomponente von v aus dem Weg (wk , fk , wk−1 . . . , w1 , f1 , v0 , e1 , v1 , e2 , . . . , el , vl ). Aufgabe 3 Für den gegebenen Graphen G soll ν(G) bestimmt werden. Dies tun wir, indem wir ein Matching angeben, für das es keinen augmentierenden Weg gibt. Nach Vorlesung wissen wir dann, dass dieses Matching maximale Kardinalität besitzt. Wir beginnen mit einem relativ großen Matching, das leicht zu finden ist, aber nicht durch einfaches Hinzufügen von Kanten erweitert werden kann: a b c d e f g h i j 1 2 3 4 5 6 7 8 9 10 Für dieses Matching finden wir nun folgenden augmentierenden Weg: a b c d e f g h i j 1 2 3 4 5 6 7 8 9 10 Wir erhalten ein neues, um eine Kante größeres Matching: a b c d e f g h i j 1 2 3 4 5 6 7 8 9 10 Wir finden einen weiteren augmentierenden Weg: a b c d e f g h i j 1 2 3 4 5 6 7 8 9 10 Dieser gibt uns folgendes Matching M : a b c d e f g h i j 1 2 3 4 5 6 7 8 9 10 Nun wollen wir zeigen, dass es keine M -augmentierenden Wege gibt. Da nur die Knoten g und 7 nicht von M bedeckt sind, müsste ein solcher Weg ein g-7-Weg sein. Wir betrachten mögliche Wege, die in g starten und abwechselnd Kanten aus M und Kanten, die nicht aus M stammen verwenden. Von g aus können wir entweder die Kante zu 8 oder die Kante zu 6 nehmen. Wir betrachten erst die Wege, die die Kanten {g, 8} enthalten. Sie müssen, wenn sie M augmentierend sein sollen, auch die Kanten {8, h} enthalten. Vom Knoten h aus haben wir wieder zwei Wahlen: die Kante zu 9 oder die Kante zu 6. Betrachten wir erst, was passiert, wenn wir die Kanten {h, 9} wählen. Für einen M -augmentierenden Weg gibt es an den folgenden Knoten keine Wahlen mehr. Wenn wir abwechselnd M - und Nicht-M -Kanten wählen, erhalten wir folgenden Weg, der in Knoten i endet: a b c d e f g h i j 1 2 3 4 5 6 7 8 9 10 Auf diese Weise können wir also keinen M -augmentierenden Weg erhalten. Wir hätten aber auch (von g oder von h aus) eine Kante zu Knoten 6 wählen können. Wenn wir von Knoten 6 aus abwechselnd M - und Nicht-M -Kanten folgen, erhalten wir jedoch folgenden geschlossenen Weg, der wieder zu 6 zurückkehrt. a b c d e f g h i j 1 2 3 4 5 6 7 8 9 10 Auch auf diese Weise können wir also keinen M -augmentierenden Weg erhalten, was zeigt, dass es keinen solchen Weg geben kann. M ist also ein Matching maximaler Kardinalität und wir haben ν(G) = 9. Aufgabe 4 Wir modellieren die Fragestellung als graphentheoretisches Problem. Für eine Matrix M = (mij ) i=1...,m, mit m Zeilen und n Spalten definieren wir einen bipartiten j=1...,n Graphen mit m + n Knoten, der für jede Zeile und jede Spalte einen Knoten hat. Eine Kante zwischen zwei Knoten existiert genau dann, wenn der korrespondierende Matrix-Eintrag 0 ist. Formeller hat der Graph G = (U ∪ W, E) Knotenmengen U = {1, . . . , m} und W = {1, . . . , n} und Kantenmenge E = {{i, j} : i ∈ U, j ∈ W und mij = 0}. Ein Matching in diesem Graphen beschreibt dann eine Auswahl von Null-Einträgen in M , so dass jede Zeile und jede Spalte höchstens einen dieser Null-Einträge enthält. Die maximale Anzahl von solchen Null-Einträgen von M ist also ν(G), die maximale Kardinalität eines Matchings in G. Nach Königs Matching-Theorem aus der Vorlesung gilt ν(G) = τ (G) := min{|U | : U ⊆ V ist eine Knotenüberdeckung}. Eine Knotenüberdeckung in G enspricht einer Auswahl von Zeilen und Spalten in M , so dass jeder Null-Eintrag in einer dieser Spalten oder Zeilen enthalten ist.