1. Übungsblatt Kombinatorische Optimierung WS 2015/16 Jens M. Schmidt Aufgabe 1: Optimalitätsbedingungen Beweisen Sie die Äquivalenz folgender Aussagen für einen Spannbaum T eines zusammenhängenden Graphen G = (V, E). i) T ist ein minimaler Spannbaum. ii) (Kreisbedingung) Für jede Kante vw ∈ E − E(T ) gilt, dass alle Kanten des v-w-Pfades in T höchstens das Gewicht c(vw) haben. iii) (Schnittbedingung) Für jede Kante e ∈ T und Knotenmenge S einer Zusammenhangskomponente von T − e ist e minimal in δ(S). Aufgabe 2: Kruskal und Prim i) Führen Sie den Algorithmus von Kruskal an folgendem Graphen aus. ii) Führen Sie den Algorithmus von Prim an folgendem Graphen aus, beginnend mit dem Knoten a. iii) Eine Kontraktion einer Kante e = vw löscht e und identifiziert die Knoten v und w; hierbei können neue Mehrfachkanten auftreten. Rekapitulieren Sie die aus Graphen und Algorithmen bekannte Adjazenzlisten-Repräsentation von Graphen und überlegen Sie sich, in jeweils welcher Laufzeit1 Kanten gelöscht, eingefügt und kontrahiert werden können. iv) Erklären Sie in so viel Detail wie nötig, welche Schritte des Algorithmus von Prim wieviel Laufzeit benötigen (bei Adjazenzlisten-Repräsentation der Eingabe). Für welche Schritte wird der Fibonacci-Heap benutzt? Aufgabe 3: Austauscheigenschaften Seien T1 = (V, E1 ) und T2 = (V, E2 ) zwei Spannbäume eines Graphen G. Beweisen Sie, dass für jede Kante e1 ∈ E1 − E2 eine Kante e2 ∈ E2 − E1 existiert, so dass sowohl E1 + e2 − e1 als auch E2 + e1 − e2 Spannbäume von G sind. Aufgabe 4: Vizemeister Ein zweitbester MST ist ein Spannbaum mit minimalem Gewicht, das größer als das Gewicht eines MST ist. 1 Genauer benutzen wir hierbei die Anzahl Rechenschritte auf der sogenannten unit-cost RAM. Diese erlaubt folgende grundlegende Funktionen auf Registern und Hauptspeicher in jeweils einem Rechenschritt (daher der Name unit-cost): Eingabe-Ausgabe-Operationen, Speicher-Register Transfers, indirektes Addressieren, Verzweigungen, fundamentale arithmetische Operationen und Vergleiche. Ebenso wird als Eingabelänge nicht die Bitlänge der Eingabe, sondern die Anzahl der Zahlen in der Eingabe gemessen (z.B. n + m für Graphen). Wir machen zudem die Annahme, dass die Bitlänge aller Operanden der Anweisungen polynomiell in der Eingabebitlänge sind, da die unit-cost RAM andernfalls nicht mehr polynomiell äquivalent zu anderen grundlegenden Maschinenmodellen ist. a 4 7 d b 9 15 10 f 12 e c 5 6 11 13 8 g i) Geben Sie möglichst große Graphklassen an, für deren Graphen kein zweitbester MST existiert. Bonusaufgabe: Sind das die einzigen? ii) Durch minimal wie viele Kantenvertauschungen unterscheidet sich ein gegebener MST T von einem (beliebigen) zweitbesten MST? iii) Finden Sie einen Algorithmus mit Laufzeit O(mn) oder besser, der einen zweitbesten MST effizient berechnet.