Klausur: Algorithmik / Algorithmen III Bitte lesen Sie die

Werbung
Klausur:
Algorithmik / Algorithmen III
Termin:
11. Februar 2003
Aufgabe 1
Prüfer: Prof. Dr. H. Klocke
Name, Vorname:
Matr-Nr:
Sem:
Unterschrift:
Falls Sie zusätzliche Lösungsblätter verwenden, schreiben Sie bitte Ihren Namen und Ihre
Matrikelnummer darauf. Lösungsblätter ohne Namen werden nicht gewertet.
Falls hinter einer Teilaufgabe in Klammern eine Punktzahl steht, z.B. (3P), so wird
diese für eine korrekte Lösung der Teilaufgabe vergeben. Fehlt diese Angabe, so
muss die Aufgabe komplett gelöst werden, damit Sie die in der Übersichtstabelle
(siehe unten) angegebene Punktzahl erhalten.
h(k)
# in Tm Slot
1
121
1
2
133
13
3
155
15
4
233
13
5
244
4
1
4
6
278
18
2
5
4
7
3
9
7
77
17
8
834
14
9
455
15
10
587
7
11
259
19
12
421
1
13
387
7
14
489
15
16
0
3
1
2
3
6
8
10
11
9
2
13
287
7
2
14
81
1
4
17
577
17
18
729
9
3
17
19
635
15
1
18
Ich wünsche Ihnen viel Erfolg.
20
737
17
2
19
21
511
11
_________________________________________________________________
22
851
11
23
395
15
24
645
5
25
1027
7
26
669
9
27
983
3
28
679
19
Dauer der Klausur: 2 Stunden.
Übersichtstabelle
Aufgabe
1 (a,b)
2 (a,b)
3 (a, b, c)
4 (a,b)
5
Seite
2
4
6
9
13
Thema
Hash-Techniken
Heaps
Bäume
Graphen
Fragen zu verschiedenen
Themen
mögliche
Punkte
10+10
=
10+10
=
10+10+10
=
15+15
=
12 x 2
=
erreichte
Punkte
20
20
30
30
24
29
543
3
30
1025
5
31
934
14
…
…
…
1. Erklären Sie genau, welchen Designfehler der
Programmierer bei der Konstruktion der
Hashfunktion h(k) = k mod 20 gemacht hat. (5P)
2
2
Bitte lesen Sie die Aufgabenstellungen genau und in Ruhe durch!
20
a) Die Fakultät einer Fachhochschule bietet die drei Studiengänge AI, WI und TI an. Die
Matrikelnummern der Studierenden liegen zwischen 0 und 1023. In der binären
Codierung der Matrikelnummer wird in den letzten beiden Ziffern der Studiengang
gespeichert: 00 für AI, 01 für WI und 10 für TI. Zur Speicherung der Matrikelnummern
k wird die Hashfunktion "h(k) = k mod 20" verwendet. Die folgende Tabelle zeigt eine
Auswahl von 31 Matrikelnummern und deren Verteilung auf die Hashtabelle. Die Spalte
"# in Tm" gibt an, wie viele Matrikelnummern in dem jeweiligen Tabellen-Slot
gespeichert sind.
k
Zum Bestehen der Klausur müssen Sie 50 von 124 Punkten erreichen. Hilfsmittel wie
Bücher, Vorlesungsmitschriften und Skripte sind nicht zugelassen.
( Hash-Techniken)
12
15
16
2. Beheben Sie den Fehler durch die Konstruktion einer
besser geeigneten Hashfunktion. (5P)
124
Klocke, Klausur Algorithmik, 11. Februar 2003
Klocke, Klausur Algorithmik, 11. Februar 2003
2
Fortsetzung Aufgabe 1 …
Aufgabe 2
20
( Heaps )
a) Für die Darstellung und Diskussion von Heaps gibt es verschiedene Modelle. Ein
anschauliches Modell ist das Binärbaum-Modell. Dabei werden die n Prioritäten ki,
i = 1, .., n, einer Priority Queue in den Knoten eines Binärbaumes gespeichert.
b) Eine gute Verteilung von Schlüsseln liefert die Methode Double Hashing. Sie wird
durch folgende Funktion definiert:
h(k, i) = ( h1(k) + i⋅h2(k) ) mod m
1. Speichern Sie die Prioritäten 1, .., 8 in dem entsprechende Array-Modell.
(3P)
2. Schreiben Sie die Indizes i = 1, .., 8 an die entsprechenden Knoten im BinärbaumModell.
(3P)
Erklären Sie genau, was es für die Qualität der Hashfunktion bedeutet, wenn h2(k) und
der Modul m (= Größe der Hash-Tabelle) relativ prim sind ("h2(k) und m sind relativ
prim" bedeutet: h2(k) und m haben außer 1 keinen gemeinsamen Teiler).
Binärbaum-Modell
Array-Modell
8
6
3
i
ki
7
4
5
1
2
3
4
5
6
7
8
2
1
3. Definieren Sie die Datenstruktur Heap einmal aus der Sicht des Binärbaum-Modells und
einmal aus der Sicht des Array-Modells.
(4P)
Binärbaum-Modell
Array-Modell
Klocke, Klausur Algorithmik, 11. Februar 2003
3
Klocke, Klausur Algorithmik, 11. Februar 2003
4
Fortsetzung Aufgabe 2 …
Aufgabe 3
b) Das folgende Bild zeigt die ersten 5 Binomialbäume B0, B1, B2, B3, und B4.
30
( Bäume )
a) Viele Algorithmen benötigen Datenstrukturen, um Objekte zu speichern und zu
verwalten. Für Priority Queues werden Heaps, für Dictionaries werden binäre
Suchbäume oder Hash-Tabellen verwendet. Oft ist es erforderlich, die Menge der
Objekte, auf denen ein Algorithmus operiert, in mehrere Gruppen (Mengen) einzuteilen.
Dazu müssen Methoden bereit gestellt werden, die sehr schnell entscheiden, zu welcher
Menge ein Objekt gehört.
Für die effiziente Speicherung und Verwaltung von Mengen können so genannte
Union-Find Strukturen verwendet werden.
Tiefe
0
1
2
3
4
B0
B1
B2
B3
1. Zeichnen Sie für die Menge { a, b, c, d, e, f, g } drei verschiedene Union-Find
Strukturen unter Verwendung des Binärbaum-Modells. Erklären Sie die Struktur
dieser Bäume sowie die Technik, mit der die Objekte in einer Union-Find Struktur –
das bedeutet: in einer Menge − gespeichert werden.
(7P)
B4
Erklären und verifizieren Sie für den Binomialbaum B4 die folgenden Eigenschaften:
Für einen Binomialbaum Bk gilt:
1. Bk hat 2k Knoten
(1P)
2. Bk hat die Höhe k
(2P)
k 
3. es gibt exakt   Knoten auf Ebene i, i = 0, 1, ..., k
i
(3P)
4. die Wurzel von Bk hat den Rang k, der größer ist als der Rang aller anderen Knoten;
werden die Nachfolger der Wurzel von links nach rechts mit k-1, k-2, ..., 0
(4P)
nummeriert, so ist der Nachfolger i die Wurzel des Unterbaumes Bi.
Hinweise: •
•
k
k!
  =
i
(
k
−
i )!⋅i!
 
Es genügt, wenn Sie die Eigenschaft 3 für i=1 und i=2 verifizieren
2. Geben Sie für eine der drei gezeichneten Union-Find Strukturen auch das ArrayModell p[x], x ∈ { a, b, c, d, s, f , g}, an.
(3P)
x
:
p[x]
:
Hinweis:
Klocke, Klausur Algorithmik, 11. Februar 2003
5
a
b
c
d
e
f
g
type element = (a, b, c, d, e, f, g);
var p : array [element] of element
Klocke, Klausur Algorithmik, 11. Februar 2003
6
Fortsetzung Aufgabe 3…
Fortsetzung Aufgabe 3 …
c) Durch welche Art von Rotationen werden die folgenden beiden Bäume zu AVLBäumen umstrukturiert? Analysieren Sie die Bäume genau, und begründen Sie Ihre
Antworten.
b) Bei der Suche nach Objekten in binären Suchbäumen hängt die Schnelligkeit der Suche
insbesondere im Worst Case von der Höhe des Baumes ab. Um die Höhe eines
Binärbaumes auszugleichen, wird der Baum nach dem Einfügen oder Löschen von
Knoten geprüft und ggf. umstrukturiert. In der Vorlesung wurden AVL-Bäume als eine
mögliche Strukturform für binäre Bäume besprochen.
y
1. Zeichnen Sie ein Dictionary mit 19 Objekten einmal als vollständigen Baum und
einmal als AVL-Baum. Die Knoten müssen nicht bezeichnet werden; es genügt,
wenn Sie die Baumstruktur zeichnen.
(5P)
x
3
h-1
2. Erklären Sie, warum man nach dem Einfügen oder Löschen von Knoten den Baum
nicht einfach in einen vollständigen Baum umwandelt. Mit anderen Worten: Welchen
Vorteil haben AVL-Bäume gegenüber vollständigen Bäumen?
(5P)
1
h
2
h-1
z
x
h y
1
h-1
Klocke, Klausur Algorithmik, 11. Februar 2003
7
2
h-1
h-2
4
h-1
3
h-2
h-1
Klocke, Klausur Algorithmik, 11. Februar 2003
8
Aufgabe 4
30
(Graphen)
Fortsetzung Aufgabe 4a …
a) Ermitteln Sie nach dem Verfahren von Dijkstra die kürzesten Wege vom Startknoten c
in dem folgenden Graphen.
c
5
1
b
3
Bei der Lösung des Algorithmus von Dijkstra wird in jedem Greedy-Schritt ein
spannender Baum um einen Ast erweitert. Zeichnen Sie den spannenden Baum, der sich
aus Ihrer obigen Lösungsmatrix ergibt.
(2P)
g
7
3
1
a
c
f
b
g
1
2
2
e
a
4
9
f
d
8
e
i
4
1
h
d
i
Geben Sie in jedem Greedy-Schritt die Menge der gewählten Knoten, der Randknoten
(einkreisen) und der unerreichbaren Knoten (∞) an. (10P)
g
c
a
b
d
e
f
g
h
i
0
∞
∞
∞
7
∞
1
∞
∞
h
Knoten des Graphen
Welche Informationen können aus diesem spannenden Baum abgelesen werden? (3P)
Greedy Schritt
gewählte Knoten
Klocke, Klausur Algorithmik, 11. Februar 2003
9
Klocke, Klausur Algorithmik, 11. Februar 2003
10
Fortsetzung Aufgabe 4 …
Fortsetzung Aufgabe 4 b) …
b) Konstruieren Sie aus dem folgenden Graphen einen spannenden Baum mit minimalen
Kosten. Erklären Sie die Idee des Algorithmus. Beginnen Sie mit der Minimum-KostenKante (c, g).
(12P)
c
5
1
b
3
Zeichnen Sie mit Hilfe der Lösungsmatrix den spannenden Baum mit minimalen
Kosten. (3P)
g
7
1
a
c
3
b
f
1
2
2
e
g
a
4
9
f
d
8
e
i
4
d
1
h
i
c
a
b
c
d
e
f
g
h
i
∞
c(5)
-
∞
c(7)
∞
c(1)
∞
∞
Klocke, Klausur Algorithmik, 11. Februar 2003
h
11
Klocke, Klausur Algorithmik, 11. Februar 2003
12
Aufgabe 5
( Fragen )
24
Für jede von Ihnen korrekt gegebene Antwort gibt es 2 Punkte. Für jede fehlende und jede
falsche Antwort werden 2 Punkte von der in dieser Aufgabe erreichten Punktzahl
abgezogen. Eine negative Punktzahl gibt es nicht!
richtig?
Nr Frage/Aussage
1
Ein Eulerscher Weg ist ein Pfad in einem Graphen, der jeden Knoten genau einmal
besucht und dessen Start- und End-Knoten identisch sind.
2
Jeder AVL-Baum ist ein binärer Suchbaum.
3
Bei der Konstruktion einer Sondierungsfunktion für eine Hashfunktion h(k) mit
dem Modul m ist die Wahrscheinlichkeit einer Kollision von Schlüsseln am
geringsten, wenn es ?________? Sondierungsfolgen gibt.
4
Bei einem Divide&Conquer-Algorithmus wird ein Problem in zwei der mehrere
Teilprobleme geteilt, die einzeln für sich gelöst werden, und deren Teillösungen
zum Schluss zu einer Gesamtlösung zusammengefügt werden.
5
Mit Hilfe des so genannten Master-Theorems kann für die meisten D&CAlgorithmen die asymptotische Zeitkomplexität ermittelt werden.
6
Wie nennt man die Wurzel einer Union-Find Struktur zur Speicherung einer
Menge?
7
Die asymptotische Zeitkomplexität ist ein Maß für Schnelligkeit eines Algorithmus.
8
Durch O(n) wird die WorstCase-, durch o(n) die BestCase- und durch Θ(n) die
durch AverageCase-Laufzeit eines Algorithmus abgeschätzt.
9
ja
nein
Was bedeutet es, wenn ein Bayer-Baum degeneriert?
a) der Baum könnte bei einer anderen Verteilung der Objekte auf die Knoten eine
kleinere Höhe haben.
b) Die Verteilung der Objekte auf die Knoten des B-Tree ist sehr ungleichmäßig.
c) Jeder Knoten hat nur 2 Söhne.
10
Ein nicht-deterministischer Algorithmus ist schneller als ein deterministischer
Algorithmus.
Klocke, Klausur Algorithmik, 11. Februar 2003
13
Herunterladen