Skript: Exakte Exponentialzeit-Algorithmen

Ähnliche Dokumente
Probleme aus NP und die polynomielle Reduktion

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Teil III. Komplexitätstheorie

Wiederholung zu Flüssen

Das Briefträgerproblem

Lösungen zur 1. Klausur. Einführung in Berechenbarkeit, formale Sprachen und Komplexitätstheorie

Algorithmen II Vorlesung am

Das Heiratsproblem. Definition Matching

Wie komme ich von hier zum Hauptbahnhof?

Einführung in die Theoretische Informatik

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Algorithmen zum Lösen von Vertex und Set Cover Instanzen zur Planung von Angriffen auf Netzwerke

Bäume und Wälder. Definition 1

Einführung in die Informatik 2

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Lösungsvorschläge Blatt Z1

Reduktionen. Algorithmen und Datenstrukturen Kapitel 6.2 Komplexitätstheorie. Exkurs: Reduktionen allgemein. Reduktionen: Erläuterungen

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)

Sudoku ist NP-vollständig

Grundlagen der Graphentheorie. Thomas Kamps 6. Oktober 2008

Vorlesung 2 KÜRZESTE WEGE

Resolutionsalgorithmus

8 Der Kompaktheitssatz und der Satz von Löwenheim und Skolem

1 Potenzen und Polynome

Übung zur Vorlesung Berechenbarkeit und Komplexität

Einführung in die Theoretische Informatik

Klausur Informatik-Propädeutikum (Niedermeier/Hartung/Nichterlein, Wintersemester 2012/13)

3 Klassifikation wichtiger Optimierungsprobleme

NP-vollständig - Was nun?

abgeschlossen unter,,,, R,

Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph.

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP

Kap. 7.1 Heuristiken Kap. 7.2 Approximative Algorithmen und Gütegarantien

Vorlesung Diskrete Strukturen Eulersche und Hamiltonsche Graphen

Quicksort ist ein Divide-and-Conquer-Verfahren.

Kapitel 3: Die Sätze von Euler, Fermat und Wilson. 8 Der Satz von Euler

Graphen und Algorithmen

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Grundlagen der Informatik Kapitel 20. Harald Krottmaier Sven Havemann

Übungsblatt Nr. 5. Lösungsvorschlag

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Übungsblatt 6. Vorlesung Theoretische Grundlagen der Informatik im WS 16/17

Isomorphie von Bäumen

Ersetzbarkeitstheorem

Logik für Informatiker

4.1. Vektorräume und lineare Abbildungen

Konstruktion der reellen Zahlen

ADS: Algorithmen und Datenstrukturen 2

Klausur Theoretische Informatik I WS 2004/2005

Fünf-Farben-Satz. Seminar aus reiner Mathematik, WS 13/14. Schweighofer Lukas, November Seite 1

Theoretische Informatik SS 03 Übung 11

Aufgabe 1: Berechnen Sie für den in Abbildung 1 gegebenen Graphen den. Abbildung 1: Graph für Flussproblem in Übungsaufgabe 1

15. Elementare Graphalgorithmen

Kapitel 3. Konvergenz von Folgen und Reihen

Algorithmen II Vorlesung am

Maike Buchin 18. Februar 2016 Stef Sijben. Probeklausur. Theoretische Informatik. Bearbeitungszeit: 3 Stunden

Technische Universität München Zentrum Mathematik Propädeutikum Diskrete Mathematik. Weihnachtsblatt

Eigenwerte, Diagonalisierbarkeit, charakteristisches Polynom

Surjektive, injektive und bijektive Funktionen.

Automaten, Formale Sprachen und Berechenbarkeit I Wichtige Begriffe

Übungsblatt 2 - Lösung

Theoretische Informatik 1

Überblick Kap. 5: Graph Coloring

Einführung in die Logik

Algorithmen und Datenstrukturen 2

Musterlösung der Hauptklausur zur Vorlesung Theoretische Grundlagen der Informatik Wintersemester 2012/13

Konstruktion reeller Zahlen aus rationalen Zahlen

Klausur Algorithmen und Datenstrukturen II 29. Juli 2013

Binary Decision Diagrams (Einführung)

Vier-Farben-Vermutung (1)

Algorithmische Graphentheorie

Folgen. Kapitel 2. Folgen. Peter Becker (H-BRS) Analysis Sommersemester / 543

Gleichungen und Ungleichungen

Durchschnitt von Matroiden

Probabilistische Primzahltests

Explizite Formeln für rekursiv definierte Folgen

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

2. Teilbarkeit. Euklidischer Algorithmus

4 Greedy-Algorithmen (gierige Algorithmen)

Kombinatorische Optimierung

Musterlösung 11.Übung Mathematische Logik

Folgen und Reihen. Folgen. Inhalt. Mathematik für Chemiker Teil 1: Analysis. Folgen und Reihen. Reelle Funktionen. Vorlesung im Wintersemester 2014

x x y x y Informatik II Schaltkreise Schaltkreise Schaltkreise Rainer Schrader 3. November 2008

a i x i, (1) Ein Teil der folgenden Betrachtungen gilt auch, wenn man den Körper durch einen Ring ersetzt.

Algorithmen für schwierige Probleme

2 Polynome und rationale Funktionen

WS 2009/10. Diskrete Strukturen

Kapitel 5 KONVERGENZ

Übungen zur Linearen Algebra 1

Seminar Graphenfärbung Greedy-Färbung und Verwandtes

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

12.4 Traveling Salesman Problem

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Satz 16 (Multiplikationssatz)

2. Spezielle anwendungsrelevante Funktionen

Transkript:

Departement Informatik Algorithmik für schwere Probleme Prof. Dr. Juraj Hromkovič Dr. Hans-Joachim Böckenhauer Dr. Richard Královič http://www.ita.inf.ethz.ch/alscpr17 Skript: Exakte Exponentialzeit-Algorithmen Zürich, 2. Mai 2017 Motivation. Wenn eine exakte Lösung benötigt wird und kein parametrisierter Algorithmus bekannt ist (oder der Parameter in der Eingabe gross ist), versuche einen Algorithmus zu finden, der zwar exponentielle Laufzeit hat, aber schneller ist als die vollständige Suche. Beispiel 1. Ein Algorithmus mit Laufzeit 2 n 2 1.41 n kann doppelt so grosse Eingaben bewältigen wie ein Algorithmus mit Laufzeit 2 n. Ziel. Einige Entwurfsmethoden für schnelle Exponentialzeit-Algorithmen kennenlernen. Definition 1 (O -Notation). Seien f, g : N R +. Dann gilt f(n) O ( g(n) ), falls ein Polynom p: N R + existiert, so dass f(n) O ( g(n) p(n) ) ist. Anschaulich: Ignoriere polynomielle Faktoren in der asymptotischen Abschätzung. Dies ist bei exponentiellen Funktionen sinnvoll, weil α n p(n) O ( (α + ε) n) für jedes α 1 und jedes ε > 0 gilt. Die Basis der Exponentialfunktion wird in unseren Abschätzungen ohnehin meist eine gerundete reelle Zahl sein. 1. Methode: Branching-Algorithmen Idee. Reduziere ein Problem der Grösse n auf mehrere kleinere Teilprobleme. Bemerkung. Dies ist auch eine generelle Entwurfsmethode für polynomielle Algorithmen. Mergesort reduziert zum Beispiel ein Problem der Grösse n auf zwei Teilprobleme der Grösse n 2. Hier ist eine typische Reduktion aber eher von n auf n d für eine kleine Konstante d. 1

Beispiel 2 (Branching-Algorithmus für Max-IS). Definition 2. Das Maximum-Independent-Set-Problem (Max-IS) ist das Optimierungsproblem, in einem gegebenen ungerichteten Graphen G = (V, E) eine unabhängige Menge X V maximaler Grösse zu finden (d. h. {u, v} / E für alle u, v X). Beobachtung. Trivialer Algorithmus, der in Zeit O (2 n ) läuft: Alle Teilmengen von V ausprobieren. Definition 3. Sei G = (V, E) ein Graph, v V. Die abgeschlossene Nachbarschaft von v in G ist definiert als N[v] = { x V {x, v} E } {v}. Beobachtung. Sei G = (V, E) ein Graph, X ein (inklusions-)maximales IS in G (d. h. ein IS in G, zu dem kein Knoten mehr hinzugefügt werden kann). Dann gibt es für jeden Knoten v V in N[v] einen Knoten y, so dass X N[y] = {y}. Beweis. Wir machen eine einfache Fallunterscheidung. Falls v X ist, dann kann keiner der Nachbarn y von v in X sein nach der Definition des IS. Damit folgt die Behauptung für y = v. Falls v / X ist, dann muss ein Nachbar y von v in X sein, sonst wäre X nicht maximal (X {v} wäre dann auch im IS). Nach Definition des IS ist dann keiner der Nachbarn von y in X. = Diese Beobachtung liefert uns einen rekursiven Algorithmus, um die Kardinalität des maximalen IS zu berechnen: Algorithmus Branch-IS(G) Eingabe: Ungerichteter Graph G = (V, E). if V =, then return 0. Wähle einen Knoten v mit minimalem Grad in G. return 1 + max { Branch-IS(G N[y]) y N[v] }. Theorem 1. Der Algorithmus Branch-IS löst das Max-IS auf Graphen mit n Knoten in Zeit O ( 3 n 3 ) O (1.4423 n ). Beweis. Wir beweisen die Korrektheit und Laufzeitschranke einzeln. 1. Korrektheit: Folgt sofort aus der Beobachtung oben, da ein maximales IS maximaler Grösse ein Maximum-IS ist. 2

2. Laufzeit: Sei G der Graph (in irgendeinem der Teilprobleme), v der ausgewählte Knoten mit minimalem Grad. Seien v 1,..., v k die Nachbarn von v in G mit k = deg(v). Sei V (G) = n. Das Auswählen eines Knotens v mit minimalem Grad ist offensichtlich in polynomieller Zeit durchführbar. Durch das rekursive Aufrufen von Branch-IS entsteht ein Verzweigungsbaum T, dessen Grösse (Anzahl der Knoten) wir mit T (n) bezeichnen. = Die Gesamtlaufzeit ist in O(n 2 ) T (n). Nun schätzen wir T (n) ab durch T (n) 1 + T (n deg(v) 1) + deg(v) i=1 1 + (deg(v) + 1) T (n deg(v) 1). T (n deg(v i ) 1) Die zweite Ungleichung gilt, weil deg(v) deg(v i ) und offenbar T (l) T (l + 1) ist. Weiter gilt T (0) = 1. Dies gibt uns aber noch nicht unmittelbar eine Rekurrenzgleichung für die Gesamtlaufzeit des Algorithmus, weil der Knotengrad des ausgewählten Knotens in jedem rekursiven Aufruf des Algorithmus unterschiedlich sein kann. Deshalb schätzen wir zunächst deg(v) ab durch den schlechtestmöglichen Knotengrad, der auftreten kann: Sei D N die Menge aller minimalen Knotengrade, die in irgendeiner der Teilinstanzen vorkommen. Sei s mit s 1 D derjenige Wert für t, der die Funktion t T (n t) + 1 maximiert. Damit ergibt sich dann die Rekurrenzgleichung T (n) 1 + s T (n s ). Weil die Funktion T aber auch von der Knotenanzahl n des Graphen abhängt, und diese Knotenanzahl auch in jedem rekursiven Aufruf kleiner wird, müssen wir zusätzlich noch zeigen, dass der schlechtestmögliche Wert s nicht von n abhängt. Dafür zeigen wir folgende Aussage. Sei s mit s 1 D derjenige Wert für t, der die Funktion t T (n t) + 1 maximiert. Dann maximiert s auch die Funktion ts T (n s t) + s + 1 (die sich durch einmaliges rekursives Einsetzen von T in sich selbst ergibt). Um diese Hilfsaussage zu zeigen, nehmen wir an, dass T (n) = a n für ein a mit 1 a 2. Damit gilt dann ts T (n s t) + s + 1 (s ) 2 T (n 2s ) + s + 1 ts T (n s t) (s ) 2 T (n 2s ) ts a n s t (s ) 2 a n 2s ta n t s a n s tt (n t) s T (n s ) tt (n t) + 1 s T (n s ) + 1 3

Damit können wir in der Rekurrenz also überall die auftretenden Knotengrade abschätzen durch denselben schlechtestmöglichen Wert und erhalten die Rekurrenz T (n) 1 + s T (n s) 1 + s (1 + s T (n 2s)) = 1 + s + s 2 T (n 2s) 1 + s + s 2 (1 + s T (n 3s)) = 1 + s + s 2 + s 3 T (n 3s)... 1 + s + s 2 +... + s n s = 1 s n s +1 1 s O (s n s ) Die Funktion f(s) = s 1 s erreicht bei s > 0 ihr Maximum für s = e und für ganzzahlige Werte bei s = 3. = T (n) O (3 n 3 ) O (1.4423 n ). = Die Gesamtlaufzeit ist in O (1.4423 n ). Beispiel 3 (Branching-Algorithmus für 3Sat). Definition 4. Sei Φ eine Formel in 3-KNF über der Variablenmenge X. Seien x X und α {0, 1}. Φ[x = α] ist die Formel in 3-KNF, die aus Φ entsteht, wenn man den Wert x = α in Φ einsetzt und die Formel vereinfacht. Beobachtung. Φ[x = α] lässt sich aus Φ in linearer Zeit berechnen: Falls α = 1 ist, streiche alle Klauseln aus Φ, die x enthalten und streiche alle Vorkommen von x (hierdurch können leere Klauseln entstehen). Falls α = 0, verfahre umgekehrt. Beobachtung. Φ[x = α] ist genau dann erfüllbar, wenn es eine Belegung β für X gibt, die Φ erfüllt und die partielle Belegung α erweitert (d. h. β(x) = α). Trivialer Branching-Algorithmus für 3Sat. Führe die Berechnung für die Eingabe Φ zurück auf Φ[x = 0] und Φ[x = 1] für eine Variable x. = Laufzeit auf einer Formel mit n Variablen: T (n) = 2 T (n 1) + O(n) = T (n) = O (2 n ). Ziel. Verbesserung des Branchings. 4

Algorithmus Branch-3SAT(Φ) (Monien und Speckenmeyer) Eingabe: Formel Φ in 3-KNF über der Variablenmenge X = {x 1,..., x n }. Sei L := X {x x X} die Menge aller Literale in Φ. if Φ =, then return JA. Sei F eine Klausel in Φ minimaler Länge. if F =, then return NEIN. if F = (l) für ein l L, then Rufe Branch-3SAT(Φ[l = 1]) auf und übernimm das Ergebnis. if F = (x y) für x, y L, then Rufe Branch-3SAT(Φ[x = 1]) und Branch-3SAT(Φ[x = 0, y = 1]) auf und gib JA aus, falls einer der Aufrufe JA liefert, NEIN sonst. if F = (x y z) für x, y, z L, then Rufe Branch-3SAT(Φ[x = 1]), Branch-3SAT(Φ[x = 0, y = 1]) und Branch- 3SAT(Φ[x = 0, y = 0, z = 1]) auf und gib JA aus, falls einer der Aufrufe JA liefert, NEIN sonst. Theorem 2. Der Algorithmus Branch-3SAT löst 3Sat in Zeit O (1.84 n ). Beweis. Wir beweisen die Korrektheit und Laufzeitschranke wieder einzeln. 1. Korrektheit: Betrachte die Klausel F = (x y z) der Länge 3 mit x, y, z L. Um Φ zu erfüllen, muss auch F erfüllt werden, also muss mindestens eines der Literale x, y, z auf 1 gesetzt werden. Dies ist genau dann der Fall, wenn einer der drei Fälle x = 1, x = 0 und y = 1, x = y = 0 und z = 1 eintritt. Die Argumentation für kürzere Klauseln ist analog. 2. Laufzeit: Die Entscheidung für eine Formel mit n Variablen wird zurückgeführt auf (maximal) drei Teilprobleme mit n 1, n 2 und n 3 Variablen. Um die Laufzeit abzuschätzen, reicht es wieder aus, die Anzahl der Knoten im Verzweigungsbaum abzuschätzen, da für jeden Knoten nur polynomieller Aufwand nötig ist (hier: linearer Aufwand für die Berechnung von Φ[l = α] aus Φ). Die Anzahl der Knoten im Verzweigungsbaum (Anzahl der betrachteten Formeln) ist beschrieben durch T (n) = T (n 1) + T (n 2) + T (n 3), T (0) = 1. 5

Diese Rekurrenz lässt sich wie folgt lösen: Wir nehmen an, dass T (n) = a n gilt für 1 a 2. = T (n) ist die Lösung der Gleichung a n = a n 1 + a n 2 + a n 3. Das ist äquivalent zu: a 3 = a 2 + a + 1. Die einzige Lösung dieser kubischen Gleichung im Intervall [1, 2] ist a = 1.839.... = T (n) O (1.84 n ) = Die Gesamtlaufzeit ist in O (1.84 n ). 2. Methode: Dynamische Programmierung Beispiel 4 (TSP). O (2 n )-Algorithmus für TSP siehe Übung. Bemerkung. Dieser Algorithmus wurde vor ca. 50 Jahren entworfen und ist bis heute der beste bekannte exakte Algorithmus für TSP. Beispiel 5 (Graphfärbung). Definition 5. Sei G = (V, E) ein ungerichteter Graph, k N. Eine k-färbung von G ist eine Abbildung c: V {1,..., k}, so dass {x, y} E = c(x) c(y). Die chromatische Zahl χ(g) von G ist das kleinste k, so dass G eine k-färbung besitzt. Definition 6. Das Graphfärbungsproblem (Coloring) ist das folgende Berechnungsproblem: Gegeben ein Graph G, berechne χ(g). Theorem 3 (Hier ohne Beweis). Coloring ist NP-schwer. Trivialer Algorithmus für Coloring. Probiere jede Farbe für jeden Knoten aus. Da die chromatische Zahl allgemein nur durch n = V beschränkt werden kann, ergibt sich für einen Graphen mit n Knoten eine Laufzeit von O (n n ). Definition 7. Sei G = (V, E) ein ungerichteter Graph, sei c: V {1,..., k} eine k- Färbung von G. Wir nennen die Menge C i := {x V c(x) = i} die i-te Farbklasse von c. Beobachtung. Jede Farbklasse von c ist ein IS in G. Beobachtung. Sei G ein ungerichteter Graph, c eine k-färbung von G, C i eine Farbklasse von c. Falls C i kein (inklusions-)maximales IS ist, gibt es einen Knoten x V C i, der mit der Farbe i gefärbt werden kann, so dass das Resultat eine gültige k-färbung ist. 6

Algorithmus DP-COL Eingabe: Ungerichteter Graph G = (V, E). col( ) := 0 for i := 1 to V do for all X V mit X = i do col(x) := 1 + min{col(x I) I ist ein maximales IS in G[X]} (G[X] ist der von X induzierte Teilgraph von G.) Ausgabe: χ(g) := col(v ) Theorem 4. DP-COL löst Coloring auf Graphen mit n Knoten in Zeit O (2.45 n ). Beweis. Wir beweisen die Korrektheit und Laufzeitschranke wieder einzeln. 1. Korrektheit: Weil jede Farbklasse einer optimalen Färbung ein IS ist, kann man die optimale Färbungszahl finden durch Ausprobieren aller IS und Reduktion auf den Restgraphen. Wegen der Beobachtung oben reicht es aus, das Ausprobieren auf maximale IS zu beschränken. 2. Laufzeit: Der Algorithmus iteriert für alle Teilmengen X von V über alle maximalen IS von X. Die maximalen IS lassen sich für X = i in Zeit O (3 i 3 ) aufzählen (einfache Erweiterung des Max-IS-Algorithmus oben). ( n ( ) ) = Die Gesamtlaufzeit ist in O n 3 i 3 i Wegen n i=1 i=1 ( ) n 3 i 3 3 = (1 + 3) n < 2.45 n i (die erste Gleichung folgt aus dem binomischen Satz) folgt die Behauptung. Beispiel 6 (Anzahl perfekter Matchings bestimmen). Ziel. Schneller Exponentialzeit-Algorithmus, der in einem gegebenen Graphen zählt, wie viele perfekte Matchings existieren. Definition 8. Sei G = (V, E) ein ungerichteter Graph mit n = V gerade. Ein perfektes Matching in G ist eine Menge M E von n paarweise disjunkten Kanten. 2 Beobachtung. Nicht jeder Graph hat ein perfektes Matching (z. B. Stern). Beobachtung. Ein Graph kann mehrere perfekte Matchings besitzen (z. B. gerader Kreis). 7

Entscheidungsproblem. Existiert in G ein perfektes Matching? = In Polynomzeit lösbar, aber kompliziert. Zählproblem. Wie viele verschiedene perfekte Matchings hat G? = Schweres Problem. Ziel. Algorithmus, der dynamische Programmierung verwendet mit Laufzeit O (1.681 n ). Trivialer Algorithmus. Alle Kantenteilmengen der Grösse n 2 ausprobieren. Beobachtung. Führt in dichten Graphen mit O(n 2 ) Kanten zu einer Laufzeit von 2 O(n2). Definition 9. Sei G = (V, E) ein ungerichteter Graph. Sei für alle X V, X gerade, die Anzahl perfekter Matchings in G[X] definiert als pm(x). Offensichtlich gilt pm(x) = 0, falls E(G[X]) =, und pm(v ) ist der gesuchte Wert. Um pm(v ) zu bestimmen, zählen wir zunächst alle geordneten perfekten Matchings, also alle geordneten Folgen (e 1,..., e n/2 ) paarweise disjunkter Kanten. Sei opm(x) die Anzahl geordneter perfekter Matchings in G[X] für alle X V, X gerade. Der Wert opm(x) lässt sich mit dynamischer Programmierung berechnen als opm(x) = opm(x e). e E(G[X]) (Wie oben ist G[X] der von X induzierte Teilgraph von G und für e = {v, w} E ist X e := X {v, w}.) Offenbar gilt pm(v ) = opm(v )/( n 2!). Beobachtung. Es gibt ungefähr 2 n 1 Teilmengen gerader Mächtigkeit in G und die Berechnung eines der 2 n 1 Werte opm(x) umfasst eine Summe mit höchstens n 2 Summanden. = Die Gesamtlaufzeit der Berechnung von pm(v ) ist in O(n 2 2 n 1 ) O (2 n ). Ziel. Dynamische Programmierung verbessern. Nicht alle Werte opm(x) sind nötig. Definition 10. Sei G = (V, E) ein ungerichteter Graph mit V = {v 1,..., v n } und n = V gerade. Die Ordnung der Knoten aus V induziert eine eindeutige lexikographische Ordnung auf der Menge aller perfekten Matchings: Ordne Knoten einer Kante aufsteigend nach Index. Ordne Kanten des Matchings lexikographisch aufsteigend. Die resultierende Darstellung eines perfekten Matchings heisst lexikographisch geordnetes perfektes Matching. Beobachtung. Zu jedem perfekten Matching gibt es ein eindeutiges lexikographisch geordnetes perfektes Matching. Idee. Verbessere Laufzeit, indem nur lexikographisch geordnete perfekte Matchings gezählt werden. 8

Beobachtung. Sei G = (V, E) und sei (e 1,..., e n ) ein lexikographisch geordnetes perfektes Matching in G. Dann 2 gilt v 1 e 1, für alle j {2,..., n} enthält e 2 j e 1,..., e j 1 nicht vorkommt. den Knoten mit dem kleinsten Index, der in Idee. Definiere Klassen von relevanten Knotenmengen, die in der dynamischen Programmierung untersucht werden müssen: Für 1 j n 2 sei R 1 = {e E v 1 e}, R j = {Y e Y R j 1, e E, Y e =, min{v Y } e}, = R j enthält alle Knotenmengen, für die ein lexikographisch geordnetes perfektes Matching (e 1,..., e j ) existiert, sodass e j den Knoten mit dem kleinsten Index enthält, der in e 1,..., e j 1 nicht vorkommt. Ziel. Berechne die Anzahl lopm(x) = pm(x) lexikographisch geordneter perfekter Matchings für alle relevanten Knotenmengen X mit dynamischer Programmierung. Algorithmus DP-LOPM Eingabe: Ungerichteter Graph G = (V, E). R 1 = {e E v 1 e} for all X R 1, setze lopm(x) = 1 for j = 2 to n do 2 R j = {Y e Y R j 1, e E, Y e =, min{v Y } e}; for all X R j do lopm(x) := lopm(y ) Ausgabe: lopm(v ). X=Y e Y e= Y R j 1 min{v Y } e Anschaulich: Die Anzahl lexikographisch geordneter perfekter Matchings für X R j lässt sich zurückführen auf die entsprechenden Anzahlen für alle Mengen Y R j 1, die sich so durch Hinzunahme einer Kante e zu X erweitern lassen, dass e den nächstgrösseren Knoten (gemäss der Ordnung v 1,..., v n ) enthält. Um die Korrektheit von DP-LOPM abzuschätzen, benötigen wir das folgende Lemma. 9

Lemma 1. Sei F k die k-te Fibonacci-Zahl (F 1 = F 2 = 1, F i = F i 1 + F i 2 ). Dann gilt F n+1 = n 2 k=1 ( ) n k k für alle geraden n 2. Beweis. Wir bestimmen die Anzahl a n aller Wörter über {0, 1} der Länge n 1, die keine zwei aufeinanderfolgenden Nullen enthalten. Es gilt a 1 = 2 (Wörter 0 und 1), a 2 = 3 (Wörter 01, 10 und 11) und a n = a n 1 + a n 2 (alle Wörter, die mit 1 beginnen, danach alle zulässigen Wörter der Länge n 1, und alle Wörter, die mit 01 beginnen, danach alle zulässigen Wörter der Länge n 2). = a n = F n+2. Nun bestimmen wir a n auf eine alternative Weise, um damit eine Darstellung für F n+2 zu gewinnen. Wenn ein solches Wort der Länge n genau k Nullen enthält, gibt es n k Einsen und n k + 1 Stellen, an denen jeweils höchstens eine Null eingefügt werden kann. Dies sind ( ) n k + 1 k Möglichkeiten, also insgesamt ( ) n n k + 1 k=0 und somit ist und F n+2 = F n+1 = k ( ) n n k + 1 k=0 n 1 k=0 k ( ) n k. k Weil bei mehr als n Nullen zwei davon aufeinander folgen müssen, sind alle entsprechenden 2 Summanden 0, also gilt F n+1 = n 2 k=0 ( ) n k. k Theorem 5. Der Algorithmus DP-LOPM berechnet die Anzahl aller lexikographisch geordneten perfekten Matchings in Zeit O (1.6181 n ). 10

Beweis. Wir beweisen die Korrektheit und Laufzeitschranke wieder einzeln. 1. Korrektheit: Weil die Ordnung eines Matchings eindeutig ist, gilt pm(v ) = lopm(v ). 2. Laufzeit: In der j-ten Iteration sind R j Mengen X zu betrachten und für jede solche Menge müssen höchstens E Kanten e getestet werden. n ) 2 = Die Gesamtlaufzeit ist in O ( E R j. j=1 Nun schätzen wir noch R j ab. Jede Knotenmenge X enthält die Knoten v 1,..., v j und j weitere Knoten aus {v j+1,..., v n }. ( ) n j = R j. j Mit Lemma 1 gilt n n ( ) n ( ) 2 2 n j 2 n j R j = F n+1. j=1 j=1 j j=0 j Ferner ist E O(n 2 ). = Die Gesamtlaufzeit ist in O (F n+1 ). Nach der Formel von Moivre ist F n+1 = ϕ n+1 5 O(ϕ n ), wobei ϕ = 1+ 5 2 1.6181 das Verhältnis des goldenen Schnittes ist. 3. Methode: Inklusion-Exklusion-Prinzip Idee. Zähle Objekte (z. B. Graphen), die eine bestimmte Eigenschaft haben. Beispiel 7. Sei S eine Menge mit N = S, seien A, B Eigenschaften von Elementen in S, jedes Element kann keine, eine oder beide Eigenschaften haben. Sei Z die Anzahl der Elemente ohne A und ohne B, N A die Anzahl der Elemente mit A, N B die Anzahl der Elemente mit B und N A B die Anzahl der Elemente mit A und B. Dann gilt Z = N (N A + N B ) + N A B. 11

N A A B B Z Verallgemeinerung. Inklusion-Exklusion-Prinzip. Theorem 6. Gegeben sei eine Kollektion von N kombinatorischen Objekten und n Eigenschaften P 1,..., P n, so dass jedes Objekt eine Teilmenge dieser Eigenschaften hat. Für W {1,..., n} sei N(W ) die Anzahl Objekte, die die Eigenschaften P i haben für alle i W. Sei Z die Anzahl Objekte, die keine der Eigenschaften P 1,..., P n haben. Dann gilt Z = N + ( 1) W N(W ). W {1,...,n} W Beweis-Idee. Es gilt für n = 3: Z = N }{{} alle Objekte N({1}) N({2}) }{{}}{{} Objekte mit P 1 Objekte mit P 2 N({3}) }{{} Objekte mit P 3 + N({1, 2}) + N({1, 3}) + N({2, 3}) N({1, 2, 3}) = N N(W ) + N(W ) N(W ) W {1,2,3} W =1 = N W {1,2,3} W W {1,2,3} W =2 ( 1) W N(W ). W {1,2,3} W =3 Die Erweiterung auf beliebige n ist einfach. Theorem 7 (Umformulierung von Theorem 6). Gegeben sei eine Kollektion von N Objekten und n Eigenschaften Q 1,..., Q n, so dass jedes Objekt eine Teilmenge dieser Eigenschaften hat. Für W {1,..., n} sei N(W ) die Anzahl Objekte, die die Eigenschaften Q i nicht haben für alle i W. Sei X die Anzahl Objekte, die alle Eigenschaften Q 1,..., Q n haben. Dann gilt X = N + ( 1) W N(W ). W {1,...,n} W 12

Beweis. Folgt sofort aus Theorem 6 für Eigenschaften P i, so dass ein Objekt die Eigenschaft P i genau dann hat, wenn es Q i nicht hat. Ziel. Inklusion-Exklusion verwenden, um einen besseren Algorithmus für Coloring zu entwerfen. Hierfür: Betrachte das Set-Cover-Problem. Definition 11. Das Set-Cover-Problem (SetCover) ist das folgende Entscheidungsproblem: Gegeben eine Menge U mit n Elementen, eine Familie S von Teilmengen von U und ein k N, entscheide, ob es eine Teilmenge C = {C 1,..., C k } S gibt mit C C C = U und k k. Eine solche Teilmenge C nennen wir ein k -Set-Cover. Im Folgenden wollen wir das Inklusion-Exklusion-Prinzip verwenden, um alle k-set-cover einer gegebenen Instanz (U, S, k) abzuschätzen. Definition 12. Sei (U, S, k) eine Set-Cover-Instanz. Sei c k die Anzahl geordneter k-set- Cover mit Wiederholungen (C 1,..., C k ) für (U, S, k), wobei C i = C j für i j erlaubt ist. Für W U sei S[W ] = {X S X W = }, sei s[w ] = S[W ]. Lemma 2. Die Anzahl geordneter k-set-cover mit Wiederholungen für eine Set-Cover- Instanz (U, S, k) ist c k = S k + ( 1) W s[w ] k. W U W Beweis. Wir verwenden die Umformulierung des Inklusion-Exklusion-Theorems, also Theorem 7. Hierfür definieren wir die Objekte und die Eigenschaften wie folgt: Die Objekte seien alle k-tupel (S 1,..., S k ) mit S i S. Man beachte, dass die S i in einem solchen Tupel nicht verschieden sein müssen. Also gibt es N = S k viele solche Objekte. Für jedes u U sagen wir, dass (S 1,..., S k ) die Eigenschaft Q(u) hat, falls u k i=1 S i gilt. Jedes Objekt, das alle Eigenschaften Q(u) hat für alle u U, ist ein geordneter k-set-cover mit Wiederholungen und umgekehrt. Die Anzahl N(W ) der Objekte, die die Eigenschaft Q(u) nicht haben für alle u W lässt sich berechnen als N(W ) = s[w ] k : Jede Menge S i S in einem solchen Objekt lässt sich frei wählen aus der Menge S[W ] aller X S, die W vermeiden. Damit folgt aus Theorem 7, dass c k = N + ( 1) W N(W ) = S k + ( 1) W s[w ] k. W U W U W W Beobachtung. Eine SetCover-Instanz (U, S, k) besitzt ein Set-Cover der Grösse k genau dann, wenn sie ein geordnetes k-set-cover mit Wiederholungen besitzt, wenn also c k > 0 gilt. 13

Theorem 8. Sei (U, S, k) eine SetCover-Instanz mit U = n. Die Anzahl geordneter k-set-cover mit Wiederholungen c k lässt sich in Zeit O (2 n ) bestimmen. Beweis. Zeige, dass sich die Werte s[w ] für alle W U in Zeit O (2 n ) berechnen lassen. Damit lässt sich dann offenbar auch die Formel aus Lemma 2 in Zeit O (2 n ) auswerten. Sei für alle X U die charakteristische Funktion f(x) definiert durch 1, falls X S, f(x) = 0, sonst. Dann gilt s[w ] = X U W f(x). (Jede Menge X S, die W vermeidet, trägt 1 zu der Summe bei.) Wir bestimmen s[w ] jetzt mit Hilfe dynamischer Programmierung. Sei U = {u 1,..., u n }. Für i {0, 1,..., n} und W U sei g i (W ) die Anzahl von Mengen in S, die W vermeiden und alle Elemente aus {u i+1,..., u n } W enthalten, d. h. g i (W ) = f(s). Für i = 0 gilt also g 0 (W ) = {u i+1,...,u n} W S S U W U W S U W f(s) = S=U W f(s) = f(u W ). = Mit einem Durchlauf durch S lassen sich alle Werte g 0 (W ) für alle W U in Zeit O(2 n ) bestimmen. Weiterhin können wir aus g n (W ) = f(s) = f(s) = s[w ] S U W S U W die Werte s[w ] ablesen. Es bleibt zu zeigen, wie sich g i (W ) aus den bereits berechneten g i 1 -Werten ableiten lässt. Wir unterscheiden zwei Fälle. Falls u i W ist, dann gilt {u i,..., u n } W = {u i+1,..., u n } W, also ist g i (W ) = {u i+1,...,u n} W S U W f(s) = {u i,...,u n} W S U W f(s) = g i 1 (W ). Falls u i / W, dann zählt g i 1 (W ) alle Mengen von g i (W ), die u i enthalten, und g i 1 (W {u i }) zählt alle Mengen aus g i (W ), die u i nicht enthalten. Also gilt: g i (W ) = g i 1 (W ) + g i 1 (W {u i }). In jedem der beiden Fälle lässt sich g i (W ) mit konstantem Aufwand berechnen, es ergibt sich also eine Gesamtlaufzeit in O(n 2 n ) O (2 n ). 14

Anwendung für Coloring Beobachtung. Sei G = (V, E) ein ungerichteter Graph, sei S Pot(V ) die Menge aller IS von G. Betrachte die SetCover-Instanz (V, S, k). Dann hat (V, S, k) ein k-set-cover genau dann, wenn G k-färbbar ist. Beweis. Wir zeigen die Äquivalenz durch zwei Implikationen. = : Sei {C 1,..., C k } ein k-set-cover von (V, S, k). Da jede Teilmenge eines IS wieder ein IS ist, gibt es dann auch ein k-set-cover (C 1,..., C k), so dass die C i paarweise disjunkt sind. = c: V {1,..., k}: c(u) = i u C i ist eine k-färbung von G. = : Sei c eine k-färbung von G. Die Farbklassen von c sind IS von G, also gibt es k IS, die V überdecken. Algorithmus IE-COLORING Eingabe: Graph G = (V, E) mit V = n. 1. Schritt: Konstruiere ein Tupel (V, S), wobei S die Menge aller IS von G sei. 2. Schritt: k := 1 while k < n do Berechne Anzahl geordneter k-set-cover mit Wiederholungen c k für (V, S, k) if c k > 0, then return χ(g) = k, else k := k + 1 Theorem 9. Der Algorithmus IE-COLORING löst Coloring in Zeit O (2 n ). Beweis. Wir beweisen die Korrektheit und Laufzeitschranke wieder einzeln. 1. Korrektheit: Folgt unmittelbar aus den Beobachtungen oben. 2. Laufzeit: Da es maximal 2 n IS in G gibt, ist Schritt 1 in Zeit O(2 n ) durchführbar, Schritt 2 läuft nach Theorem 8 in O (n 2 n ) O (2 n ). Beobachtung. Der Algorithmus zur Bestimmung der geordneten k-set-cover und der Algorithmus IE-COLORING brauchen exponentiellen Platz zur Berechnung der s[w ]. Ziel. Polynomielle Platzkomplexität für für Bestimmung geordneter k-set-cover. Theorem 10. Sei (U, S, k) eine SetCover-Instanz mit U = n, und sei S = {S 1,..., S l } in polynomiellem Platz und polynomieller Zeit aufzählbar, d. h. es existiert ein Polynom p, so dass S i+1 aus S i in Zeit und Platz p(n) berechenbar ist. Dann lässt sich die Anzahl der geordneten k-set-cover von (U, S, k) in polynomiellem Platz und in Zeit 2 n S p(n) berechnen. Beweis-Idee. Für jede Teilmenge W U separat über alle X S iterieren, um s[w ] zu berechnen, Wert s[w ] auf laufende Summe aufaddieren. 15

Literaturhinweise Dieses Kapitel der Vorlesung basiert im Wesentlichen auf folgendem Buch. Fedor Fomin, Dieter Kratsch: Exact Exponential Algorithms, Springer 2010. 16