Datenstrukturen und Algorithmen 3. Klausur SS 2000 L¨osungsans

Werbung
U NIVERSIT ÄT-G ESAMTHOCHSCHULE PADERBORN
FACHBEREICH 17 (M ATHEMATIK –I NFORMATIK )
Datenstrukturen und Algorithmen
3. Klausur SS 2000
Lösungsansätze
Freitag, 9. März 2000
Name, Vorname: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Matrikelnummer: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Studiengang: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bitte Zutreffendes ankreuzen:
Vordiplom:
Schein:
Bitte sorgfältig durchlesen und beachten!
Legen Sie Ihren Studentenausweis auf den Tisch.
Prüfen Sie die Vollständigkeit Ihres Klausurexemplares (Deckblatt, 6 Aufgaben).
Schreiben Sie zu Beginn der Klausur auf das Deckblatt und jede weitere Seite
DEUTLICH LESBAR Ihren Namen, Ihren Vornamen und Ihre Matrikelnummer.
Blätter ohne diese Angaben werden nicht gewertet!
Für Vordiplomkandidaten: Wer nicht ordnungsgemäß angemeldet ist oder hätte wissen müssen,
daß sie/er nicht zugelassen ist, hat keinen Anspruch auf Anrechnung des Klausurergebnisses.
Verwenden Sie keinen Rotstift, keinen Bleistift und kein eigenes Konzeptpapier.
Benutzen Sie nur die zur Verfügung gestellten Blätter. Sollten Sie zusätzliche Blätter benötigen, so
wenden Sie sich bitte an die Aufsicht.
Werden zu einer Aufgabe mehrere Lösungen angegeben, so gilt die Aufgabe als NICHT gelöst.
Als Hilfsmittel ist nur ein zweiseitig handbeschriebenes DIN A4 Blatt erlaubt.
Täuschungsversuche können zum Nichtbestehen der Klausur führen.
Aufgabe
erreichbare Punkte
1
5
2
8
3
6
erreichte Punkte
1
4
8
5
6
6
5
38
Aufgabe 1
Simulieren Sie die Prozedur H EAPIFY () (siehe unten) auf folgender Eingabe (5P):
A[1]
8
A[2]
7
H EAPIFY ( )
Für
HEAPIFY (
A[3]
40
A[4]
33
A[5]
3
A[6]
20
A[7]
1
: HEAPIFY ( )
)
Stop;
Falls
)(
"!#1$( %& ' %&$ ' 1(
sonst: Sei so, dass -, '
(falls '
-,.$ ' 0/ , falls '
falls $ $
1
Stop;
falls $ $ ' :
Vertausche $ und ' ;
HEAPIFY ( 4' );
1(
5(
falls $ $ '
2 : Vertausche $ 1 und
( '
HEAPIFY ( 4'
).
+* 2 0/
3
;
Aufgabe 2
Gegeben sei ein unsortiertes Array 6,1 in dem Werte abgespeichert sind. Zusätzlich wissen wir,
dass jeder Wert maximal Positionen von der Position entfernt ist, an der er nach einer (aufsteigenden)
Sortierung stehen muss.
a) Modifizieren Sie Bubblesort so, dass dieses Zusatzwissen benutzt wird. (1P)
b) Zeigen Sie dann mittels Induktion über die Anzahl der Vertauschungen, dass die Distanz eines Wertes
zu seiner Position niemals den Wert überschreitet, wenn nur Vertauschungen von benachbarten
(
(
Elementen 7. und 7
2 mit 7. 7 2 vorgenommen werden. (4P)
(
Achtung: Vertauschung bedeutet hier natürlich, dass 78 und 7
(
78 $ 7 . Sonst führt Bubblesort keine Vertauschung durch.
2
nur vertauscht werden, falls
Lösungsidee: Induktionsanfang (noch keine Vertauschung) folgt direkt aus der Vorraussetzung für
das Array .
Induktionsschritt: Man hat ein Array gegeben, in dem kein Element mehr als von seiner letzendlichen Position entfernt ist. (Induktionsvorraussetzung)
(
(
Angenommen 9, 7. und :;, 7
werden vertauscht, und danach steht auf Position 7 und damit mehr als Positionen von seiner eigentlich Position im sortierten Array entfernt. D.h. das
im Zielarray an die Position 7$< oder davor gehört. Wo gehört : dann hin? Da :9=> ist gehört
: im Zielarray noch vor . Dann erfüllte
( das Array aber schon vor der Vertauschung die geforderte
Eigenschaft nicht, da : ja an Position 7
stand. Widerspruch.
c) Zeigen Sie, dass die Anzahl der Inversionen in Array maximal ?A@BC"3 ist (eine Inversion ist ein
Paar @ B7C3 mit =67 und $ 7. ). Sie dürfen dazu Aufgabenteil b) benutzen. (3P)
Lösungsidee: (ohne Benutzung von b)) Ein Element
Elemente hinter sich stehen haben.
an Position
7
kann höchstens
'.
kleinere
Beweis: Angenommen hat mehr als '. Elemente hinter sich stehen, die kleiner sind als . Dasjenige
dieser Elemente, dass am weitesten rechts steht nennen wir : . Sei 78D die Position an der steht und
7FE die Position an der : steht. Dann gilt 7GEHI7#D ' , da ja mindestens ' Elemente zwischen und
2
:
stehen. Bezeichne 1D und )E die endgültigen Position von bzw. : innerhalb des Arrays. Es gilt
da : kleiner als ist. Man muß zeigen, dass entweder 1D0;7#D
oder )E ;7#E
ist.
(dann hat man einen Widerspruch)
E = D
Fallunterscheidung:
– Falls )D oder E nicht im Intervall 7GD B7#E# liegt, folgt der Widerspruch sofort.
– Gelte also 7#E )E
und )D 7#D E 7FD . Wenn man diese beiden Gleichung
addiert erhält man 7 E 7#D
'. . Oben hatten wir aber schon gesehen, dass 7 E 7#D '. größer
als ' sein muß. Also können nicht beide Gleichungen gelten.
Da also kein Element mehr als ' kleinere Elemente hinter sich stehen hat kann die Anzahl der
Inversionen nicht größer als 'C sein.
Aufgabe 3
Entwickeln Sie eine Datenstruktur (hier ist kein Pseudocode für die einzelnen Operationen verlangt!), die
die folgenden Operationen in Laufzeit ?A@ H"3 unterstützt ( ist die Anzahl der Elemente, die gerade in
der Datenstruktur gespeichert sind): (6 P)
)3 : Eine Zahl wird in die Datenstruktur eingefügt
D ELETE @ )3 : Eine Zahl , die sich bereits in der Datenstruktur befindet, wird aus der DatenI NSERT @
struktur gelöscht
F3 : Die Anzahl der Zahlen in der Datenstruktur, deren Wert zwischen ) wird zurückgegeben.
C OUNT @B1
(o.b.d.A. und
liegt
Lösungsidee: Man kann einen AVL-Baum nehmen, bei dem man sich bei jedem Knoten zusätzlich merkt
wie viele Elemente im linken und rechten Teilbaum gespeichert sind. Man muß argumentieren, dass man
diese Datenstruktur bei einem I NSERT oder D ELETE in Zeit ?A@ H"3 wieder aktualisieren kann. (Insbesondere muß man zeigen, dass man die zusätzlichen Informationen bei einer Rotation in konstanter Zeit
berechnen kann.)
C OUNT @+1 F3 kann man dann folgendermaßen implementieren. Man zählt erst wieviele Elemente kleiner
oder gleich sind. Dann zählt man wieviele Elemente kleiner oder gleich sind. Die Differenz dieser
beiden Werte liefert C OUNT @+1 F3 .
COUNT LESS OR EQUAL
@)4 3
!#""
&$ %'()
%./0%12 3 40576
if (
) return ;
return COUNT
if )
( (
else return )
LESS OR EQUAL
@ )+*-, 4 3
COUNT LESS OR EQUAL
@ 8:91;,#4 3
Aufgabe 4
<
>= :?
@ H $3 ein zusammenhängender Graph mit Knoten und mindestens Kanten und KantengeSei
wicht @ G3 für jede Kanten
. Seien weiterhin die Kantengewichte paarweise verschieden. Der unten
angegebene Algorithmus berechnet einen zweitkleinsten Spannbaum von .
@ >A
AB?
<
a) Analysieren Sie die Laufzeit des Algorithmus im ? -Kalkül. Nehmen Sie an, dass ein minimaler
3 berechnet wird. (1P)
Spannbaum in Zeit @
C D = E ?
?
Lösungsidee: Es gibt eine Schleife, die über alle Kanten läuft (
Durchläufe). Bei jedem Schleifendurchlauf wird einmal auf Zusammenhang getestet und ein MST wird berechnet. Test auf Zu3 durchgeführt werden, wird also durch die Laufzeit des MSTsammenhang kann in Zeit ?A@
Algorithmus ( @ @
3 ) dominiert. Insgesamt hat man also Laufzeit ?A@
@ 33 .
C D =F? E ?
: ?
D ?'GHC D = E ?
3
b) Beweisen Sie die Korrektheit des Algorithmus. (5P)
Lösungsidee:
<
– Der Algorithmus berechnet Gewichte für ganz viele verschiedene Spannbäume von und speichert diese in dem Feld . Man muß zeigen, dass nach dem Durchlauf der Schleife sowohl
das Gewicht eines kleinsten als auch das Gewicht eines zweitkleinsten Spannbaums enthält.
Dann wird durch die Wahl von und die Berechnung von
ein zweitkleinster Spannbaum
ausgegeben. (Da durch die paarweise verschiedenen Kantengewichte der Wert eines minimalen Spannbaums eindeutig ist enthält das Feld mit zweitkleinstem Gewicht das Gewicht eines
zweitkleinsten Spannbaums)
A
C 3 4
<
C 3 4
A ?
C 3 4
ein minimaler Spannbaum. Dann existiert eine Kante
, die nicht in
enthal– Sei
ten ist. ( hat mindestens Kanten,
aber nur > viele.)
ist auch ein minimaler
Spannbaum für den Graphen
@ ! * 3 . @ 3 enthält nach Ende der Schleife den Wert
eines minimalen Spannbaums.
<
C 3 4
= D? A
<
C
D6 3 4
C 34
< = D? A
A
<
A
ein zweitkleinster Spannbaum in . Dann enthält dieser Spannbaum eine Kante ,
– Sei
die nicht in
liegt, sonst wären beide Bäume gleich. Wenn ich diese Kante aus entferne
(
@ ! * 3 ) und einen minimalen Spannbaum berechne, sollte entweder
herauskommen, oder ein Spannbaum mit gleichem Gewicht. (sonst wäre
kein Spannbaum
mit zweitkleinstem Gewicht) Also enthält @ 3 nach dem Durchlauf der Schleife das Gewicht
eines zweitkleinsten Spannbaums.
C D6 3 4
>A
c) Finden Sie einen verbesserten Algorithmus mit Laufzeit ?A@
<
C :6 3 4
GHC@D = ? 33 . (2P)
Lösungsidee: Man kann am Anfang des Algorithmus das Gewicht eines minimalen Spannbaums
berechnen und in einfügen. Danach muß man nur noch nacheinander die Kanten von
@ ! *G3 einen MST berechnen.
entfernen und für
C 3 4
C 34
A < = D? A
>@ =H:?3 )
< A ? do
< @>=H:? !EA*G3
if < ist verbunden then
FA = Wert des MST von <
else
FA /
Sei A eine Kante,
so dass FA zweitkleinstes Gewicht im Feld < @ = D? ! A *G3
return MST @< 3
A LGORITHMUS (G RAPH
for each edge
hat
Aufgabe 5
Die folgenden Teilaufgaben geben jeweils 2 Punkte:
a) Fügen Sie hintereinander und in dieser Reihenfolge die Zahlen 13, 21, 4, 9, 25, 88, 7 per Hashing
mit Linear Probing in ein Array $ , ein! Die Hashfunktion ist dabei durch @ 13
MOD
gegeben:
A[0]
A[1]
A[2]
A[3]
A[4]
A[5]
4
A[6]
A[7]
b) Sei
eine Konstante. Bestimmen Sie das größte für das
?A@H"3
wahr wird:
0
Hinweis: Für jedes
gilt
9
2
/
C
c) Ein rekursiver Algorithmus hat die Rekursionsformel $@
C@ "3
@ G3
@ "3
@ "3
"3
Hinweis: Fall 1. des Mastertheorems.
5
. Deshalb kommt nur
'&C$@ 3
@
(
"3
in Frage.
mit
C@ G3 . Es gilt
@ 1@ "3&3
Aufgabe 6
Die folgenden Aufgaben geben pro richtige Antwort einen Punkt. Für eine falsche Antwort wird ein Punkt
abgezogen! Falls keine Antwort angekreuzt wird, so wird auch kein Punkt abgezogen. Weniger als 0 Punkte
können bei dieser Aufgabe nicht erreicht werden.
Elementen kann das -kleinste Element in ?A@
a) In einem Heap mit
Ja
3
Zeit gefunden werden.
Nein
Hinweis: Die kleinen Elemente in einem Heap können fast überall stehen.
H"3
Knoten hat im Durchschnitt ?A@
b) Ein AVL-Baum mit
Ja
Blätter.
Nein
Hinweis: Ein balancierter Baum sollte schon linear viele Blätter haben.
c)
'
24
@ "3
Hinweis: '
d)
Ja
24
Nein
'
2
'
@B'
2
3
@+) 3 -Bäume brauchen im Mittel ca. 1.44 viele Rotationen beim Einfügen.
Ja
Hinweis:
Nein
@ ) 3 -Bäume machen
überhaupt keine Rotationen.
e) Topologisches Sortieren ist ein optimales Verfahren zur Sortierung von natürlichen Zahlen.
Ja
Nein
Hinweis:Topologisches Sortieren hat nichts mit dem Sortieren von Zahlen zu tun.
6
Herunterladen