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