Klausur Algorithmen und Datenstrukturen SS 2016

Werbung
Rev. 5:1, 12.07.2016
TU Ilmenau, Institut für Theoretische Informatik
Univ.-Prof. Dr. Martin Dietzfelbinger
Klausur Algorithmen und Datenstrukturen SS 2016
18. Juli 2016
Arbeitszeit: 150 Minuten
Hinweise
(1) Nicht mit Bleistift oder Rotstift schreiben!
(2) Es sind keine Hilfsmittel, insbesondere keine Taschenrechner und keine Mobiltelefone, zugelassen.
(3) Tragen Sie auf jedem zusätzlichen Blatt Ihren Namen und Vornamen, Ihre Studiennummer und Ihr Matrikel ein.
(4) Heften Sie bei Abgabe die Blätter zusammen.
Aufgabe
1 2 3 4 5 6 7 8 9 10 Bonus Gesamt Note
Punkte maximal 35 8 13 12 12 10 21 10 15 14
20
150 + 20
Punkte erreicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
...
...
...
Bei Prüfungsbeginn ausfüllen:
Vorname, Name
Zusätzlich wurden
Bei Einsichtnahme ausfüllen:
Studiennr., Matrikel
Datum, Unterschrift
eigene Blätter abgegeben.
Aufgabe 1 (Vermischte Themen)
[35 Punkte]
Füllen Sie folgende Lückentexte aus. Sofern keine abweichende Regelung angegeben ist, erhalten Sie
auf jeden richtigen Eintrag 1 Punkt und auf jeden falschen oder ausgelassenen Eintrag 0 Punkte. Geben
Sie bei O-Notation möglichst scharfe (einfache) Schranken an!
(a) O-Notation
(5 Punkte)
• Für f , g ∈ F + bedeutet f ∈ Ω(g), dass positive Konstanten n0 und c existieren, so dass für alle
. . . . . . . . . . . . . . . . . gilt: . . . . . . . . . . . . . . . . . .
• Gilt f (n) = O(g(n)) und g(n) = O( f (n)), dann folgt f (n) = . . . . . . . . . . . . . . . . . .
• Für die Funktion f (n) = ∑1≤i≤n ik gilt f (n) = O( . . . . . . . . . . . . . . . . . ).
f (n)
n→∞ g(n)
• Gilt lim
= c, für c ≥ 0, dann folgt f (n) = . . . . . . . . . . . . . . . . . .
2
Klausur Algorithmen und Datenstrukturen SS 2016
(b) 2-3-Bäume
(5 Punkte)
• Für die Anzahl m der Einträge eines Knotens in einem 2-3-Baum gilt m ∈ { . . . . . . . . . . . . . . . . . }.
• Alle Blätter in einem 2-3-Baum liegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
• Hat ein Knoten in einem 2-3-Baum einen leeren Unterbaum, so ist dieser Knoten
................................................
• Ein 2-3-Baum der Tiefe d hat mindestens . . . . . . . . . . . . . . . . . und höchstens . . . . . . . . . . . . . . . . .
Einträge.
(c) Stacks bei Arrayimplementierung mit Verdoppelungsstrategie
(5 Punkte)
• Die Operationen pop und top des abstrakten Datentyps Stack (mit den Sorten Stacks und Elements)
haben folgende Signatur:
pop: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
top: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
• Die Verdoppelung eines Stacks mit n Elementen kostet Zeit Θ( . . . . . . . . ).
• Eine empty-Operation gefolgt von n push-Operationen kostet Zeit O( . . . . . . . . ).
• In einer Folge von Operationen, bestehend aus einer empty-Operation gefolgt von n beliebigen
Operationen, kostet eine einzelne Operation im schlechtesten Fall Zeit O( . . . . . . . . ).
(d) Sortierverfahren
(5 Punkte)
• Sortiert man mit randomisiertem QuickSort n (paarweise) verschiedene Schlüssel, so ist die maximale Laufzeit Θ( . . . . . . . . ).
• Sortiert man n (paarweise) verschiedene Schlüssel mit einem vergleichsbasierten Sortierverfahren, so ist die Anzahl an Schlüsselvergleichen im schlechtesten Fall Ω( . . . . . . . . ).
• Zum Sortieren von n Schlüsseln aus {1, 2, . . . , m} benötigt CountingSort Zeit O( . . . . . . . . ).
• Eine platzsparende MergeSort-Implementierung für das Sortieren von verketteten Listen benötigt
zum Sortieren von n Schlüsseln O( . . . . . . . . ) zusätzlichen Speicher (neben dem Speicher für
die Rekursion).
• Zum Sortieren von n Schlüsseln benötigt HeapSort O( . . . . . . . . ) zusätzlichen Speicher.
(e) Divide-and-Conquer-Algorithmen
(5 Punkte)
• Der Algorithmus von Karatsuba multipliziert zwei n-Bit-Zahlen in Zeit O( . . . . . . . . ).
• Der Algorithmus von Strassen führt bei der Multiplikation von zwei (n × n)-Matrizen rekursiv
. . . . . . . . Multiplikationen von Matrizen der Größe . . . . . . . . . . . . . . . . . durch.
• Für n = 2k mit k ≥ 1 führt ein Aufruf FFT((a0 , . . . , an−1 ), ω) zu den beiden rekursiven Aufrufen
FFT( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . ) und
FFT( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . ).
Klausur Algorithmen und Datenstrukturen SS 2016
(f) Bestimmung kürzester Wege
3
(5 Punkte)
Hinweis: Graphen in dieser Aufgabe sind gerichtet und habe Kantengewichte. Die Anzahl der Knoten ist n, die Anzahl der Kanten ist m.
• Der Algorithmus von Dijkstra löst das SSSP-Problem in Zeit O( . . . . . . . . ), falls alle Kantengewichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . sind.
• Der Algorithmus von Dijkstra benutzt eine Priority Queue. In jeder Runde wird mittels einer
. . . . . . . . . . . . . . . . . Operation ein Knoten u ermittelt dessen ausgehende Kanten dann betrachtet
werden.
Für einen Knoten w mit (u, w) ∈ E wird nun eine . . . . . . . . . . . . . . . . . Operation ausgeführt falls
w neu ist. Falls w vorher schon entdeckt wurde, wird stattdessen evtl. eine . . . . . . . . . . . . . . . . .
Operation ausgeführt.
(g) Laufzeiten von Implementierungen der Union-Find-Datenstruktur
(5 Punkte)
Im Folgenden soll eine Partition der Menge {1, . . . , n} verwaltet werden.
• Bei der Implementierung einer Union-Find-Datenstruktur mit Arrays kostet eine find-Operation
Zeit O( . . . . . . . . . . . ) und n − 1 union-Operationen kosten zusammen Zeit O( . . . . . . . . . . . ).
• Bei der Implementierung einer Union-Find-Datenstruktur mittels wurzelgerichteter Bäume und
union-by-rank kostet eine find-Operation Zeit O( . . . . . . . . . . . ) und n − 1 union-Operationen
kosten zusammen Zeit O( . . . . . . . . . . . ).
• Bei der Implementierung einer Union-Find-Datenstruktur mittels wurzelgerichteter Bäume, unionby-rank und und Pfadkompression kosten m find-Operationen Zeit O( . . . . . . . . . . . . . . . . . ).
4
Klausur Algorithmen und Datenstrukturen SS 2016
Aufgabe 2 (Weglängen in binären Bäumen)
[8 Punkte]
Sei T ein binärer Baum, V die Menge innerer Knoten, n die Anzahl innerer Knoten, L die Menge äußerer
Knoten und d(v) die Tiefe eines Knotens v.
(a) Definieren Sie die totale innere Weglänge TIPL(T ) und die totale äußere Weglänge TEPL(T )!
(2 Punkte)
TIPL(T )
:=
.......................................................................
TEPL(T )
:=
.......................................................................
(b) Zeigen Sie, dass TEPL(T ) = TIPL(T ) + 2n gilt! (Hinweis: Benutzen Sie z. B. Induktion über n.)
(6 Punkte)
Klausur Algorithmen und Datenstrukturen SS 2016
5
Aufgabe 3 (Deques)
[13 Punkte]
Im Folgenden wird der Datentyp Deque über D“ mit den Sorten Boolean, Elements und Deques und
”
den Operationen empty, isEmpty, pushFront, pushBack, popFront, popBack, first und last betrachtet.
(a) Geben Sie die Signatur für alle Operationen an!
(5 Punkte)
empty:
..........................................
→
.......................
isEmpty:
..........................................
→
.......................
pushFront,
pushBack:
..........................................
→
.......................
popFront,
popBack:
..........................................
→
.......................
first,
last:
..........................................
→
.......................
(b) Geben Sie das mathematische Modell für alle Sorten und die Operationen empty, isEmpty, first,
pushFront und popFront an!
(8 Punkte)
Sorten:
Boolean = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Elements = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Deques = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operationen:
isEmpty( . . . . . . . . . . . . . . . . . . . . . . . ) = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
pushFront( . . . . . . . . . . . . . . . . . . . . . . . ) = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
popFront( . . . . . . . . . . . . . . . . . . . . . . . ) = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
first( . . . . . . . . . . . . . . . . . . . . . . . ) = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
empty( . . . . . . . . . . . . . . . . . . . . . . . ) = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
Klausur Algorithmen und Datenstrukturen SS 2016
Aufgabe 4 (AVL-Bäume)
[12 Punkte]
Der folgende AVL-Baum T mit Schlüsseln aus U = N sei gegeben (der Datenteil aus R wird hier der
Einfachheit halber ignoriert):
T:
6
13
2
1
8
4
3
5
7
14
10
15
11
(a) Sei d(T ) die Tiefe eines Baums T und v ein Knoten mit linkem Unterbaum Tl und rechtem Unterbaum Tr . Wie ist der Balancefaktor bal(v) definiert? Welche Bedingung erfüllen die Balancefaktoren
in einem AVL-Baum?
(2 Punkte)
Definition:
bal(v) := . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bedingung:
......................................................................
(b) Fügen Sie mit dem Algorithmus der Vorlesung in dem gegebenen Baum T den Schlüssel 12 ein und
fügen Sie anschließend in dem entstandenen Baum den Schlüssel 9 ein! Zeichnen Sie den Baum
nach jeder Einfach- oder Doppelrotation und benennen Sie die Art der Rotation (Links-, Rechts-,
Links-Rechts- oder Rechts-Links-Rotation)! (Hinweis: Ggf. genügt es, den sich verändernden Teilbaum zu zeichnen.)
(5 Punkte)
Weiter auf nächster Seite!
Klausur Algorithmen und Datenstrukturen SS 2016
T:
7
6
13
2
1
8
4
3
5
7
14
10
15
11
(c) Löschen Sie mit dem AVL-Löschverfahren der Vorlesung in dem gegebenen Baum T den Schlüssel
3 und löschen Sie anschließend in dem entstandenen Baum den Schlüssel 1! Zeichnen Sie den Baum
nach jeder Einfach- oder Doppelrotation und benennen Sie die Art der Rotation (Links-, Rechts-,
Links-Rechts- oder Rechts-Links-Rotation)! (Hinweis: Ggf. genügt es, den sich verändernden Teilbaum zu zeichnen.)
(5 Punkte)
8
Klausur Algorithmen und Datenstrukturen SS 2016
Aufgabe 5 (Hashing)
[12 Punkte]
Im Folgenden werden eine Hashtabelle T[0..m − 1] und n Schlüssel betrachtet.
(a) Gegeben seien die Schlüssel A, B, . . . , H, eine Hashtabelle der Größe m = 11 und die Hashfunktionen h1 und h2 :
x
h1 (x)
1 + h2 (x)
A
5
8
B
1
1
C
0
3
D
7
9
E
1
4
F
7
2
G
5
4
H
0
6
Fügen Sie die Schlüssel in der Reihenfolge A, B, . . . , H unter Verwendung von Doppel-Hashing
mit h(x, k) = (h1 (x) + k · (1 + h2 (x))) mod m in die Hashtabelle ein. Geben Sie jeweils die beim
Einfügen sondierten Tabellenpositionen h(x, k) für k = 0, 1, 2, . . . an.
(8 Punkte)
Hashtabelle:
Sondierungsfolgen:
i
T[i]
x
h(x, k) für k = 0, 1, 2, . . .
0
........
A
...................................
1
........
B
...................................
2
........
C
...................................
3
........
D
...................................
4
........
E
...................................
5
........
F
...................................
6
........
G
...................................
7
........
H
...................................
8
........
9
........
10
........
(b) Sei g(x) der Hashwert des Schlüssels x. Definieren Sie den Ausdruck h(x, k) für die Sondierungsfolgen bei linearem Sondieren (LS) und quadratischem Sondieren (QS)! Welche Bedingungen sind
jeweils an die Tabellengröße m zu stellen, damit die Sondierungsfolgen (für jeden Schlüssel) alle
Tabellenplätze erreichen?
(4 Punkte)
Ausdruck für h(x, k) mit k ≥ 0
Bedingung für m
LS
............................................
keine
QS
............................................
................................
Name
Klausur Algorithmen und Datenstrukturen SS 2016
Aufgabe 6 (HeapSort)
9
[10 Punkte]
(a) Definieren Sie: H[1..n] ist ein Min-Heap.“ (Hinweis: Ihre Definition sollte sich auf das Array H
”
beziehen.)
(3 Punkte)
Weiter auf nächster Seite!
10
Klausur Algorithmen und Datenstrukturen SS 2016
(b) Gegeben ist folgendes Array A[1..8] mit Einträgen aus N (ein Eintrag entspricht einem Schlüssel):
A:
15 12 3
24 1
42 8
10
Führen Sie MakeHeap und anschließend zwei Runden von HeapSelect mit einem Min-Heap auf A
aus. Zeichnen Sie jeweils den linksvollständigen Binärbaum nach jeder Reparatur eines Teilheaps
(nach der vollständigen Ausführung von BubbleDown, falls diese eine Änderung bewirkt hat)! Zeichnen Sie das nach zwei HeapSelect-Runden entstehende Array!
(7 Punkte)
Klausur Algorithmen und Datenstrukturen SS 2016
11
Aufgabe 7 (Tiefensuche)
[21 Punkte]
Ein nervöser Student hat sich für den Tag der Klausur eine Todo-Liste geschrieben. Darauf stehen die
Aktionen: Zur Uni gehen (U), Klausur schreiben (K), Duschen (D), Mittagessen (M), Aufstehen (A),
Schuhe anziehen (S), Hosen anziehen (H) und Eis essen (E). Er möchte eine Reihenfolge finden, in der
er diese Aktionen erledigen kann, wobei manche Aktionen voraussetzen, dass andere bereits erledigt
sind. Er modelliert sein Problem als gerichteten Graphen, wobei jeder Knoten für eine Aktion steht und
eine gerichtete Kante anzeigt, dass eine Aktion vor einer anderen erledigt werden muss. Zum Beispiel
weiß er, dass er aufstehen muss, bevor er duschen kann; also gibt es eine Kante von A nach D.
..../....
S
...
..../.... A
...
...
2
1
..../....
M
1
...
H
..../....
2
...
3
...
...
1
U ..../....
E ..../....
2
...
...
...
...
...
1
D 2
..../....
K
..../....
(a) Der Student vermutet, dass sein Problem mit einer vollen Tiefensuche zu lösen ist. Leider hat er
die Bedeutung der Kantenklassen vergessen. Tragen Sie in folgende Tabelle für jeden Kantentyp
ein, wie dieser heißt, sowie ein Kriterium dafür, dass eine Kante (u, v) im Algorithmus diesen Typ
zugewiesen bekommt (abhängig von Informationen, die zum Zeitpunkt der Betrachtung von (u, v)
zur Verfügung stehen).
(6 Punkte)
Name des Katentyps
Kante (u, v) erhält diesen Typ falls...
T
.................
........................................................
B
.................
........................................................
F
.................
........................................................
C
.................
........................................................
Label
(b) Führen Sie eine volle Tiefensuche auf dem oben angegebenen Graphen aus, startend von A. Beschriften Sie jede Kante mit ihrem Typ und jeden Knoten mit dfs-Nummer/fin-Nummer. Ausgehende Kanten sind, wo nötig, durchnummeriert.
(8 Punkte)
12
Klausur Algorithmen und Datenstrukturen SS 2016
(c) Der Student möchte nun seine Aktionen in eine zulässige zeitliche Reihenfolge bringen, das heißt
so anordnen, dass zum Zeitpunkt der Ausführung einer Aktion A alle Voraussetzungen von A bereits
erledigt sind.
Im Graphmodell hat eine solche Anordnung einen Namen, nämlich:
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
(2 Punkte)
Zunächst soll nur entschieden werden, ob eine solche Anordnung möglich ist. Das lässt sich am
Ergebnis der Tiefensuche folgendermaßen erkennen:
..............................................................................
(2 Punkte)
(d) Tatsächlich ist eine zulässige Anordnung im gegebenen Beispiel möglich. Sie lässt sich am Ergebnis
der Tiefensuche folgendermaßen ablesen:
..............................................................................
(2 Punkte)
Diese zulässige Anordnung ist also:
...............................................................................
(1 Punkt)
Klausur Algorithmen und Datenstrukturen SS 2016
13
Aufgabe 8 (Master-Theorem)
[10 Punkte]
(Hinweis: Falls im Zusammenhang mit dem Mastertheorem für eine Funktion f (n) = O(nα ) eine Regularitätsbedingung zu prüfen wäre, nehmen Sie diese einfach als gegeben an.)
Eine Arbeitsgruppe hat einen rekursiven Algorithmus foobar erstellt, der ein gewisses Berechnungsproblem auf Arrays löst. Hat das Eingabearray eine Größe von höchstens 10, so berechnet eine Hilfsmethode
die Lösung in Zeit O(1). Hat das Array n > 10 Einträge, so geschieht Folgendes:
• Das Eingabearray wird in Zeit O(n log n) sortiert.
• Eine Hilfsmethode divide berechnet aus A fünf Arrays B,C, D, E und F mit Größe jeweils n/3.
Die Laufzeit von divide ist O(n).
• Der Algorithmus foobar wird rekursiv auf die Arrays B,C, D, E und F angewendet.
Dies liefert Rückgabewerte rB , rC , rD , rE und rF .
• Eine Hilfsmethode combine berechnet aus rB , rC , rD , rE , rF in Zeit O(n2 ) das Endergebnis rA .
(a) Sei T (n) die Laufzeit von foobar für Eingabearrays der Größe n. Stellen sie eine Rekurrenz für T (n)
auf.
(3 Punkte)
T (n) ≤


.........................................
falls . . . . . . . . . . . . . . . . .


sonst.
.........................................
(b) Lösen Sie die Rekurrenz mit dem Master-Theorem. Weisen Sie auf die Werte der entscheidenden
Parameter hin und identifizieren Sie, welcher der Fälle des Master-Theorems zutrifft (nennen Sie
seine Nummer oder seine Voraussetzung).
(4 Punkte)
Weiter auf nächster Seite!
14
Klausur Algorithmen und Datenstrukturen SS 2016
(c) Zwei Mitarbeiter der Arbeitsgruppe haben Ideen, um die Laufzeit des Algorithmus zu verbessern.
Alice hat eine bessere Implementierung von combine gefunden, die in Zeit O(n) funktioniert.
Bob erkennt einen strukturellen Zusammenhang zwischen den Rückgabewerten für die Teilprobleme: Tatsächlich lässt sich rF in Zeit O(n) aus rB , rC , rD und rE berechnen. So lässt sich ein
rekursiver Aufruf sparen.
Angenommen es ist nur Zeit, um eine der Optimierungen zu implementieren. Entscheiden Sie,
welche die größte Zeitersparnis bei großen Eingaben bietet. Wie verändert sich so die Rekurrenz
T (n) und welche Laufzeit ergibt sich für den verbesserten Algorithmus?
(3 Punkte)
Klausur Algorithmen und Datenstrukturen SS 2016
15
Aufgabe 9 (Der Algorithmus von Jarnı́k/Prim)
(a) Führen Sie den Algorithmus von Jarnı́k/Prim an
folgendem Eingabegraphen startend vom Knoten
D aus. Vermerken Sie an jedem Knoten, an den
mit . . . “ gekennzeichneten Stellen, die Nummer
”
der Runde (beginnend bei 1), an dem er vom Algorithmus gewählt wird. Zeichnen Sie die genutzten Kanten fett nach.
(6 Punkte)
[15 Punkte]
.....
.....
5
A
E
5
1
3
....
F
4
D
.....
4
6
5
B
.....
6
C
.....
6
(b) Nehmen Sie an, der Algorithmus von Jarnı́k/Prim ist in dem unten abgebildeten Zustand angekommen. (Fett gezeichnete Knoten sind betrachtet worden, fette Kanten sind gewählt worden.) Geben
Sie alle Schlüssel-Wert-Paare an, die zu diesem Zeitpunkt in der Priority Queue gespeichert sind!
Führen Sie genau eine Runde im Algorithmus aus und geben Sie alle PQ-Operationen mit Argument
bzw Resultat an!
(4 Punkte)
In Priority Queue: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C
Nächste Runde:
i i-te Priority Queue-Operation
1
2
3
...............................................
...............................................
...............................................
2
F
4
2
B
5
1
A
G
3
E
1
2
H
3
2
5
D
(c) Nehmen Sie an, die im Algorithmus von Jarnı́k und Prim eingesetzte Priority Queue wird als
Binärheap realisiert. Welche Laufzeit (in O-Notation) hat der Algorithmus von Jarnı́k/Prim auf einem ungerichteten Graphen mit n Knoten und m Kanten? Begründen Sie diese kurz! (3 Punkte)
Laufzeit:
.......................
Begründung:
.........................................................................................
.........................................................................................
.........................................................................................
(d) Sei G = (V, E) ein ungerichteter Graph. Formulieren Sie für eine Kante e ∈ E, eine Kantenmenge
R ⊆ E und eine Knotenmenge S ⊆ V die Schnitteigenschaft!
(2 Punkte)
.........................................................................................
.........................................................................................
16
Klausur Algorithmen und Datenstrukturen SS 2016
Aufgabe 10 (Huffman-Codes)
[14 Punkte]
Der Huffman-Algorithmus liefert für eine Eingabe (Σ, p) eine Ausgabe T .
(a) Geben Sie die Sorte (den Typ) der drei Objekte Σ, p und T an:
(5 Punkte)
Σ: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
p: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
T: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hierbei minimiert T das Kostenmaß B(T, p) = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , wobei dT (a) definiert ist als . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
(b) Entscheiden Sie, ob folgende Aussagen wahr oder falsch sind. Geben Sie jeweils entweder einen
Beweis oder ein Gegenbeispiel an. Für ein Gegenbeispiel genügt es, Σ, p sowie eine mögliche zugehörige Ausgabe T des Huffman-Algorithmus explizit anzugeben.
Aussage 1. Seien a, b ∈ Σ mit p(a) = p(b). Dann gilt auch dT (a) = dT (b).
Die Aussage ist: wahr
Beweis/Gegenbeispiel:
falsch.
Aussage 2. Seien a, b ∈ Σ mit p(a) > p(b). Dann gilt dT (b) ≥ dT (a).
Die Aussage ist: wahr
Beweis/Gegenbeispiel:
(3 Punkte)
falsch.
(3 Punkte)
Klausur Algorithmen und Datenstrukturen SS 2016
Aussage 3. Für jedes k ∈ N: Falls |Σ| > 2k , so gilt B(T, p) ≥ k.
Die Aussage ist: wahr
Beweis/Gegenbeispiel:
falsch.
Viel Erfolg!
17
(3 Punkte)
Herunterladen