26. Vorlesung (04.02.2016): Druckversion

Werbung
1
Algorithmen und Datenstrukturen
Wintersemester 2015/16
26. Vorlesung
Probeklausur
M.Sc. Krzysztof Fleszar
Lehrstuhl für Informatik I
2
Aufgabe 1
MyAlgorithm(Feld vom Typ int A, int ` = 1, int r = A.leng th)
if ` < r then
m = b(` + r )/2c
MyAlgorithm(A, `, m)
for i = ` to r do
Print(A[i ]) // gibt A[i] aus
MyAlgorithm(A, m + 1, r )
a) Rekursionsgleichung für die asymptotische
Worst-Case-Laufzeit T (n)?
b) Rekursionsgleichung lösen!
c) Was gibt MyAlgorithm(A) für A = h1, 2, 3, 4i aus?
3
Aufgabe 2
MakeLeaf(Node v )
1 while v .lef t 6= nil do
2
RightRotate(v )
3
4
5
6
if v .r ig ht 6= nil then
while v .r ig ht .lef t 6= nil do
RightRotate(v .r ig ht )
LeftRotate(v )
v
2
1
4
3
a) MakeLeaf(Node v ) ?
b) MakeLeaf korrekt?
4-3
Aufgabe 5
Eingabe:
Feld A mit n verschiedenen ganzen Zahlen
1≤k ≤n
a) Laufzeit?
Ausgabe:
Feld B mit k kleinsten Zahlen aus A
KSmallest1(Feld vom Typ int A, int k )
MergeSort(A)
Sei B [1..k ] ein neues Feld vom Typ int.
for i = 1 to k do
B [i ] = A[i ]
return B
b) B aufsteigend?
c) A unverändert?
4-4
Aufgabe 5
Eingabe:
Feld A mit n verschiedenen ganzen Zahlen
1≤k ≤n
a) Laufzeit?
Ausgabe:
Feld B mit k kleinsten Zahlen aus A
b) B aufsteigend?
KSmallest2(Feld vom Typ int A, int k )
c) A unverändert?
BuildMinHeap(A)
Fasse A als Prioritätsschlange auf.
Sei B [1..k ] ein neues Feld vom Typ int.
for i = 1 to k do
B [i ] = A.ExtractMin() // funktioniert analog zu
ExtractMax aus Vorlesung
return B
4-5
Aufgabe 5
KSmallest3(Feld vom Typ int A, int k )
p = Select(A, 1, A.leng th, k )
Sei B [1..k ] ein neues Feld vom Typ int.
j =1
for i = 1 to A.leng th do
if A[i ] ≤ p then
B [j ] = A[i ]
j =j +1
return B
a) Laufzeit?
b) B aufsteigend?
c) A unverändert?
4-7
Aufgabe 5
KSmallest4(Feld vom Typ int A, int k )
Sei T ein neuer Rot-Schwarz-Baum.
for i = 1 to k do
T .Insert(A[i ])
for i = k + 1 to n do
if A[i ] < T .Maximum().key then
T .Delete(T .Maximum())
T .Insert(A[i ])
Sei B [1..k ] ein neues Feld vom Typ int.
ptr = T .Minimum()
for i = 1 to k do
B [i ] = ptr .key
ptr = ptr .Successor()
return B
a) Laufzeit?
b) B aufsteigend?
c) A unverändert?
e) Zahlen in T
zum Zeitpunkt i ?
6
Zusatzaufgabe
Finde z !
z
Zu Beginn: r = 1.
r
Nach jeder Rückkehr
zu s erhöhe r auf
(1) r = r + 1
(2) r = 2r
Höchstens zurückgelegte Distanz?
D1 = ?
D2 = ?
Exakt und in Θ -Notation!
7
Aufgabe 4
Eingabe:
Feld A mit n Zahlen; n gerade.
Jede Zahl kommt genau 2 mal vor.
Ausgabe:
Größter Abstand dmax eines Zahlenpaares.
a) Algorithmus mit Laufzeit O (ndmax )!
b) Algorithmus mit Laufzeit O (n log n)!
Herunterladen