Algorithmik Aufgabenblatt 5

Werbung
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.
Herunterladen