Sie sind auf Seite 1von 14

Aufgabe 1: Komplexit

at
a) Zeigen Sie nur mittels der Definition:
3n3 2n2 + 4 = O(n3 )
b) Analysieren Sie die Laufzeitkomplexitat (in O(?)) des folgenden Programms
und begr
unden Sie Ihre Aussage!
void f(int w,int h,double[][] m)
{
int i,j;
double res=0;
for(i=0; i<w; i++)
for(j=0; j<h; j++)
{
res+=m[i][j];
}
return res;
}
c) Ein K
unstler malt eine Serie von Bildern. Auf dem i-ten Bild der Serie sind
jeweils 3i + 2 Sterne zu sehen. Geben Sie die Komplexitat der Gesamtzahl
der Sterne (in O(?)) an, wenn es n Bilder gibt!

Aufgabe 2: Lineare Datenstrukturen

a) Uber
welche Operationen verf
ugt der ADT Stack? Geben Sie die Laufzeiten der Operationen an, wenn der ADT durch ein Feld (Array) implementiert wird!
b) Empfehlen Sie eine Implementierung f
ur einen Stack, wenn folgende Gegebenheiten vorliegen:
Es k
onnen dynamisch kleine Blocke von Speicher angefordert werden,
der Stack kann potentiell beliebig gro werden,
auch andere Datenstrukturen benotigen evtl. viel Speicher,
es gibt keinen externen Speicher.
c) Beschreiben Sie kurz eine Implementierung f
ur einen Stack, wenn folgende
Gegebenheiten vorliegen:
Es k
onnen dynamisch groe Blocke von Speicher angefordert werden,
der Stack kann potentiell beliebig gro werden,
die Speicheranforderung ist sehr aufwandig (sollte also selten geschehen),
auch andere Datenstrukturen benotigen evtl. viel Speicher,
es gibt keinen externen Speicher.

Aufgabe 3: B
aume
a) Geben Sie zu folgendem binaren Baum die Durchlaufe in Stufen-, Pra-,
Post- und symmetrischer Ordnung (=inorder) an!
A
B

G
H

L
I

J
K

b) Jemand schl
agt folgende Sequentialisierung f
ur binare Baume vor: Der
Baum werde in Stufenordnung ausgegeben, dabei erhalte jeder Knoten
eine zus
atzliche Information:
0 falls er ein Blatt ist,
1 falls er nur einen linken direkten Nachfolger hat,
2 falls er nur einen rechten direkten Nachfolger hat,
3 falls er beide direkten Nachfolger hat.
Rekonstruieren Sie den Baum mit der Darstellung
A B C D E F G J H I K
3 1 3 2 0 2 3 2 0 0 0
c) Eine Sequenz aus Elementen von {0, 1, 2, 3} kann nach b) einen binaren
Baum (ohne Knoteninformationen) codieren. Stellt jede solche Sequenz
einen bin
aren Baum dar? (Wenn ja, begr
unden Sie, wenn nicht, geben Sie
ein Gegenbeispiel an!) Ist eine solche Codierung also optimal oder konnte
es bessere (= k
urzere) geben?

Aufgabe 4: Heaps
a) Definieren Sie, wann ein Feld (array) die Heap-Eigenschaft hat!
b) Erstellen Sie nach dem aus der Vorlesung bekannten Verfahren einen MaxHeap durch Einf
ugen der folgenden Elemente:
23 15 12 41 8 1 45 13
(Sie brauchen nur den resultierenden Heap angeben.) Entfernen Sie nun
die Wurzel und rekonstruieren Sie den Heap!
c) Gegeben seien n Zahlen. Die Aufgabe sei, hiervon die k < n groten zu
bestimmen. Eine offensichtliche Losung besteht darin, das Feld zu sortieren (dies dauert meist bestenfalls O(n log n)). Entwickeln Sie eine Losung,
die mittels eines Heaps in O(k log n) lauft!

Aufgabe 5: Hashing
a) Gegeben seien folgende Schl
ussel:
titan, rhea, iapetus, dione, tethys,
enceladus, mimas, hyperion, phoebe, janus
Tragen Sie diese Schl
ussel in eine Hashtabelle der Lange 13 ein, verwenden
Sie hierzu Hashing mit linearem Sondieren und die Lange des Schl
usselwortes als Hashfunktion!
b) Berechnen Sie die mittlere Anzahl der Tabellenzugriffe f
ur die erfolgreiche
Suche!
Sei auerdem f
ur jeden Schl
ussel k c(k) die Anzahl aller Schl
ussel mit
identischem Hashwert (inklusive des Schl
ussels k selbst). Die mittlere
Kollisionszahl sei f
ur n Schl
ussel
n

1X
c(ki )
n i=1
Berechnen Sie die mittlere Kollisionszahl der Hashfunktion.
c) Erkl
aren Sie, warum die mittlere Kollisionszahl in b) kleiner als die Zugriffszahl ist!

Aufgabe 6: Graphen
Gegeben sei der Graph G = (V, E) mit V = {A, B, C, D, E, F, H} und

A
E
A
B
E: F
D
E
D
E
H

B
A
F
C
B
C
D
F
H
F

w
5
8
3
2
4
7
12
1
15
18

a) Zeichnen Sie G als ungerichteten Graphen!


b) Interpretieren Sie w jeweils als Kantengewicht. Berechnen Sie einen minimal spannenden Baum! Welches gesamte Kantengewicht hat er?
c) Zeichnen Sie G als gerichteten Graphen (die Knotenreihenfolge in der Tabelle bestimmt die Richtung)! Geben Sie eine topologische Sortierung des
Graphen an!

Aufgabe 7: Sortieren
a)

Wenn ich meine CD-Sammlung sortiere, gehe ich folgendermaen


vor: Ich nehme alle CDs aus dem Regal und lege sie auf den Boden.
Dann nehme ich iregndeine CD und stelle sie in das Regal. Dann
w
ahle ich die n
achste CD aus; geh
ort sie vor die bereits dort stehende,
f
uge ich sie dort ein, sonst wird sie am Schluss platziert. F
ur die
n
achste CD wird nun erneut der richtige Platz gesucht, dann werden
die CDs entsprechend aufger
uckt und diese dort eingef
ugt. So suche
ich f
ur jede folgende CD ihren Platz im Regal und f
uge sie dort ein.
Welches Verfahren wird hier beschrieben und welche Laufzeitkomplexitat
hat es? Begr
unden Sie! Gehen Sie davon aus, dass die CDs im Regal feste Pl
atze haben, um eine CD in der Mitte einzuf
ugen, m
ussen also alle
folgenden nacheinander aufger
uckt werden.

b) Erkl
aren Sie kurz, warum Mergesort eine Laufzeitkomplexitat von O(n log n)
hat!
c) Eine Datenquelle liefert eine Folge von mehreren Millionen 8-Bit-Zahlen.

Nach Ubertragung
der gesamten Sequenz soll diese sortiert ausgegeben
werden.
Beschreiben Sie ein Verfahren, das diese Aufgabe in O(n) lost (mit n als
Anzahl der eingegebenen Zahlen)!

Aufgabe 1
a) Es gilt f (n) O(g(n)) c > 0, n0 1 : n n0 : f (n) c g(n)
(1)
Setze c := 5, n0 = 1 Dann gilt: 3n3 5n3 2n2 + 4 0 2n3 2n2 4 ist
immer erf
ullt.
(1)
Aufgabenteil a) Punkte gesamt: (2)
b) Das Programm besteht aus zwei unabhangigen Schleifen.
(1)
Daher gilt:
w1
X h1
X

1=

i=0 j=0

w1
X

h = w h O(w h)

i=0

(2)
Aufgabenteil b) Punkte gesamt: (3)
c) Die Gesamtzahl ist:
n
X
n(n + 1)
i) + 2n = 3
+ 2n
(3i + 2) = 3(
2
i=1
i=1

n
X

(2)
O(3 n(n+1)
) = O(n2 )
2
(1)
Aufgabenteil c) Punkte gesamt: (3)
Aufgabe insgesamt: (8)
Aufgabe 2
a)
Aufgabenteil a) Punkte gesamt: (2)
Top()
push(x)
pop()
empty()

:Liefert oberstes Element des Stacks (0.5)


: F
ugt x oben auf dem Stack ein () (0.5)
: Entfernt das oberste Element und liefert es zur
uck. (0.5)
: liefert true, falls der Stack leer ist. (0.5)

Die Laufzeiten sind immer O(1)


b)
Aufgabenteil b) Punkte gesamt: (4)

Zu empfehlen: Verkettete Listen.(2) - Sie wird dynamisch durch kleine Speicherbl


ocke vergr
oert.(0.5) - Kann beliebig vergroert werden.(0.5) - braucht nur
soviel Speicher, wie tats
achlich belegt wird. (0.5) - Nicht extern. (0.5)
c)
Aufgabenteil c) Punkte gesamt: (4)
Verkettete Liste von Arrays fester Groe.(2) - Wird dynamisch vergroert. (0.5)
- Kann beliebig wachsen.(0.5) - Die Seitengroe kann so ausbalanciert werden,
dass Speicheranforderung selten ist.(0.5) - Die Seitengroe kann mit der benotigten Gr
oe ausbalanciert werden. (0.5)
Aufgabe insgesamt: (10)
Aufgabe 3
a) Stufenordnung: A B C D E F G L J H I K;
Pr
aordnung: A B D G H I C E L F J K;
Postordnung: H I G D B L E K J F C A;
Symmetrische Ordnung: H G I D B A L E C K J F.
(0.5)
Aufgabenteil a) Punkte gesamt: (2)
b)

Aufgabenteil b) Punkte gesamt: (4)


c) Nein, nicht jede solche Sequenz ein binare Baum darstellt. Bei einem Anfang mit 0, wird vorausgesetzt, dass die Wurzel ein Blatt ist. Wenn es aber
mehrere Knoten in dem Baum sind, werden die Eigenschaften nicht mehr eingehalten. Die Codierung ist nicht optimal, weil es mehr mogliche Codierungen
als B
aume gibt.
Aufgabenteil c) Punkte gesamt: (4)

Aufgabe insgesamt: (10)


Aufgabe 4
a) Ein Feld hat die Heap-Eigenschaft, falls gilt:
a[i] < a[2i + 1]
und
a[i] < a[2i + 2]
bzgl. einer Halbordnung <.
(4)
Alternativ : Falls der durch das Feld dargestellte fast vollstandige Binarbaum
monoton auf jedem Pfad von der Wurzel zu einem Blatt ist. (4)
Aufgabenteil a) Punkte gesamt: (4)
b)

(2)

(1)
Aufgabenteil b) Punkte gesamt: (3)
c) (1) Erstelle einen Max-Heap aus den n Zahlen. Laut Vorlesung geht das
in O(n).
(2) Entferne k mal die Wurzel und rekonstruiere je den Heap (per SiftUp). Das
dauert K.O(logn) = O(k)
Aufgabenteil c) Punkte gesamt: (3)
Aufgabe insgesamt: (10)

Aufgabe 5
a)
h()
4
5
6
7
8
9
10
11
12
0!!
ti
5
titan
rh
4
rhea titan
ia
7
rhea titan
iapet
di
5
rhea titan dione iapet
te
6
rhea titan dione iapet tethys
en
9
rhea titan dione iapet tethys encelad
mi
5
rhea titan dione iapet tethys encelad mimas
hy
8
rhea titan dione iapet tethys encelad mimas hyper
ph
6
rhea titan dione iapet thetys encelad mimas hyper phoebe
ja
5
rhea titan dione iapet thetys encelad mimas hyper phoebe janus
b)
Mittlere Suchzeit f
ur jedes Wort
titan rhea iapetus dione tethys enceladus mimas hyperion phoebe janus
1
1
1
2
3
1
5
4
7
9
Die mittlere Anzahl an Tabellenzugriffen ist dann
1+1+1+2+3+1+5+4+7+9
= 3.4
10
k
titan rhea iapetus dione tethys
c(k)
4
1
1
4
2
Daraus ergibt sich die mittlere Kollisionszahl

enceladus
1

mimas
4

hyperion
1

4+1+1+4+2+1+4+1+2+4
= 2.4
10
c) Die mittlere Kollisionszahl gibt zwar an wieviele Kollisionen durch gleiche
Hashwerte entstehen, jedoch entstehen beim linearen Sondieren weitere Kollisionen wodurch die Suchzeit verl/angert wird (ein Extremes Beispiel hierf/
ur
w/
are z.B. 12 W/
orter mit den Hash-Werten von 1-12 und dann ein dreizehntes
Wort mit dem Hashwert 1. Dieses w/
urde beim linearen Sondieren zu 12 Kollisionen f/
uhren jedoch gab es nur 1 weiteres Wort mit dem selben Hashwert.)
Aufgabe 6
a)

phoebe
2

janus
4

0.5 f
ur 1 3 falsche Kanten
1.0 f
ur 3 6 falsche Kanten
2.0 sonst
Aufgabenteil a) Punkte gesamt: (2)
b)

Zeichnung (1)
Baum (1)
X

: 3142815 = 33
Gewicht (1)
Aufgabenteil b) Punkte gesamt: (3)

c)
12

(1)

(2)
Aufgabenteil c) Punkte gesamt: (3)
Aufgabe insgesamt: (8 oder 10)
Aufgabe 7
a) Da in dem Verfahren direkt eingef
ugt wird und hierzu die CDs aufger
uckt
werden, handelt es sich um Sortieren durch direktes Einf
ugen (straight insertion
sort).
(2)
Aufgabenteil a) Punkte gesamt: (2)
b) Mergesort unterteilt die zu sortierende Folge rekursiv,bis sich einelementige Listen ergeben.
(1)
Diese werden dann je paarweise zu sortierten Listen zusammengefasst, dies wird

(1)
rekursiv fortgesetzt , bis schlielich die gesamte Liste sortiert ist. Auf jeder Stufe
werden so max. n Elemente bewegt, es gibt log n Stufen,
(1)
also insgesamt O(nlogn).
Aufgabenteil b) Punkte gesamt: (3)
c) Counting-Sort: Lege 28 = 256 Zahler an, wie oft das Element i auftritt.
Gib dann das i-Element jeweils a[i]-fach aus. Alternativ: Radixsort
Aufgabenteil c) Punkte gesamt: (3)
Aufgabe insgesamt: (8)

14