Klausur zur Vorlesung „Algorithmen und - FB2

Werbung
Klausur zur Vorlesung „Algorithmen und Datenstrukturen SS 10“
Dozent: Andreas Berndt
Name: ___________________________________
Matr.-Nr.: ____________________
Klausur zur Vorlesung „Algorithmen und
Datenstrukturen“
Die Dauer der Klausur beträgt 120 Minuten.
Erlaubte Hilfsmittel: Ein selbst handschriftlich beschriebenes DIN A4 Blatt, das
komplette Skript zur Vorlesung ohne Notizen und Markierungen
Alle anderen Hilfsmittel (Taschenrechner, Mitstudenten/ Mitstudentinnen, etc.) sind
verboten und führen zum sofortigen Abgeben der Klausur und einer Wertung mit
„Durchgefallen“
Beschreiben Sie bitte Vorder- und Rückseite der Klausurblätter. Falls der Platz nicht
ausreicht, darf eigenes Papier verwendet werden. Beschriften Sie es dann ebenfalls
mit Name und Matrikelnummer. Benutzen Sie bitte einen Kugelschreiber/ Füller,
Ausführungen mit Bleistift werden nicht gewertet.
Gesamtpunktzahl: 240 Punkte
Zum Bestehen notwendige Punktzahl: 120 Punkte
Erreichte Punktzahl: _______________
Note:_________
1
Klausur zur Vorlesung „Algorithmen und Datenstrukturen SS 10“
Dozent: Andreas Berndt
Name: ___________________________________
Matr.-Nr.: ____________________
Aufgabe 1 (40 Punkte):
a) Wenn ein Algorithmus bei gleichen Startbedingungen unterschiedliche Endergebnisse
hat, besitzt er:
1) Determiniertheit
2) Keine Determiniertheit
Lösung: 2)
b) Worauf ist bei der Indexzählung eines nicht-assoziativen Arrays zu achten (Stichwort
Startwert/ Endwert)?
Das der Zähler weder unter 0 noch größer als Länge des Arrays -1 läuft, da sonst ein
Buffer-Overflow-Error entsteht.
c) Was bedeutet die Aussage „Der Algorithmus terminiert.“
Das er irgendwann endet.
d) Nennen Sie Vor- und Nachteile von doppelt verketteten Listen.
Siehe Skript.
e) Wie lautet das Speicherprinzip einer Warteschlange und warum heißt es so?
FIFO: First in First out, da in einer Warteschlange die Werte „hinten“ eingereiht und in der
Einfügereihenfolge „vorne“ wieder ausgegeben werden.
f) Nennen Sie mindestens zwei Anwendungsfälle für eine Warteschlange.
–
–
Druckerwarteschlange
Netzwerkwarteschlange
g) Auf welche beiden prinzipiellen Fähigkeiten eines Computers wird ein Problem bei der
Implementierung in eine Programmiersprache heruntergebrochen ?
–
–
Zählen
Entscheiden
h) Nennen Sie mindestes drei elementare Datentypen
Integer, Float, Char
2
Klausur zur Vorlesung „Algorithmen und Datenstrukturen SS 10“
Dozent: Andreas Berndt
Name: ___________________________________
Matr.-Nr.: ____________________
Aufgabe 2 (40 Punkte):
a) Erstellen Sie aus folgenden Werten binäre Suchbäume mit der <-Ordnung:
1)
45, 92, 12, 9, 89, 4, 25, 38, 1, 2
2)
9, 4, 1, 8, 5, 2, 7, 6, 3
3)
74, 35, 22, 23, 21, 6, 4, 1
3
Klausur zur Vorlesung „Algorithmen und Datenstrukturen SS 10“
Dozent: Andreas Berndt
Name: ___________________________________
Matr.-Nr.: ____________________
b) Löschen Sie aus dem dritten Baum:
–
–
–
74
6
22
Nach welchem Verfahren haben Sie gelöscht?
Hier gibt es je nach Methode mehrere Möglichkeiten, hier eine:
c) Wie lauten die beiden Verfahren, nach denen im Binärbaum gelöscht wird, wie
funktionieren sie und warum bleibt dann trotzdem die Ordnung des Baumes erhalten ?
Löschen mit „Kleinster Nachfolger der größeren Nachfolger“ oder „Größter Nachfolger der
kleineren Nachfolger“. Dadurch, daß der jeweilige Nachfolger immer genau der
nächstgrößere oder nächstkleinere ist und somit alle anderen Nachfolger der gewählten
Seite kleiner oder größer sind, bleibt die Ordnung erhalten.
d) Kann ein Baum einen Zyklus haben ? Begründen Sie Ihre Antwort.
Nein, da er sonst laut Definition kein Baum mehr ist (Bäume sind zyklusfreie Graphen)
e) Was bedeutet „Höhe“ bei Bäumen in der Informatik?
Die Tiefe des tiefsten Blattes eines Baumes ist die Höhe.
f) Was passiert, wenn Sie in einen binären Suchbaum mit <-Ordnung auf
Niveaunachbarebene eine vorsortierte Liste eintragen ?
Er entartet.
g) Wie können Sie das Problem aus Aufgabe f) garantiert vermeiden ?
Wenn stattdessen ein AVL-Baum verwendet wird.
4
Klausur zur Vorlesung „Algorithmen und Datenstrukturen SS 10“
Dozent: Andreas Berndt
Name: ___________________________________
Matr.-Nr.: ____________________
Aufgabe 3 (50 Punkte):
a) Ist der nachfolgende Baum ein AVL-Baum? Begründen Sie.
20
8
3
25
15
13
14
Nein, da an Knoten 15 das AVL-Kriterium verletzt ist.
b) Wenn es kein AVL-Baum ist, was müssen Sie tun, um daraus einen AVL-Baum zu
machen (kurze Beschreibung und Durchführung)?
Es muß gemäß der AVL-Regeln eine Rotation an Knoten 15 durchgeführt werden. Es ist
eine Rechts-Links-Rotation (Doppelrotation), da der Fehler von der potentiellen neuen
Wurzel 13 aus gesehen im inneren Teilbaum liegt (14).
Danach ist immer noch an 20 ein Fehler, dieser liegt von der potentiellen neuen Wurzel 8
aus gesehen im inneren Teilbaum, also wieder ein Doppelrotation:
5
Klausur zur Vorlesung „Algorithmen und Datenstrukturen SS 10“
Dozent: Andreas Berndt
Name: ___________________________________
Matr.-Nr.: ____________________
c) Fügen Sie an den Baum (sofern es jetzt ein AVL-Baum ist) folgende Werte an und
garantieren Sie, dass der Baum nach dem Einfügen weiterhin ein AVL-Baum ist:
90, 84, 1, 70, 32
d) Löschen Sie nun die Werte 20, 8 und 32 aus dem Baum. Garantieren Sie, dass der
Baum weiterhin ein AVL-Baum ist. Wählen Sie beim Löschen immer das größte linke Kind.
e) Traversieren Sie den AVL-Baum aus Aufgabe d) in In-Order.
1 – 3 – 13 – 14 – 15 – 25 – 70 – 84 – 90
6
Klausur zur Vorlesung „Algorithmen und Datenstrukturen SS 10“
Dozent: Andreas Berndt
Name: ___________________________________
Matr.-Nr.: ____________________
Aufgabe 4 (60 Punkte):
a) Was genau bezeichnet die Variable k bei B-Bäumen mit Klassendefinition ?
Die Variable k bestimmt die Anzahl der Einträge im Knoten und der Kinder in der BBaumdefinition:
Min. Einträge: k
Max. Einträge: 2k
Min. Kinder: k + 1
Max. Kinder: 2k + 1
b) Wie können Sie aus der k-Klassendefinition in die m/n-Definition „umrechnen“ bzw
„zurückrechnen“ ?
m/n beschreibt die Anzahl der Kinder, also ist k + 1 = m und 2k + 1 = n
c)
1 )Wie lautet die m/n-Definition für folgende k-Klassendefinierten Bäume ?
– k=1
m/n = 2/3
– k=5
m/n = 6/11
– k = 23
m/n = 24/47
2) Wie lautet die k-Klassendefinition für folgende m/n-definierten Bäume (wenn es sie gibt)
– m/n = 4/7
k=3
– m/n = 11/21
k = 10
– m/n = 105/211
kein k passt
– m/n = 99 / 197
k = 98
d) Erzeugen Sie einen B-Baum mit k=1 aus folgenden Werten:
86, 12, 7, 34, 74, 9, 14, 66, 42, 10, 99, 25
7
Klausur zur Vorlesung „Algorithmen und Datenstrukturen SS 10“
Dozent: Andreas Berndt
Name: ___________________________________
Matr.-Nr.: ____________________
Aufgabe 5 (50 Punkte):
a) Zu welcher Komplexitätsklasse in O-Notation gehört der folgende Algorithmus?
Begründen Sie.
(A ist das Eingabearray, n ist die Länge des Eingabearrays, der Algorithmus durchsucht
ein Array nach doppelten Einträgen)
function suche_doppelten_wert (int A[]) {
int n = A.length;
boolean wert_doppelt = false;
for (i = 0; i < n; i++) {
int testwert = A[i];
for (j = n - 1; j >= 0; j--) {
if (A[j] == testwert) {
wert_doppelt = true;
}
}
}
}
O(n²) – Die beiden verschachtelten Schleifen sind beide abhängig von n. Da sonst nichts
die Komplexität maßgeblich beeinflusst, ist O(n²) die Komplexitätsklasse.
b) Was ist der Best-Case, was ist der Worst-Case für Aufgabe a) ?
Worst-Case ist dann, wenn das Array nur aus den gleichen Werten besteht, da dann der
Befehl in der Abfrage in der inneren Schleife jedesmal ausgeführt wird.
Best-Case ist dann, wenn alle Werte des Arrays verschieden sind, da dann der Befehl in
der Abfrage in der inneren Schleife nie ausgeführt wird.
Alle anderen Befehle werden immer ausgeführt.
c) Listen Sie die konstanten, von n unabhängigen Befehle aus a) auf.
int n = A.length;
boolean wert_doppelt = false;
i = 0
ACHTUNG! Im Gegensatz zur Vorlesung diesmal haben wir in der letzen Vorlesung den
Befehl A.length NICHT mitgezählt! Deshalb sind es hier nur diese drei Befehle, in unserer
Vorlesung wären es vier Befehler gewesen.
d) Welche der vier folgenden Komplexitätsanalysen beschreibt den Algorithmus aus a) im
Worst-Case ?
1)
2)
3)
4)
5n² + 5n + 3
4n² + 5n + 3
5n² + 4n + 3
4n² + 4n + 3
8
Klausur zur Vorlesung „Algorithmen und Datenstrukturen SS 10“
Dozent: Andreas Berndt
Name: ___________________________________
Matr.-Nr.: ____________________
1) ist die Lösung, beachten Sie aber bitte den Hinweis aus c) In unserer Vorlesung wäre
es 5n² + 5n + 4 gewesen.
9
Herunterladen