SS2011 - TU Ilmenau

Werbung
TU Ilmenau, Fakultät IA
Institut TI, FG Komplexitätstheorie und Effiziente Algorithmen
Prof. Dr. M. Dietzfelbinger
Klausur Algorithmen und Datenstrukturen SS 11
25. Juli 2011
NICHT MIT BLEISTIFT ODER ROTSTIFT SCHREIBEN!
Heften Sie die Blätter bei Abgabe zusammen, und tragen Sie auf jedem Blatt
Ihren Namen, Vornamen, Studiennummer und Matrikel ein. Es sind keine Hilfsmittel,
insbesondere Taschenrechner oder Mobiltelefone, zugelassen.
Arbeitszeit 90 min
Name, Vorname:
Studiennummer und Matrikel:
abgegeben:
6 Aufgabenblätter
. . . eigene Blätter
Einsichtnahme
Datum, Unterschrift
Aufgabe
1
2
3
4
5
6
7
Ges.
erreichbare Punktzahl
24
5
11
11
17
12
10
90
erreichte Punktzahl
Aufgabe 1
[24 Punkte]
Bitte kreuzen Sie für jede der folgenden Fragen entweder JA“ oder NEIN“ in jeder Zeile an.
”
”
Bewertung: Ist C die Anzahl der richtigen Antworten und F die Anzahl der falschen
Antworten, so errechnet sich die Anzahl P der erzielten Punkte aus P := max(0, C − F ).
Nicht beantwortete Fragen haben auf die Punkte keinen Einfluss.
(a) Gelten die folgenden Aussagen?
JA NEIN
log n
[ ] [ ] n+17 = o (1)
p
[ ] [ ] n1.1 log n = Ω(log n)
[ ] [ ] Θ( f (n) + g(n)) = Θ(max{ f (n), g(n)})
(b) Welche der folgenden Aussagen über Queues sind korrekt?
JA NEIN
[ ] [ ] Queues sind LIFO-Speicher.
[ ] [ ] Um Platzprobleme bei einer Arrayimplementierung von Queues zu vermeiden,
nutzt man die Verdoppelungsstrategie.
[ ] [ ] Außer mit Arrays können Queues auch mittels eines Min- bzw. Max-Heaps implementiert werden.
(c) Welche der folgenden Aussagen über Binäre Bäume sind korrekt?
JA NEIN
[ ] [ ] Ein binärer Baum mit N nicht-leeren Blättern hat insgesamt 2N − 2 Kanten.
[ ] [ ] Ein binärer Baum der Tiefe d hat mindestens 2d+1 − 1 Knoten.
[ ] [ ] Es gibt einen Knoten u, der Vorfahr eines jeden anderen Knotens v 6= u ist.
2
Klausur Algorithmen und Datenstrukturen SS 11
(d) Welche der folgenden Aussagen sind für AVL-Bäume mit n Knoten korrekt?
JA NEIN
[ ] [ ] Die maximale Tiefe ist durch 1, 4405 log n nach oben beschränkt.
[ ] [ ] Die Kosten für eine Einfach- oder Doppelrotation sind Θ(log n).
[ ] [ ] Eine AVL insert-Operation zieht maximal eine Einfach- oder Doppelrotation
nach sich.
(e) Welche der folgenden Aussagen sind korrekte Bedingungen für 2-3-Bäume?
JA NEIN
[ ] [ ] Alle Blätter eines 2-3-Baums liegen auf der selben Ebene.
[ ] [ ] Jeder Knoten eines 2-3-Baums hat 1, 2 oder 3 Kinder.
[ ] [ ] Jeder Knoten eines 2-3-Baums enthält 2 oder 3 Schlüsselwerte.
(f) Welche der folgenden Aussagen über Hashing mit Tabellengröße m und n Schlüsseln sind
korrekt?
JA NEIN
[ ] [ ] Beim Hashing mit verketteten Listen darf der Auslastungsfaktor α = n/m den
Wert 1 nicht überschreiten.
[ ] [ ] Beim linearen Sondieren ist die erwartete mittlere Anzahl an Sondierungsschritten bei erfolgreicher Suche 1−1α2 .
[ ] [ ] Falls die Uniformitätsannahme UF∗ erfüllt ist und es ein konstantes α0 < 1 gibt,
so dass n/m ≤ α0 gilt, kostet lookup beim linearen Sondieren O(1) Zeit.
(g) Welche der Aussagen über Sortierverfahren sind korrekt?
JA NEIN
[ ] [ ] MergeSort arbeitet in-situ.
[ ] [ ] HeapSort führt im schlechtesten Fall weniger Vergleiche (asymptotisch) aus als
QuickSort.
[ ] [ ] Die Laufzeit von CountingSort auf n Schlüsseln liegt in Ω(n log n).
(h) Welche der folgenden Aussagen über einen gerichteten Graphen G = (V, E) sind korrekt?
JA NEIN
[ ] [ ] Existiert ein Weg vom Knoten u zum Knoten v, so existiert auch ein Weg von v
nach u.
[ ] [ ] Das Ermitteln aller Nachfolger eines Knotens u kostet für die Adjazenzmatrixdarstellung Θ(|V |) Zeit.
[ ] [ ] Die Adjazenzlistendarstellung benötigt O(| E| + |V |) Platz.
Klausur Algorithmen und Datenstrukturen SS 11
Aufgabe 2 (2-3-Bäume)
3
[5 Punkte]
Im Folgenden wird ein 2-3-Baum T der Tiefe h mit n Schlüsseln betrachtet.
(a) Geben Sie eine untere und obere Schranke für die Anzahl der Knoten aus T an!
n +1 1
(Hinweis: Bekannt sei ∑nk=0 ck = c c−−
(2 Punkte)
1 )
(b) Zeigen Sie, dass
0, 6309 · log(n + 1) − 1 ≤ h ≤ log(n + 1) − 1
gilt. (Hinweis: 0, 6309 · log2 ( x ) ≤ log3 ( x ))
(3 Punkte)
4
Klausur Algorithmen und Datenstrukturen SS 11
Aufgabe 3 (Deque)
[11 Punkte]
Im Folgenden wird der Datentyp Deque über D“ mit den Sorten Boolean, Elements, Deques
”
und den Operationen empty, isEmpty, pushFront, pushBack, popFront, popBack, first
und last betrachtet.
(a) Geben Sie die Signatur für alle Operationen an!
(4 Punkte)
(b) Geben Sie das mathematische Modell für alle Sorten und die Operationen empty,
isEmpty, pushFront, popFront und first an!
(4 Punkte)
Weiter auf nächster Seite!
Klausur Algorithmen und Datenstrukturen SS 11
5
(c) Skizzieren Sie eine Arrayimplementierung! (Hinweis: Es muss erkennbar sein: wo Elemente
gespeichert sind, nötige Variablen, Addressierung des Arrays )
(3 Punkte)
6
Klausur Algorithmen und Datenstrukturen SS 11
Aufgabe 4 (AVL-Bäume)
[11 Punkte]
Der folgende AVL-Baum mit Schlüsseln aus U = N sei gegeben (der Datenteil aus R wird hier
der Einfachheit halber ignoriert):
6
2
12
4
1
3
8
5
7
13
9
14
10
(a) Definieren Sie den Begriff AVL-Baum! (Hinweis: Der Begriff (U, R)-Binärer Suchbaum kann
benutzt werden.) Zeigen Sie, dass es sich bei dem gegebenen Baum um einen AVL-Baum
handelt (zeichnen Sie oben die Balancefaktoren ein)!
(3 Punkte)
(b) In welcher Reihenfolge muss man die Schlüssel 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12,
13, 14 in einen anfangs leeren AVL-Baum einfügen, so dass der resultierende Baum ohne
Rotation entsteht und die selbe Struktur wie der oben gegebene Baum besitzt? (2 Punkte)
Weiter auf nächster Seite!
Klausur Algorithmen und Datenstrukturen SS 11
7
(c) Fügen Sie in den auf Seite 6 gegebenen AVL-Baum den Schlüssel 11 ein und zeichnen Sie
den resultierenden Baum!
(2 Punkte)
(d) Löschen Sie aus dem auf Seite 6 gegebenen AVL-Baum nacheinander die Schlüssel 3 und 1
und zeichnen Sie den resultierenden Baum nach jeder Rotation!
(4 Punkte)
8
Klausur Algorithmen und Datenstrukturen SS 11
Aufgabe 5 (geschlossenes Hashing)
[17 Punkte]
Im Folgenden werden eine Hash-Tabelle T[0..m − 1] und n Schlüssel betrachtet.
(a) Gegeben seien die Schlüssel 1001, 1542, 429, 1320, 17, 900, 417, 2302, 1920, die
Hash-Funktion h( x ) = b x/100c mod m und eine Hash-Tabelle der Größe m = 10. Fügen
Sie die Schlüssel unter Verwendung von linearem Sondieren in die Hash-Tabelle ein und geben Sie jeweils den benutzten Teil der Sondierungsfolge h( x, k ), k = 0, 1, 2, . . . an. (8 Punkte)
Hash-Tabelle
i
0
1
2
3
4
5
6
7
8
9
T[ i ]
Sondierungsfolgen
x
h( x, k ), k = 0, 1, 2, . . .
1001
1542
429
1320
17
900
417
2302
1920
(b) Geben Sie einen Ausdruck für die erwartete Anzahl an Schlüsselvergleiche bei erfolgloser
Suche und für die erwartete mittlere (über x1 , x2 , . . . , xn ) Anzahl an Schlüsselvergleichen
für lineares Sondieren unter der Annahme UF∗ an!
(2 Punkte)
(c) Geben Sie (neben linearem Sondieren) zwei weitere Sondierungsstrategien (Name und
Ausdruck für h( x, k )) an! 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)
Weiter auf nächster Seite!
Klausur Algorithmen und Datenstrukturen SS 11
9
(d) Um eine funktionsfähige Hash-Tabelle nach dem Löschen von Schlüsseln zu erhalten,
können Einträge der Hash-Tabelle zusätzlich mit Markierungen erweitert werden. Beschreiben Sie in kurzen Stichpunkten, welche Markierungen nötig sind und wie die Operation
lookup die Markierungen behandelt!
(3 Punkte)
10
Klausur Algorithmen und Datenstrukturen SS 11
Aufgabe 6 (HeapSort)
[12 Punkte]
Gegeben ist folgendes Array A[1..8] mit Einträgen aus U = N (ein Eintrag entspricht einem
Schlüssel):
A:
4
11
2
23
1
42
7
(a) Definieren Sie H[1..n] ist ein Min-Heap“!
”
9
(2 Punkte)
(b) Zeichnen Sie den linksvollständigen Binärbaum zu A[1..8] und geben Sie an, ob es sich um
einen Min-Heap handelt oder nicht (mit Begründung)!
(2 Punkte)
(c) Welchen Heap-Typ (Min/Max-Heap) muss man verwenden, um mittels HeapSort die
Schlüssel aus A aufsteigend bzw. fallend zu sortieren?
(1 Punkt)
(d) Ist HeapSort stabil und/oder in-situ?
Weiter auf nächster Seite!
(1 Punkt)
Klausur Algorithmen und Datenstrukturen SS 11
11
(e) 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!
(6 Punkte)
12
Klausur Algorithmen und Datenstrukturen SS 11
Aufgabe 7 (Graphentraversierung)
[10 Punkte]
Gegeben ist folgender gerichteter Graph G = (V, E) in Adjazenzlistendarstellung (Knoten v ∈ V
mit Adjazenzliste Lv ).
v
1
Lv
5
2
1, 5,
6, 11
3
2
4
3, 7,
8
5
6, 9
6
1, 3,
10
7
8
9
10
11
12
4, 10
4, 7
∅
6
10
∅
(a) Zeichnen Sie in den zugehörigen Graphen!
(1 Punkt)
1
2
3
4
5
6
7
8
9
10
11
12
(b) Führen Sie in G eine Breitensuche (in der globalen“ Version) durch. Dabei sind die Knoten
”
in der Reihenfolge 1, 2, . . . zu bearbeiten. Testen Sie die Nachbarn eines Knoten in der
durch die jeweiligen Adjazenzliste gegebenen Reihenfolge. Zeichnen Sie die entstehenden
Breitensuchbäume, so dass die Level erkennbar sind und geben Sie die BFS-Nummern an!
(9 Punkte)
Viel Erfolg!
Herunterladen