SS 2007
Name : ...
Matrikelnummer : ...
Studiengang/Abshluss : ...
DieKlausurbestehtausahtAufgaben.DieerreihbarePunktzahlzujederAufga-
beistimmerangegeben.DiemaximalerreihbareGesamtpunktzahlist50Punkte.
Siebestehen dieKlausur,wenn Siemindestens 25Punkte erzielen.
Benutzen Sie keinen Bleistift! Bitte shreiben Sie oben auf JEDESeite Ihren
Namen und IhreMatrikelnummer (bitte lesbar!).
Es ist lediglih ein handbeshriebener DIN-A4-Zettel als Hilfsmittel zugelassen!
Räumen Sie alles Weitere auÿer Ihrem Shreibmaterial und Ihrem Lihtbildaus-
weisvomTish.WerabshreibtODERwervonsihabshreiben läÿt,erhältdie
Endnote 5,0 (mangelhaft). Bringen Sieihre Nahbarn also niht in Shwierig-
keiten!
Shreiben SieLösungen bitte unter die Aufgabenstellung. Reiht der Platz niht
aus, so benutzen Sie die Rükseite und die beigefügten Zusatzblätter. Weitere
Blättersind bei Beadarferhältlih.
Werden zu einerAufgabe zwei Lösungen angegeben, sogiltdieAufgabe alsniht
gelöst.Entsheiden Sie sihalsoimmer für eine Lösung.
Ergebnisse, Algorithmen und Datenstrukturen aus der Vorlesung dürfen zitiert
werden.Alleweiteren Ergebnissedürfen NICHTzitiertwerdenund müssenneu
hergeleitet werden. D.h. es reiht NICHT zu sagen: Das geht gemäÿ Aufg. 42
aus den Übungen.
Siehaben bis 12:00Uhr Zeit.
Viel Erfolg !
1 2 3 4 5 6 7 8
Σ
AUFGABE 1: (4Punkte)
Bestimmen Sie mit Hilfe des Algorithmus von Prim, gestartet in Knoten
a
, den minimalenSpannbaum des folgenden Graphen. Geben Sie insbesondere die Reihenfolge an, in der die
Kanten des Spannbaums gemäÿ Algorithmusbestimmtwerden.
Reihenfolge:
(1.) (5.)
(2.) (6.)
(3.) (7.)
Wirbetrahten diefolgende Hashfunktion nah der Divisionsmethode:
h : N → {0, 1, 2, . . . , 10}
k 7→ k mod 11
Mit Hilfe von
h
soll eine Hashtabelle der Gröÿe11
gefülltwerden. Zur Kollisionsverwaltung werden einfah verkette Listen verwendet. Skizzieren Sie die resultierende Hashtabelle dieentsteht, wenn naheinander mittels
h
diefolgenden Elementeeingefügt werden:10 , 23 , 17 , 42 , 13 , 21 , 31 , 1
AUFGABE 3: (4Punkte)
Gegeben sei ein Nahrihtenalphabet
A = {a 1 , a 2 , . . . , a 8 }
mit den folgendenrelativen Häu-gkeiten:
f [ a 1 ] = 2 3 f [ a 3 ] = 10 1 f [ a 5 ] = 30 1 f [ a 7 ] = 100 1 f [a 2 ] = 10 1 f [a 4 ] = 15 1 f [a 6 ] = 50 1 f[a 8 ] = 300 1
BestimmenSie einenHuman-Code für
A
unter den gegebenen relativen Häugkeiten.Betrahten Sie den folgendenTeile-und-Herrshe (divide-and-onquer) Algorithmus.
Algo
(A, p, r)
1
n ← r − p + 1
2 if
n ≤ 2
then3 if
n = 2
then returnA[r] − A[p]
4 else return
0
5 else
6
q ← ⌊ p + 2 r ⌋
7
a ←
Algo(A, p, q)
8
b ←
Algo( A, q + 1 , r )
9 if
a > b
thenc ← a
elsec ← b
10 for
i = p, . . . , q
do11 for
j = q + 1 , . . . , r
do12
x ← A[i] − A[j ]
13 if
x > c
thenc ← x
14 return
c
a) GebenSieeineRekursionsgleihung fürdieLaufzeit
T ( n )
desAlgorithmusbeiEingabe(A, 1, n)
an, wobeiA
ein Array der Längen
bezeihnet.b) AnalysierenSiedieLaufzeitmöglihstgenauim
O
-KalkülmitHilfederIterations-oder der Substitutionsmethode. Siekönnen dabeiannehmen, dassn
eine Zweierpotenz ist.Sei
G = (V, E)
ein ungerihteter, zusammenhängender Graph. Der GraphG
heiÿt bipartit,falls sih
V
in zwei disjunkte TeilmengenV 1
,V 2
mitV = V 1 ∪ V 2
undV 1 ∩ V 2 = ∅
zerlegenlässt, sodass füralle Kanten
(u, v ) ∈ E
gilt:u ∈ V 1 ∧ v ∈ V 2
oderv ∈ V 1 ∧ u ∈ V 2 .
EinBeispieleines bipartiten Graphen istin der folgendenAbbildung dargestellt.
a) Beshreiben Sie einen Algorithmus, der bei Eingabe eines ungerihteten, zusammen-
hängendenGraphen
G
inAdjazenzlistendarstellung inZeitO(|V | + |E|)
bestimmt,obder Graph bipartitist oder niht.
EinTelekommunikationsunternehmenmöhtedenHandyempfangder
n
Anwohnereinerk
Ki-lometer langen,shnurgeraden Straÿe siherstellen. Dazu kann esentlang der Straÿe Sende-
und Empfangsmasten errihten, die die Häuser in einer Entfernung von bis zu 4 Kilometer
versorgen. Leiderstehen dieWohnhäuser entlang dieses spärlihbesiedelten Landstrihsnur
sehr vereinzelt, und das Unternehmen muss genau planen, wo die teuren Masten errihtet
werden sollen.
Wir können uns die Landstraÿe als die Streke auf dem Zahlenstrahl zwishen 0 und
k
vorstellen. Die Wohnhäuser und die Masten können dann durh Punkte auf der Streke 0
bis
k
beshrieben werden. Der Abstand zweier Punkte entspriht einfah deren Dierenz.a) Beshreiben Sie einen gierigen (greedy) Algorithmus, der bei Eingabe
( A, n, k )
in ZeitO(n log n)
dieminimaleAnzahlanMastenbestimmt,diezur vollständigenVersorgungderWohnhäuserbenötigtwerden.Dabeiist
A
einArrayderLängen
,dassdiePositionender Häuser entlang der Straÿe als Werte zwishen 0 und
k
beshreibt. Die konkretenPositionender Masten müssen jedoh niht explizit bestimmt werden.
Ein Zugfahrplan sei gegeben durh eine Menge von
n
StationenS
undm
ZugverbindungenZ ⊂ S × S
zwishen den Stationen. Eine Verbindung(u, v) ∈ Z
ist dabei beshriebendurh einen Abfahrtszeitpunkt
A(u, v)
an Stationu
und einem AnkunftszeitpunktB(u, v)
anStation
v
.Selbstverständlih giltstetsA(u, v) ≤ B(u, v)
.a) Beshreiben Sie einen Algorithmus, der mitden Methoden der dynamishen Program-
mierung (dynami program) bei Eingabe
(S, Z, A, B, s, t)
den frühsten Zeitpunkt be-stimmt, zu dem man, gestartet in
s
, die Zielstationt
erreihen kann. Ihr Algorithmus soll eine Laufzeit vonO(nm)
besitzen. Wir nehmen dabei wie im ehten Lebenan, dass dieZüge sih strikt anden Fahrplanhalten und niemals Verspätung haben.
Gesuht ist eine Datenstruktur, welhe die drei folgenden Operationen in der geforderten
Laufzeitunterstützt.ImFolgendenbezeihnet
k ∈ N
einevorKonstruktionderDatenstruktur bekannteKonstante.•
Einfügen(x)
: Eine Zahlx ∈ {1, 2, . . . , k}
wird in die Datenstruktur eingefügt. Es können Zahlen mehrfah indie Datenstruktur eingefügt werden.•
Löshen(x)
: Fallseine Zahlx ∈ {1, 2, . . . , k}
in der Datenstruktur einmal oder mehr- fah vorhanden ist,so wird eine dieserZahlen entfernt.•
Zählen( x )
: Gibt die Anzahl der Zahlen in der Datenstruktur aus, die den Wertx
haben.
Die Datenstruktur soll alledrei Operationen inLaufzeit
O(1)
unterstützen.Beshreiben Sie inwenigen kurzen Sätzen wie Ihre Datenstruktur aufgebautist und wie die
angegebenOperationenrealisiertwerden.HierbeiistkeinPseudoodegefordert.Essolljedoh