Volker Diekert, Lukas Fleischer Sommersemester 2016 Algorithmik Aufgabenblatt 5 Abgabe: bis Do. 16.06. 13:00 Uhr in den Abgabekästen im Mittelgang des 1. Stocks. Besprechung: 20.06.2016 – 01.07.2016 1. Äquivalenz endlicher Automaten (5 Punkte) Eine Anwendung der Union-Find-Mengenverwaltung ist der Test zur Äquivalenz von deterministischen endlichen Automaten. a) Führen Sie den Algorithmus aus der Vorlesung auf den beiden folgenden Automaten A und A0 aus. Geben Sie für jede Iteration die Menge L sowie die aktuelle Partition der Zustände an. A: a 1 a b A0 : 2 a b 4 a 6 a, b a b a b b 3 5 7 b a, b 8 b) Wie kann der Algorithmus erweitert werden, sodass im Falle der Inäquivalenz auch ein „Zeuge“ ausgegeben wird, d.h. ein Wort, das von einem der Automaten akzeptiert wird, von dem anderen Automaten jedoch nicht. 2. Fibonacci-Heaps (5 Punkte) Führen Sie die folgende Sequenz von Operationen auf einem (zu Beginn leeren) Fibonacci-Heap aus. 1) insert(i) für i ∈ {0, . . . , 16}, 4) decrease_key(14, 14), 2) delete_min, 5) decrease_key(15, 15), 3) decrease_key(10, 10), 6) delete_min. Der Schlüsselwert eines Knotens i ∈ {0, . . . , 16} sei hierbei i. Bei einer Operation decrease_key(i, i) sollen i und gegebenenfalls weitere markierte Knoten, wie in den Vorlesungsfolien beschrieben, von ihrem jeweiligen Elternknoten abgetrennt werden; der Schlüsselwert von i bleibt jedoch unverändert. Bei der Entnahme zweier Bäume aus einer der Listen L[i] während einer delete_min-Operation sollen stets die beiden Bäume mit den kleinsten Wurzelknoten gewählt werden. Zeichnen Sie den aktuellen Fibonacci-Heap nach jedem der Schritte 1) bis 6) und heben Sie Knoten mit Marken farblich hervor. 3. Die Höhe von Fibonacci-Heaps (5 Punkte) Finden Sie eine obere Schranke für die Höhe eines Fibonacci-Heaps mit n Knoten, der durch eine beliebige Folge von Operationen aus dem leeren Heap erzeugt wurde. 4. Analyse der Union-Find-Datenstruktur Verbessern Sie die Analyse der Union-Find-Datenstruktur aus der Vorlesung und zeigen Sie, dass eine Sequenz von m Union-Find-Operationen auf einer Partition mit n Elementen maximal (α(n) + 1)m + O(α(n)n) Zeitschritte benötigt. Die Anzahl der Zeitschritte einer Operation Find(x) sei dabei die Anzahl der Knoten auf dem Weg von x bis zur Wurzel. 5. Verfeinerung einer Partition Die Union-Find-Datenstruktur kann dazu verwendet werden, eine Partition von Elementen zu verwalten. Dabei wird üblicherweise mit einelementigen Klassen gestartet und es gibt eine Operation, die zwei Klassen zu einer neuen Klasse vereinigt. Nun soll eine Datenstruktur entworfen werden, die in gewissem Sinne komplementär hierzu ist. Ohne Einschränkung betrachten wir nur Partitionen der Zahlen {1, . . . , n}. Gestartet wird mit einer Partition, die aus einer Klasse P1 = {1, . . . , n} besteht. Die Operation Split(X) soll auf Eingabe einer Menge X ⊆ {1, . . . , n} die aktuelle Partition P durch P 0 = { P ∩ X, P \ X | P ∈ P } \ {∅} ersetzen. Die Operation Find(i) soll auf Eingabe einer Zahl i ∈ {1, . . . , n} das kleinste Element aus der Klasse von i zurückgeben und Enum(i) soll alle Elemente aus der Klasse von i zurückgeben. Beschreiben Sie eine mögliche Implementierung einer solchen Datenstruktur, deren Platzbedarf linear in n ist. Zudem soll die Laufzeit der Operation Split(X) linear in |X|, die Laufzeit von Find(i) konstant, und die Laufzeit von Enum(i) linear in der Ausgabegröße sein. 6. Minimale Schnitte Beweisen oder widerlegen Sie: Es gibt einen Graphen mit drei Knoten und ganzzahligen Kantengewichten, auf dem der Stoer-Wagner-Algorithmus zur Berechnung eines minimalen Schnitts nicht korrekt arbeitet. Hinweis: In der Vorlesung wurde ein entsprechendes Beispiel mit vier Knoten angegeben.