Globalübungsaufgabe1 (Quicksort): Lösung

Werbung
Datenstrukturen und Algorithmen SS17
Tutoriumslösung - Übung 4 (Abgabe 24.05.2017)
Prof.aa
Dr. Ir. G. Woeginger
T. Hartmann, D. Korzeniewski, B. Tauer
Globalübungsaufgabe1 (Quicksort):
Sortieren Sie das folgende Array mithilfe von Quicksort aus der Vorlesung. Geben Sie dazu das Array nach
jeder Partition-Operation an.
3
7
9
1
2
4
8
6
Lösung:
Die jeweils verwendeten Pivot-Elemente sind grau unterlegt.
3
7
9
1
2
4
8
6
3
4
2
1
6
7
8
9
1
4
2
3
6
7
8
9
1
2
3
4
6
7
8
9
1
2
3
4
6
7
8
9
1
2
3
4
6
7
8
9
Globalübungsaufgabe2 (Varianten von Quicksort):
Geben Sie eine randomisierte Variante von Quicksort an, die vermeidet, dass Eingaben bestimmter Form (wie
beispielsweise fast sortierte Eingaben bei der klassischen Variante) nicht mehr grundsätzlich schlechte Laufzeit
haben.
Lösung:
Wählt man den Pivot jedes mal zufällig und gleichverteilt, so ist die Wahrscheinlichkeit einen schlechten Pivot
zu wählen für alle Eingaben gleich. Somit gibt es keine bestimmte Form von Eingaben, für die der Algorithmus
schlechte Laufzeit hat. Die erwartete Laufzeit ist sogar in diesem Fall gleich der Average Case Laufzeit beim
deterministischen Quicksort.
Globalübungsaufgabe3 (Elementare Datenstrukturen):
Beschreiben Sie informell, wie eine Queue mittels zwei Stacks implementiert werden kann.
Lösung:
Seien s1 und s2 die beiden Stacks.
Beim enqueue werden Elemente grundsätzlich in s1 abgelegt.
Beim dequeue werden zunächst alle Elemente von s1 nach s2 verschoben. Das zuerst in s1 eingefügte Element
ist nun das oberste in s2 . Nun wird pop auf s2 aufgerufen und das Element zurückgegeben. Anschließend
werden alle Elemente nach s1 zurück verschoben.
Die Operation isEmpty entspricht isEmpty auf s1 .
1
Datenstrukturen und Algorithmen SS17
Tutoriumslösung - Übung 4 (Abgabe 24.05.2017)
Globalübungsaufgabe4 (Fakten über binäre Bäume):
a) Beweisen Sie das folgende Lemma aus der Vorlesung:
Ebene d in einem Binärbaum enthält höchstens 2d Knoten.
b) Sei h ∈ N. Bestimmen Sie die maximale Anzahl von Blättern in einem Binärbaum der Höhe h.
Lösung:
a) Beweis durch vollständige Induktion.
Induktionsanfang: d = 0
Die 0. Ebene enthält höchstens einen Knoten, die Wurze. Es gilt 1 = 20 = 2d .
Induktionsvoraussetzung: Es gelte die Behauptung für ein beliebiges, aber festes d ∈ N0 .
Induktionsschritt: d
d+1
Da wir die maximale Anzahl von Knoten in Ebene d + 1 haben wollen, gehen wir davon aus, dass Ebene
d maximal besetzt ist und somit 2d Knoten enthält. Jeder dieser Knoten hat, sofern Ebene d + 1 maximal
besetzt ist, zwei Nachfolger. Somit enthält Ebene d + 1 höchstens 2 · 2d = 2d+1 Knoten.
Nach dem Prinzip der vollständigen Induktion gilt die Behauptung somit für alle d ∈ N0
b) Ein voll besetzter Binärbaum der Höhe h hat genau die Knoten auf der Ebene h als Blätter. Dies sind
2h viele Knoten.
Jeder Binärbaum der Höhe h kann durch wiederholtes Löschen von Blättern konstruiert werden. Wird
ein Blatt gelöscht, dessen Elternknoten zwei Kinder hat, dann verringert sich die Anzahl der Blätter im
Baum um 1. Wird ein Blatt gelöscht, dessen Elternknoten nur ein Kind hat, dann bleibt die Anzahl der
Blätter gleich, da der Elternknoten zu einem Blatt wird.
Ein Binärbaum der Höhe h hat also maximal so viele Blätter wie ein voll besetzter Baum der Höhe h.
Daher hat ein Binärbaum der Höhe maximal h maximal 2h viele Blätter.
2
Herunterladen