Algorithmen und Datenstrukturen“ ¨Ubungsblatt 9, SS

Werbung
TU Ilmenau, Fakultät IA
Institut TI, FG Komplexitätstheorie und Effiziente Algorithmen
Univ.-Prof. Dr. Martin Dietzfelbinger
Dipl.-Ing. Christopher Mattern
http://www.tu-ilmenau.de/iti/lehre/lehre-ss-2013/aud/
Algorithmen und Datenstrukturen“
”
Übungsblatt 9, SS 2013
Besprechung: 24. Kalenderwoche
Aufgabe 1 (AVL-Bäume, identisch zu Aufgabe 2 von Blatt 8, bitte durch Aufgabe 5 ersetzen!)
Gegeben ist die Folge
1 12 2 5 4 8 6 11 3 13 10 7 9 14 15 16
von 16 Schlüsseln.
(a) Fügen Sie die Schlüssel nacheinander in einen (anfangs leeren) AVL-Baum ein und zeichnen
Sie den Baum vor und nach jeder Rotation!
(b) Finden Sie eine Einfügereihenfolge der Schlüssel, die den gleichen Baum wie in (a) ohne
Rotationen erzeugt!
(c) Löschen Sie die Schlüssel 1, 12, 16, 7 und 6 und zeichnen Sie den Baum vor und nach jeder
Rotation!
Aufgabe 2 (Rot-Schwarz-Bäume)
Ein (linksgeneigter) Rot-Schwarz-Baum ist ein binärer Suchbaum, in dem jede Kante mit der
Farbe rot oder schwarz eingefärbt ist, wobei folgende Regeln eingehalten werden:
1. Kanten zu (leeren!) Blättern sind schwarz.
2. Auf keinem Weg im Baum folgen zwei rote Kanten aufeinander.
3. Wenn ein Knoten nur eine rote Ausgangskante hat, so führt diese zum linken Kind.
4. Auf jedem Weg von der Wurzel zu einem Blatt liegen gleich viele schwarze Kanten.
Die Schwarz-Tiefe b(v) eines Knotens v in einem Rot-Schwarz-Baum T ist die Anzahl der
schwarzen Kanten auf dem Weg von v zu einem Blatt; die Schwarz-Tiefe b(T ) des Baumes T ist
die Schwarz-Tiefe der Wurzel von T . Zeigen Sie:
(a) Ein Rot-Schwarz-Baum T mit Schwarz-Tiefe b(T ) hat mindestens 2b(T ) − 1 innere Knoten.
(b) Die Tiefe d(T ) eines Rot-Schwarz-Baums T mit n inneren Knoten ist O(log n).
Aufgabe 3 (Codierungsbäume)
Ein Präfixcode zur Darstellung von Zeichen aus einem endlichen Alphabet Σ, |Σ| > 1, sei als
binärer Codierungsbaum T gegeben. Jedes Blatt von T ist umkehrbar eindeutig mit einem
Zeichen x aus Σ markiert. Alle Kanten zu einem linken Kind sind mit 0 markiert und alle Kanten
zu einem rechten Kind sind mit 1 markiert.
• Das Codewort code(x) zum Zeichen x erhält man, indem man die Kantenmarkierungen
des Weges von der Wurzel zum Blatt mit Zeichen x hintereinander reiht.
• Die Länge len(x) des Codewortes von x entspricht der Länge des Weges von der Wurzel
zum Blatt mit Zeichen x, also der Tiefe dieses Blattes.
2
Algorithmen und Datenstrukturen“
”
Übungsblatt 9, SS 2013
Beispiel: Σ = {A, B, C}, code(B) = 10, len(B) = 2
T :
0
1
A
0
B
1
C
(a) Geben Sie einen Algorithmus in Pseudocode an, der auf Eingabe T und Σ für jedes Zeichen
x ∈ Σ das Codewort code(x) und die Länge des Codewortes len(x) berechnet und jeweils
in den Arrays C[1..|Σ|] und L[1..|Σ|] speichert!
(b) Geben Sie einen Algorithmus in Pseudocode zum Dekodieren an! Die kodierte Zeichenkette
ist in einem Array A[1..n] gegeben (jede Zelle speichert ein Bit).
(c) Welche Laufzeiten in Θ-Notation haben die Algorithmen aus den Aufgaben (a) und (b)?
Aufgabe 4 (Einfügen in 2-3-Bäume)
Fügen Sie die folgende Sequenz von Schlüsseln in einen anfangs leeren 2-3-Baum T ein und
zeichnen Sie T vor und nach jeder Reparaturoperation!
1 12 2 5 4 8 6 11 3 13 10 7 9 14 15 16
Aufgabe 5 (Tiefe von 2-3-Bäumen, später hinzugefügt!)
Zeigen Sie, dass folgende Aussagen für einen 2-3-Baum T der Tiefe h (Level 0, 1, . . . , h) gelten:
(a) T besitzt mindestens 2h+1 − 1 Knoten und mindestens 2h+1 − 1 Schlüssel.
(b) T besitzt höchstens
3h+1 −1
2
Knoten und höchstens 3h+1 − 1 Schlüssel.
(c) Welche Aussagen über die Tiefe h im Zusammenhang mit der Knotenanzahl n können Sie
ableiten?
Herunterladen