Prüfung im Fach Algorithmen und Datenstrukturen
Termin: 19.07.2003 Zeit: 120 min
Hilfsmittel: alle Prüfer: Kopp
Bewertung:
Aufgabe 1 Aufgabe 2 Aufgabe 3 Aufgabe 4 Aufgabe 5
12 Punkte 12 Punkte 6 Punkte 8 Punkte 8 Punkte
1. Sortieren durch Einfügen
Bei dem in der Vorlesung behandelten Insertion-Sort - Verfahren wird die Suche nach der Einfügeposition durch eine Divide-et-Impera Strategie wie folgt optimiert:
- Rette neues Element in „item“ und vergleiche es mit mittlerem Element der Teilliste
- Falls kleiner, rechte Teilliste um 1 Position nach rechts verschieben, neues Element auf nun freie Position setzen, wiederholen des Einfügens mit linker Teilliste
- Falls größer, wiederholen des Einfügens für rechte Teilliste
a) Durchführung des Algorithmus an folgendem Beispiel mit jeweils folgenden Angaben:
- Left, right – linke/rechte Grenze der Teilliste
- Center – Mitte der Teilliste
- Item – einzufügendes Element Start mit Teilliste 33,48,56,75
1 2 3 4 5 6 7 8 9 Erläuterung
33 48 56 75 17 27 11 81 5 left=1, center=2, right=4, item=17
b) Insertionsort vom Skript Seite 25 nach obigem Algorithmus modifizieren c) Welche Auswirkung hat die obige Methode auf die Komplexität (Anzahl
Vergleiche und Transporte) des Verfahrens
Abschrift der Prüfung. Nicht der genaue Wortlaut, aber alle Informationen sind enthalten.
2. binärer Suchbaum
a) Geben Sie den mathematischen Infix - Ausdruck für obigen Baum an b) Welche Durchlaufmethode liefert den mathematischen Postfix-Ausdruck?
Geben Sie den Postfix-Ausdruck an.
c) Erweitern Sie die Tree - Klasse aus der Vorlesung um folgende Funktionen
- Ausgabe/Rückgabe des kleinsten Schlüssels im Suchbaum
- Ausgabe aller Schlüssel absteigend sortiert
Angabe von C++ Code, keine Erweiterung der Klassendefinition, keine Prototypen 3. AVL – Baum
Verwenden Sie in dieser Aufgabe die Algorithmen aus der Vorlesung zum Löschen und Einfügen in AVL-Bäumen. Geben Sie bei den folgenden Aufgaben jeweils an:
- den Zwischenzustand nach dem Löschen
- den Endzustand nach dem Ausgleich
- welche Ausgleichsoperation benutzt wurde (welcher Fall) a) Fügen Sie den Wert 171 in den Ausgangsbaum ein
b) Löschen Sie den Wert 693 aus dem Ausgangsbaum
Abschrift der Prüfung. Nicht der genaue Wortlaut, aber alle Informationen sind enthalten.
4. B-Baum
a) Welche Höhe muss ein B-Baum der Ordnung 150 mindestens haben, um 1
Milliarde Datensätze aufnehmen zu können? Begründen Sie Ihre Antwort mit den Abschätzungen aus der Vorlesung.
b) Wie viele Schlüssel kann ein B-Baum dieser Höhe mit Ordnung 150 maximal speichern?
c) Löschen Sie in dem folgenden B-Baum der Ordnung 3 das Item mit dem Schlüssel 69. Verwenden Sie für evtl. Schlüsseltransfer den symmetrischen Vorgänger.
Geben Sie dabei die Zwischenschritte an, so dass Ihr Vorgehen nachvollziehbar wird und erläutern Sie kurz jeden Schritt.
69
37 83 99
13 55 76 82 93 101 103
5. Huffman
Es soll die Huffman-Codierung mit dem folgenden String aufgebaut werden:
D A T E N O R G A N I S A T I O N
a) Stellen Sie die Häufigkeitstabelle der Zeichen auf:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
b) Erstellen Sie daraus den Huffman-Baum. Geben Sie dabei auch Zwischenstufen an, damit sich das Entstehen des endgültigen Baums nachvollziehen lässt.
c) Codieren Sie schließlich mit diesem Baum den String „SORTIEREN“
S O R T I E R E N
Abschrift der Prüfung. Nicht der genaue Wortlaut, aber alle Informationen sind enthalten.