Musterlösungen zur Klausur Informatik III – WS 02/03 Seite 1

Werbung
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 1
Aufgabe 1. (5 Punkte)
Es seien zwei Schlangen S1 , S2 und ein Keller K gegeben. In S1 befinden sich die Zahlen 1, 2, . . . , n(n > 2)
(in dieser Reihenfolge). Sie können nun die Operationen P U SHK (P OPS1 ) und P U SHS2 (P OPK ) in
beliebiger Reihenfolge (soweit möglich) ausführen, bis alle Elemente in S2 angekommen sind.
Geben Sie eine Permutation der Elemente an, die so nicht erzeugt werden kann und begründen Sie,
warum dies so ist.
Lösung:
Nehmen wir an, die Zahlen 1, 2, 3 sind in der Schlange gespeichert und 1 verlässt diese als erstes. Dann
kann die Permutation 3, 1, 2 nicht erzeugt werden, da, wenn 3 als erstes ausgegeben werden soll, zunächst
alles auf den Stack gepushed werden muss und ein Auslesen dann nur noch in der Reihenfolge 3, 2, 1
möglich ist.
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 2
Aufgabe 2. (5 Punkte)
Beschreiben Sie kurz das Prinzip der dynamischen Größenanpassung von Hashtabellen: Erläutern Sie,
wie man einerseits allzuviele Anpassungsoperationen, andererseits allzugroße Speicherverschwendung vermeidet.
Lösung:
(s. Buch)
Musterlösungen zur Klausur Informatik III – WS 02/03
Aufgabe 3. (1 Punkt)
Geben Sie die Zugriffsoperationen für eine Priority Queue an.
Lösung:
(s. Buch)
Seite 3
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 4
Aufgabe 4. (16 Punkte)
Betrachten Sie das Produkt M = M1 · M2 · . . . · Mn von n Matrizen, wobei Mi die Dimension di−1 × di , 1 6
i 6 n hat. Wir wissen, dass für die Matrixmultiplikation das Assoziativgesetz gilt, d.h. wir dürfen eine
beliebige Art der Klammerung wählen und somit die Reihenfolge der einzelnen Multiplikationen festlegen.
Je nachdem, in welcher Reihenfolge die Multiplikationen der Matrizen durchgeführt werden, benötigt
man bei Verwendung der Schulmethode für die Matrixmultiplikation mehr oder weniger arithmetische
Operationen. Entwickeln Sie unter Verwendung von dynamischer Programmierung einen Algorithmus,
der in O(n3 ) Zeit eine optimale Anordnung der Matrixmultiplikationen berechnet.
Lösung:
Betrachte die Kosten für das Multiplizieren der Matrizen Mi · . . . · Mj (i 6 j):
• Ci,i = 0
• Ci,i+1 = di−1 · di · di+1
• Ci,j = Ci,k + Ck+1,j + di−1 · dk · dj
für ein k mit i 6 k < j
Sei die Funktion cost wie folgt definiert:
cost(i, k, j) := Ci,k + Ck+1,j + di−1 · dk · dj
dann lässt sich Ci,j wie folgt schreiben:
Ci,j = min{cost(i, k, j) | i 6 k < j}
Da wir nicht nur nach den Kosten suchen, sondern gleichzeitig auch die optimale Klammerung berechnen
wollen, speichern wir das betreffende k in der Variablen Ki,j .
Algorithmus MMKosten
1: for i ← 1 to n do {Initialisierung}
2:
Ci,i ← 0
3:
Ki,i ← 0
4: end for
5: for l ← 2 to n do {l = Länge des betrachteten Ausdrucks}
6:
for i ← 1 to n − l + 1 do
7:
j ←i+l−1
8:
Ci,j ← ∞
9:
for k ← i to j − 1 do {Finde billigstes“ k}
”
10:
c ←cost(i, k, j)
11:
if c < Ci,j then
12:
Ci,j ← c
13:
Ki,j ← k
14:
end if
15:
end for
16:
end for
17: end for
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 5
Aufgabe 5. (10 Punkte)
Betrachten Sie folgendes Gedicht1 :
ottos mops klopft
otto: komm mops komm
ottos mops kommt
ottos mops kotzt
otto: ogottogott
a) Konstruieren Sie einen (erweiterten) Trie für die Menge der in dem Gedicht benutzten Worte.
Hierbei gelte otto:“ als ein Wort.
”
b) Konstruieren Sie einen optimalen präfixfreien Binärcode für das Gedicht und codieren Sie damit
die erste Zeile.
Lösung:
o
t
:
l
g
o
t
o
p
o
o
t
s
p
s
t
f
o
t
g
o
t
t
a)
k
m
o
t
m
m
z
t
t
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 6
b) Häufigkeiten:
f
1
g
2
k
5
l
1
m
10
o
23
p
5
s
7
t
18
z
1
:
2
xy
14
Optimaler Codebaum:
0
1
1
0
1
0
o
1
t
1
0
[ ]
0
m
1
1
0
s
k
0
1
1
1
0
:
g
1
f
0
l
0
z
0
p
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 7
Aufgabe 6. (4 Punkte)
Sei B ein Baum mit unendlich vielen Knoten, aber endlichem Grad in jedem Knoten. Sie möchten einen
bestimmten Knoten (über eine seiner Eigenschaften) suchen; verwenden Sie hierfür DFS oder BFS? Geben
Sie eine Begründung an.
Lösung:
DFS findet den Knoten eventuell nicht: Beispiel, ein Baum, der aus zwei am Anfang verbundenen
unendlichen Pfaden besteht. DFS wird nur einen davon untersuchen.
BFS findet den Knoten: Jeder konkrete Knoten hat eine endliche Tiefe. So auch der gesuchte: t. BFS
untersucht erst alle Knoten der Tiefe 1, dann der Tiefe 2 usw. Um zu zeigen, dass nach endlicher Zeit
auch die Knoten der Tiefe t durchsucht werden, genügt es zu zeigen, dass zu jeder Tiefe nur endlich viele
Knoten existieren.
Beweis durch Induktion:
Tiefe 0: ok
Induktionsschritt: Es gibt nur endliche viele Knoten der Tiefe n − 1. Nennen wir deren Anzahl x. Jeder
dieser x Knoten hat einen endlichen Grad. D.h. es gibt eine maximale Gradzahl unter diesen Knoten y.
Dann ist aber die Zahl der Knoten der Tiefe n durch xy beschränkt, da jeder Knoten der Tiefe n einen
Knoten der Tiefe n − 1 zum Vater haben muss.
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 8
Aufgabe 7. (8 Punkte)
Wie sehen die 3-Heaps aus, die (auch als Zwischenergebnisse) entstehen, wenn man die Zahlen 10, 21,
22, 23, 5, 8, 3, 45, 46, 10, 9, 8 in dieser Reihenfolge in einen anfangs leeren Heap einfügt?
Zeichnen Sie nur die Zwischenergebnisse, die nach einer Umordnung des Heaps auftreten, sowie das
Endergebnis.
Lösung:
5
5
10
21
10
22
22
8
23
21
23
22
23
10
21
3
3
3
5
5
22
21
21
10
10
23
5
10
9
23
10
8
21
10
23
8
8
45
46
22
45
3
5
21
10
10
8
23
8
45
9
46
22
46
22
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 9
Aufgabe 8. (10 Punkte)
Zeigen Sie, dass die folgenden Aussagen wahr sind:
a) 17 ∈ O(1).
b)
n(n−1)
2
∈ O(n2 ).
c) max(n3 , 10n2 ) ∈ O(n3 ).
n
P
d)
k m ∈ Θ(nm+1 ) für m ∈ N.
k=1
e) Für ein Polynom p(x) vom Grad k mit positivem führenden Koeffizienten gilt p(n) ∈ Ω(nk ).
Lösung:
Wdh.:
f ∈ O(g) ⇔ ∃n0 , c : ∀n > n0 : f (n) 6 c · g(n)
f ∈ Ω(g) ⇔ g ∈ O(f )
f ∈ Θ(g) ⇔ f ∈ O(g) ∧ f ∈ Ω(g)
a) 17 < 17 · 1 ∀n
b) n · (n − 1)/2 = n2 /2 − n/2 < n2 = 1 · n2
∀n > 0
c) n0 := 10 : für n > n0 ist 10n2 6 n3 = 1 · n3
Pn
Pn
d) O: k=1 k m 6 k=1 nm 6 n · nm 6 nm+1
Pn
Pn
Pn
Ω : k=1 k m > k=n/2 k m > k=n/2 (n/2)m > n/2 · (n/2)m > 2−m−1 · nm+1 ,
setze also c := 2−(m+1) .
e) Sei p(n) = ak · nk + . . . + a0 .
Wähle n0 :=
2
Pk−1
i=0
|ai |
|ak |
Dann ist
ak · nk > |ak | · n · nk−1 > 2
k−1
X
i=0
|ai |nk−1 > 2
k−1
X
i=0
k−1
X
|ai |ni > 2
ai ni Damit ist aber
k−1
1
X
ai ni 6 · ak nk
2
i=0
und somit
k−1
1
X
p(n) > ak nk − ai ni > · ak nk
2
i=0
Wähle also c := 21 ak .
i=0
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 10
Aufgabe 9. (7 Punkte)
Gegeben sei der folgende Graph:
2
1
5
4
3
6
7
Bestimmen Sie die starken Zusammenhangskomponenten und geben Sie eine topologische Sortierung des
reduzierten Graphen an. Warum gibt es stets eine solche?
Lösung:
2
1
5
4
3
6
7
Referenzknoten der am weitesten links stehenden Komponente ist Knoten 1. Topologische Sortierung ist
z.B.: 6,5,7,1,4
Die Topologische Sortierung existiert immer, da die Reduktion einen kreisfreien Graphen erzeugt.
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 11
Aufgabe 10. (5 Punkte)
Sei in einem bipartiten Graphen G ein Matching M gegeben, das alle Knoten aus G überdeckt. Betrachten
Sie den Graphen G0 , der sich aus G durch Entfernen aller Kanten ergibt, die nicht in M sind.
a) Welchen Grad haben die Knoten in G0 ?
b) Welche Struktur hat die Adjazenzmatrix von G0 ?
Lösung:
a) 1
b) Da G bipartit war und ein Matching existiert, das alle Knoten aus G überdeckt, müssen beide
Komponenten von G gleich großsein. Nach
geeigneter Umnummerierung der Knoten hat die Adja0 Pt
zenzmatrix dann die Struktur:
wobei P eine Permutationsmatrix ist, d.h. eine Matrix,
P 0
bei der in jeder Zeile und jeder Spalte genau eine 1 steht.
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 12
Aufgabe 11. (4 Punkte)
Zeigen Sie, dass in einfachen Graphen G = (V, E) gilt: log |E| ∈ O(log |V |)
Lösung:
In einem einfachen Graphen gibt es zwischen je zwei Knoten höchstens eine Kante (und pro Knoten
höchstens eine Schleife). Damit ist |E| 6 |V |2 und somit log |E| 6 2 log |V |. Wähle also c = 2.
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 13
Aufgabe 12. (5 Punkte)
Wie sieht die Union-Find-Datenstruktur aus, die bei Union durch Mengenverschmelzung entsteht, wenn
auf der Menge {1, 2, . . . , 6} die Operationen A := 1 ∪ 2, B := 3 ∪ 4, C := B ∪ 6, D := A ∪ C ausgeführt
werden?
Lösung:
D 5
5 1
1
2
3
4
1 2 3 4 5 6
6
5
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 14
Aufgabe 13. (8 Punkte)
Zeigen Sie, dass man das ungewichtete bipartite Matching-Problem mit einem Netzwerkfluss-Algorithmus
lösen kann, indem man ein geeignetes Netzwerk konstruiert.
Lösung:
˙ E) der bipatite Graph. Füge eine Quelle s und eine Senke t hinzu, sowie die Kanten
Sei G = (A∪B,
(s, a) ∀a ∈ A und (b, t) ∀b ∈ B. Richte alle Kanten zwischen A und B von A nach B und gib allen Kanten
Kapazität 1. Bestimme über augmentierende Pfade einen maximalen (ganzzahligen!) Fluss f in diesem
Netzwerk.
Behauptung: Die von A nach B führenden Kanten mit f (e) = 1 bilden ein maximales Matching in G.
1. Sie bilden ein Matching: Jeder Knoten aus A ∪ B hat Indegree 1 oder Outdegree 1. D.h. maximal
eine Flusseinheit kann ihn passieren. Damit kann aber nur eine der ausgehenden bzw. eingehenden
Kanten Fluss tragen. Offensichtlich ist die Grösse des Flusses gleich der Zahl der A → B-Kanten
mit Flusswert 1.
2. Es gibt einen Fluss, dessen Größe der eines maximalen Matchings entspricht. Seien M die Kanten
eines maximalen Matchings. Setze f ((a, b)) := 1 für (a, b) ∈ M sowie f (s, a) = f (b, t) = 1. Damit
ist in allen Knoten die Flusserhaltungsbedingung erfüllt.
Musterlösungen zur Klausur Informatik III – WS 02/03
Seite 15
Aufgabe 14. (12 Punkte)
Betrachten Sie das sogenannte Damenproblem: Auf einem n × n-Feld sind n Damen so zu platzieren, dass
sie sich nicht gegenseitig bedrohen. Eine Dame bedroht alle Felder in der gleichen Zeile, Spalte und in
den Diagonalen. Eine Dame in Feld (4, 4) bedroht also alle Felder der Spalte 4, Zeile 4 und alle Felder
(4 + i, 4 + i) und (4 + i, 4 − i) mit i ∈ Z \ {0}.
Da in jeder Zeile höchstens eine Dame platziert werden kann, lässt sich eine Lösung als n-Tupel
(D1 , D2 , . . . , Dn ) ausdrücken, wobei Di die Position (Spalte) der Dame in der i-ten Zeile angibt.
Wir beschränken uns in dieser Aufgabe auf n = 4. Der Aufruf PlatziereDame(1) der folgenden rekursiven Prozedur führt dann ein Backtracking durch:
PlatziereDame(i)
1: if i = 5 then
2:
Stellung ausgeben
3:
HALT
4: end if
5: for j := 1 to 4 do
6:
Di := j {platziere i-te Dame in Spalte j}
7:
if keine Bedrohung then
8:
PlatziereDame(i + 1)
9:
end if
10: end for
a) Konstruieren Sie den von der rekursiven Prozedur tatsächlich durchlaufenen Teil des zugehörigen
Suchbaums.
b) Wie oft wird überprüft, ob eine gegebene Platzierung eine Bedrohung“ ist?
”
Lösung:
D1
1
D2
3
D3
2
D2
4
D3
2
D4
4
D3
1
D4
3
a)
b) 26 mal.
Herunterladen