Universität Karlsruhe, Institut für Theoretische Informatik

Werbung
g
lag
h
sc
r
o
svUniversität Karlsruhe, Institut für Theoretische Informatik
Lö
n
su
Prof. Dr. P. Sanders
26.5.2010
Übungsklausur Algorithmen I
Hiermit bestätige ich, dass ich die Klausur selbständig bearbeitet habe:
Aufgabe 1.
[2 Punkte]
Variante 1
Gegeben sei folgende Darstellung eines binären Heaps als Array mit den Indizes 1, . . . , 5:
1
2
3
3
8
5
4
5
12 11
Geben sie den Inhalt des Arrays an, nachdem deleteMin ausgeführt worden ist:
1
2
3
4
Lösung
1
2
3
4
5
8
11
12
Lösungsende
Variante 2
Gegeben sei folgende Darstellung eines binären Heaps als Array mit den Indizes 1, . . . , 5:
1
7
2
3
21 42
4
5
31 43
Geben sie den Inhalt des Arrays an, nachdem deleteMin ausgeführt worden ist:
1
2
3
4
3
4
Lösung
1
2
21 31 42
43
Lösungsende
g
hla
c
rs
vo
s
g
Variante 3
un
s
ö
L
Gegeben sei folgende Darstellung eines binären Heaps als Array mit den Indizes 1, . . . , 5:
1
2
9
3
11 10
4
5
18 20
Geben sie den Inhalt des Arrays an, nachdem deleteMin ausgeführt worden ist:
1
2
3
4
3
4
Lösung
1
2
10 11 20
18
Lösungsende
Aufgabe 2.
[1 Punkt]
Nennen Sie ein Beispiel für die vereinfachende Wirkung von Wächterelementen (= Sentinels).
Lösung
• Sortieren durch Einsetzen.
• Suchen in (verketteten) Listen.
Lösungsende
Aufgabe 3.
[2 Punkte]
Variante 1
Nennen Sie zwei Operationen, die doppelt verkettete Listen in konstanter worst-case-Zeit unterstützen, einfach verkettete Listen jedoch nicht.
Lösung
insert, remove, popBack
Lösungsende
Variante 2
a) Nennen Sie eine Operation, die einfach verkettete Listen in konstanter worst-case-Zeit
unterstützen.
b) Nennen Sie einen Vorteil von einfach verketteten Listen gegenüber doppelt verketteten
Listen.
Lösung
a) first, last, removeAfter, insertAfter, pushFront, popFront, pushBack
b) Weniger Speicherverbrauch (da weniger Handles), oft schneller (weniger Handles müssen
geupdated werden)
Lösungsende
g
hla
c
rs
vo
s
g
Aufgabe 4.
[2 Punkte]
un
s
ö
L
Variante 1
Nennen Sie einen Vorteil und einen Nachteil von Hashing mit verketteten Listen gegenüber
offenem Hashing mit linearer Suche.
Lösung
• Vorteile: insert in O(1), für dichte Hashtabellen besser, referentielle Integrität, Leistungsgarantien mit universellem Hashing
• Nachteile: nicht so platz-effizient, nicht so cache-effizient, nicht so einfach
Lösungsende
Variante 2
Nennen Sie einen Vorteil und einen Nachteil von offenem Hashing mit linearer Suche gegenüber
Hashing mit verketteten Listen.
Lösung
• Vorteile: platz-effizient, cache-effizient, einfach
• Nachteile: insert nicht in O(1), für dichte Hashtabellen schlechter, keine Referentielle
Integrität, keine Leistungsgarantieen mit universellem Hashing
Lösungsende
Aufgabe 5.
[3 Punkte]
Variante 1
Der Ministerpräsident von Baden-Württemberg möchte die besten 2% der Abiturienten seines
Landes zu einem Gartenfest einladen. Gegeben sei dazu eine Datei F von n Tripeln der Form
(Name, LaufendeNr, Durchschnittsnote).
a) Geben Sie einen Algorithmus an, der in erwartet O(n) Zeit die besten 2% aller Abiturienten liefert.
Bemerkung. Sie können Algorithmen aus der Vorlesung als Unterprogramm verwenden.
Für (erwartet) O(n log n) Zeit bekommen Sie immerhin noch die Hälfte der Punkte.
b) Argumentieren Sie, warum Ihr Algorithmus das gewünschte Laufzeitverhalten hat.
Lösung
a) Man betrachte auf F die Relation „≤“, definiert durch
(N1 , L1 , D1 ) ≤ (N2 , L2 , D2 )
:⇐⇒
D1 ≤ D2 .
Man wende nun den Algorithmus Quickselect aus der Vorlesung gemäß der gerade definierten Relation „≤“ an, um so das d2n/100e-te Element bzgl. „≤“ zu wählen. Heiße
dieses p. Man verwende nun die von Quicksort bekannte Art zu partionieren, um F derart
in zwei Teile zu teilen, dass der linke Teil alle Elemente e ∈ F mit e ≤ p enthält und der
rechte Teil alle anderen. Der linke Teil enthält die gesuchten besten 2%.
b) Quickselect: erwartet O(n) Zeit. Partitionieren: O(n) Zeit.
Lösungsende
g
hla
c
rs
vo
s
g
Variante 2
un
s
ö
L
Eine erfolgreiche Fastfood-Kette bewertet ihre Mitarbeiter mit einem internen Punktesystem.
Nun möchte der Chef die am besten bewerteten 3% aller Mitarbeiter zu einem Gala-Abend
einladen. Dazu hat er eine Datei F von n Tripeln der Form (MitarbeiterID, Name, Bewertung).
a) Geben Sie einen Algorithmus an, der in erwartet O(n) Zeit die am besten bewerteten 3%
aller Mitarbeiter berechnet.
Bemerkung. Sie können Algorithmen aus der Vorlesung als Unterprogramm verwenden.
Für (erwartet) O(n log n) Zeit bekommen Sie immerhin noch die Hälfte der Punkte.
b) Argumentieren Sie, warum Ihr Algorithmus das gewünschte Laufzeitverhalten hat.
Lösung
a) Man betrachte auf F die Relation „≤“, definiert durch
(M1 , N1 , B1 ) ≤ (M2 , N2 , B2 )
:⇐⇒
B1 besser oder gleich B2 .
Man wende nun den Algorithmus Quickselect aus der Vorlesung gemäß der gerade definierten Relation „≤“ an, um so das d3n/100e-te Element bzgl. „≤“ zu wählen. Heiße
dieses p. Man verwende nun die von Quicksort bekannte Art zu partionieren, um F derart
in zwei Teile zu teilen, dass der linke Teil alle Elemente e ∈ F mit e ≤ p enthält und der
rechte Teil alle anderen. Der linke Teil enthält die gesuchten 3% mit der besten Bewertung.
b) Quickselect: erwartet O(n) Zeit. Partitionieren: O(n) Zeit.
Lösungsende
Aufgabe 6.
Variante 1
Zeigen oder widerlegen Sie, dass 22n = O(3n ).
[2 Punkte]
Lösung
Gilt nicht. Wenn doch, gäbe es c > 1, n0 > 1 mit 22n ≤ c3n für alle c ≤ n0 . Es ist aber
n
4
n
2 n
2n
n
4 = (2 ) = 2 ≤ c3 ⇔
≤ c ⇔ n ≤ log4/3 c ,
3
was ein Widerspruch ist zur Unbeschränktheit von n nach oben.
Lösungsende
g
hla
c
rs
vo
s
g
Variante 2
un
s
ö
L
Zeigen oder widerlegen Sie, dass 23n = O(5n ).
Lösung
Gilt nicht. Wenn doch, gäbe es c > 1, n0 > 1 mit 23n ≤ c5n für alle c ≤ n0 . Es ist aber
n
8
n
3 n
3n
n
8 = (2 ) = 2 ≤ c5 ⇔
≤ c ⇔ n ≤ log8/5 c ,
5
was ein Widerspruch ist zur Unbeschränktheit von n nach oben.
Lösungsende
Variante 3
Zeigen oder widerlegen Sie, dass 32n = O(5n ).
Lösung
Gilt nicht. Wenn doch, gäbe es c > 1, n0 > 1 mit 32n ≤ c5n für alle c ≤ n0 . Es ist aber
n
9
n
2 n
2n
n
9 = (3 ) = 3 ≤ c5 ⇔
≤ c ⇔ n ≤ log9/5 c ,
5
was ein Widerspruch ist zur Unbeschränktheit von n nach oben.
Lösungsende
Aufgabe 7.
[2 Punkte]
Variante 1
Bestimmen Sie die Lösungen der folgenden Rekurrenzen im Θ-Kalkül mit dem MasterTheorem:
T (1) = 1, T (n) = 5T (n/3) + 4n, n = 3k , k ∈ N
S(1) = 42, S(n) = n + 2S(n/2), n = 2k , k ∈ N
Lösung
T (n) = Θ nlog3 5 , S(n) = Θ(n log n)
Lösungsende
Variante 2
Bestimmen Sie die Lösungen der folgenden Rekurrenzen im Θ-Kalkül mit dem MasterTheorem:
T (1) = 1, T (n) = n/5 + 4T (n/5), n = 5k , k ∈ N
S(1) = 33, S(n) = 5S(n/4) + 89n, n = 4k , k ∈ N
Lösung
T (n) = Θ(n), S(n) = Θ nlog4 5
Lösungsende
g
hla
c
rs
vo
s
g
Variante 3
un
s
ö
L
Bestimmen Sie die Lösungen der folgenden Rekurrenzen im Θ-Kalkül mit dem MasterTheorem:
T (1) = 2001, T (n) = 42n + 2T (n/2), n = 2k , k ∈ N
S(1) = 5, T (n) = 45 T (n/7) + n/7, n = 7k , k ∈ N
Lösung
T (n) = Θ(n log n), S(n) = Θ(n)
Lösungsende
Variante 4
Bestimmen Sie die Lösungen der folgenden Rekurrenzen im Θ-Kalkül mit dem MasterTheorem:
T (1) = 2, T (n) = 7n + 4T (n/2), n = 2k , k ∈ N
S(1) = 5, T (n) = 3T (n/3) + 1001n, n = 3k , k ∈ N
Lösung
T (n) = Θ n2 , S(n) = Θ(n log n)
Lösungsende
Aufgabe 8.
[2 Punkte]
Variante 1
Nennen Sie einen Vorteil von Radix-Sort gegenüber Mergesort und von Mergesort gegenüber
Quicksort.
Lösung
• Vorteil Radix-Sort gegenüber Mergesort: Zeit in O(n) statt Θ(n log n)
• Vorteile Mergesort gegenüber Quicksort: stabil, O(n log n) bzw. n log n + O(n) Vergleiche
im worst-case
Lösungsende
Variante 2
Nennen Sie einen Vorteil und Nachteil von Mergesort gegenüber Quicksort.
Lösung
Vorteile von Mergesort:
• O(n log n) Vergleiche im schlimmsten Fall, bei Quicksort Θ(n2 )
• stabil
• n log n + O(n) Elementvergleiche statt Θ(n2 ) wie im schlimmsten Fall bei Quicksort
Nachteile von Mergesort:
• in der Praxis oft langsamer
• nicht „inplace“
Lösungsende
g
hla
c
rs
vo
s
g
Variante 3
un
s
ö
L
Nennen Sie je einen Vorteil von Radix-Sort gegenüber Quicksort und von Quicksort gegenüber
Mergesort.
Lösung
• Vorteile von Radixsort gegenüber Quicksort: Zeit in O(n) statt erwartet Θ(n log n) bzw.
worst-case Θ(n2 ), Radix-Sort stabil im Gegensatz zu Quicksort
• Vorteile von Quicksort gegenüber Mergesort: In der Praxis oft schneller, „inplace“
Lösungsende
Aufgabe 9.
[2 Punkte]
Ein Student hat sich nachfolgenden RAM-Code ausgedacht (dabei ist x ein Platzhalter):
R1 := 1
R2 := 0
R4 := x
schleifenanfang:
R2 := R2 + R1
R1 := R1 + 1
R3 := R1 ≥ R4
JZ schleifenanfang, R3
Welchen Wert enthält das Register R2 nach Ausführung des Programms für den Fall das x = 4?
Lösung
Für den Fall x = 4 enthält das Register R2 den Wert R2 = 1 + 2 + 3 = 6. Im Fall x = n ∈ N gilt
nach Ausführung des Programms R2 = ∑n−1
i=1 i
Lösungsende
g
hla
c
rs
vo
s
g
Aufgabe 10.
[1 Punkt]
un
s
ö
L
Ist dieser Graph ein DAG? Begründen Sie (z.B. durch Markierungen in der Zeichnung des
Graphen)!
Lösung
Der Graph ist kein DAG, da er einen gerichteten Kreis enthält.
Lösungsende
Aufgabe 11.
[1 Punkt]
Gegeben Sei folgender Algorithmus zum Finden einer Zahl x in einem unsortierten Feld A von
natürlichen Zahlen.
1: procedure findNumber(A : Array [1..n] of N, x ∈ N )
2:
for i = 1 to n do
3:
if A[i] == x return i
4:
invariant
5: return -1
Geben Sie in Zeile 4 eine gültige und sinnvolle Invariante an.
Lösung
Zum Beispiel: ∀k ∈ {1...i} : A[k] 6= x.
Zusatz: Falls Zeile 5 aufgerufen wird, so gilt i = n. Also gilt ∀i ∈ {1..n} : A[i] 6= x und mit
anderen Worten: A enthält kein Element mit dem Wert x.
Lösungsende
Aufgabe 12.
[1 Punkt]
Welche der folgenden Operationen eines unbeschränkten Feldes liegen im schlimmsten Fall in
Θ(n) (ohne Amortisierung): pushBack, Folge von n pushBack, [·] (Elementzugriff), |· | (Größe)?
Lösung
pushBack, Folge von n pushBack
Lösungsende
Aufgabe 13.
[2 Punkte]
g
hla
c
rs
vo
s
g
Variante 1
un
s
ö
L
Nennen Sie zwei Vorteile von beschränkten Feldern gegenüber einfach verketteten Listen.
Lösung
• keine Zeiger
• Cache-effizientes Iterieren
• effizienter beliebiger/wahlfreier Zugriff
• einfach
Lösungsende
Variante 2
Nennen Sie zwei Nachteile von beschränkten Feldern gegenüber verketteten Listen.
Lösung
• kein effizientes Einfügen an beliebiger Position
• Speicherplatz-Verschnitt
• einzelne Operationen können lange dauern
• nicht so flexibel
Lösungsende
Variante 3
Nennen Sie zwei Vorteile von einfach verketteten Listen gegenüber beschränkten Feldern.
Lösung
• flexibel
• keine Ausreißer bei der Laufzeit der Operationen
• kein Speicherplatz-Verschnitt
• effizientes Einfügen an beliebiger Position
Lösungsende
Variante 4
Nennen Sie zwei Nachteile von einfach verketteten Listen gegenüber beschränkten Feldern.
Lösung
• Zeiger benötigen zusätzlichen Platz
• Iterieren nicht Cache-effizient
• kein effizienter beliebiger/wahlfreier Zugriff
• komplizierter
Lösungsende
g
hla
c
rs
vo
s
g
Aufgabe 14.
un
s
ö
L
Variante 1
[1 Punkt]
Gegeben Sei eine Hashtabelle mit 10 Einträgen und die Hashfunktion h(x) = x DIV 10. Fügen
Sie die Elemente 4, 77, 5, 63, 98, 3, 22, 23, 99 in der gegebenen Reihenfolge in die Hashtabelle
ein. Verwenden Sie Hashing mit lineare Suche (zyklisches Array). Geben Sie nur das entgültige
Ergebnis an.
0
1
2
3
4
5
6
7
8
9
4
5
6
7
8
9
Lösung
0
1
2
3
4
5
3
22
23 99 63
77
98
Lösungsende
Variante 2
Gegeben Sei eine Hashtabelle mit 10 Einträgen und die Hashfunktion h(x) = x DIV 10. Fügen
Sie die Elemente 3, 76, 4, 62, 97, 2, 21, 22, 98 in der gegebenen Reihenfolge in die Hashtabelle
ein. Verwenden Sie Hashing mit lineare Suche (zyklisches Array). Geben Sie nur das entgültige
Ergebnis an.
0
1
2
3
4
5
6
7
8
9
4
5
6
7
8
9
Lösung
0
1
2
3
3
4
2
21
22 98 62
97
76
Lösungsende
Variante 3
Gegeben Sei eine Hashtabelle mit 10 Einträgen und die Hashfunktion h(x) = x DIV 10. Fügen
Sie die Elemente 2, 75, 3, 61, 96, 1, 21, 22, 97 in der gegebenen Reihenfolge in die Hashtabelle
ein. Verwenden Sie Hashing mit lineare Suche (zyklisches Array). Geben Sie nur das entgültige
Ergebnis an.
0
1
2
3
4
5
6
7
8
9
4
5
6
7
8
9
Lösung
0
1
2
3
2
3
1
21
22 97 61
75
96
Lösungsende
g
hla
c
rs
vo
s
g
Aufgabe 15.
[2 Punkte]
un
s
ö
L
Variante 1
Ein Array A[1..h] stelle einen impliziten binären Heap dar. Geben Sie sowohl den Index des
Parents als auch des linken Kindes für das Element j an, gegeben dass beide existieren.
parent(j) =
linkes Kind(j) =
Lösung
parent(j) = b j/2c, linkes Kind(j) = 2 j
Lösungsende
Variante 2
Ein Array A[1..h] stelle einen impliziten binären Heap dar. Geben Sie sowohl den Index des
linken als auch des rechten Kindes für das Element j an, gegeben dass beide existieren.
linkes Kind(j) =
rechtes Kind(j) =
Lösung
linkes Kind(j) = 2 j, rechtes Kind(j) = 2 j + 1
Lösungsende
Variante 3
Ein Array A[1..h] stelle einen impliziten binären Heap dar. Geben Sie sowohl den Index des
Parents als auch des rechten Kindes für das Element j an, gegeben dass beide existieren.
parent(j) =
rechtes Kind(j) =
Lösung
parent(j) = b j/2c, rechtes Kind(j) = 2 j + 1
Lösungsende
Aufgabe 16.
[1 Punkt]
Erläutern Sie kurz die Hauptidee des rekursiven recMult-Algorithmus der Vorlesung zur Multiplikation von zwei n-Bit Ziffern a, b.
Lösung
Im Wesentlichen handelt es sich um einen Darstellungstrick:
Es sei a = a1 Bk + a0 , b = b1 Bk + b0 . Dann a · b = a1 b1 B2k + (a1 b0 + b1 a0 )Bk + a0 b0 . Daraus
lässt sich dann der Algorithmus ableiten.
Lösungsende
g
hla
c
rs
vo
s
g
Aufgabe 17.
[1 Punkt]
un
s
ö
L
Variante 1
Wie lautet die Datenstrukurinvariante für doppelt verkettete Listen aus der Vorlesung?
Lösung
prev→next = next→prev = this
Lösungsende
Variante 2
Wie lautet die Heap-Eigenschaft?
Lösung
Bäume (oder Wälder) mit ∀v :parent(v)≤ v
Lösungsende
Zugehörige Unterlagen
Herunterladen