Informatik IV SS 2006 Institut für Informatik, Abt. I Christel Baier, Sascha Klüppelholz, Jörn Ossowski, Christiane Beyer, Stefan Dombrowski, Li Le, Andreas Lenerz, Dennis Mitzel, Rebecca Reiffenhäuser, Uwe Schuster, Manuel Wedemeyer, Yang Guang 6. Übungsblatt Hinweise zum Übungsbetrieb finden Sie unter http://web.informatik.uni-bonn.de/I/Lehre/Vorlesungen/InfoIV-06/Informatik IV SS06/ Die Abgabe der theoretischen Übungen erfolgt jeweils mittwochs vor Beginn der Vorlesung (bis 10 Minuten nach 11 Uhr) in Hörsaal D. Diejenigen, die diesen Termin nicht wahrnehmen können, haben die Möglichkeit, ihre Lösungen bis dienstags um 18 Uhr in den Briefkasten “Institut für Informatik Abteilung I, Prof. Baier und Mitarbeiter” im Foyer des 1. Stocks einzuwerfen. Abgabe: Di, 16.05.06 18 Uhr Briefkasten oder Mi., 17.05.06. 11:10 HS D Besprechung: 24.05.2006 - 30.05.2006 Alle Übungen finden in N327 statt, außer der Montagsübung von 17-19 Uhr. Diese findet in Raum A121 statt. Hinweis: Die Übung von Donnerstag den 25.5. findet am Mittwoch den 24.5. ab 17:15 Uhr in N328 statt. Anwesenheitspflicht besteht nicht. 1 Aufgabe 6.1 [Beispiele für Hashing mit offener Adressierung, 1+1+1=3 Pkt.] (32) Erstellen Sie durch sukzessives Einfügen eine Hashtabelle mit m = 11 Zellen für die Schlüsselwerte 10, 22, 31, 4, 15, 28, 17, 88, 59 a) Verwenden Sie dabei lineare Sondierung mit der primären Hashfunktion h(x) = x mod 11. b) Verwenden Sie dabei quadratische Sondierung mit der primären Hashfunktion h(x) = x mod 11. c) Verwenden Sie dabei double Hashing mit der primären Hashfunktion h(x) = x mod 11 und der sekundären Hashfunktion h′ (x) = 1 + (x mod 10). Aufgabe 6.2 [Mittlere Kosten für Hashing mit offener Adressierung, 5 Pkt.] (33) Zeigen Sie, daß unter der Annahme perfekter Sondierungsfolgen für eine nur durch Einfügen (ohne Löschoperationen) aufgebaute Hashtabelle mit offener Adressierung folgendes gilt: m m 1 + K (n, m) ≤ · ln n n 1− m n Hierbei bezeichne K (n, m) die erwartete Anzahl an Sondierungsschritten für eine erfolgreiche Suche, wobei n die Anzahl an dargestellten Datensätzen und m die Größe der Hashtabelle ist, mit n < m. Hinweis: Zeigen Sie zunächst, daß K (n, m) ≤ m · (H(m) − H(m − n)), n j wobei H(i) = Σi=1 1i . Benutzen Sie dann die in der Analyse von Quicksort verwendeten Abschätzungen der Partialsummen der harmonischen Reihe. Aufgabe 6.3 [AVL-Bäume, 4 Pkt.] (46) Erstellen Sie durch sukzessives Einfügen der Schlüsselwerte 90, 80, 30, 60, 50, 70, 40 einen AVL-Baum (beginnend mit dem leeren Baum). Skizzieren Sie den Baum mindestens unmittelbar vor und nach jeder Einfachrotation, bzw. Doppelrotation. 2 Aufgabe 6.4 [Löschen in AVL-Bäumen, 3 Pkt.] (112-B) Gegeben ist folgender AVL-Baum T . 43 23 60 37 53 47 77 57 Löschen Sie den Knoten mit Schlüsselwert x = 23 in T . Skizzieren Sie den entstandenen Suchbaum jeweils unmittelbar nach dem Löschen, sowie nach den gegebenenfalls durchzuführenden Rebalancierungen. Geben Sie auch jeweils die Art der gegebenfalls durchzuführenden Rebalancierungen (Rotation/Doppelrotation) an. Aufgabe 6.5 [Blattsuchbäume, 5 Pkt.] (48) Skizzieren Sie Algorithmen für das Suchen, Löschen und Einfügen in Blattsuchbäumen, die jeweils die Laufzeit O (Höhe(T )) haben. Aufgabe 6.6 [k-ter Schlüsselwert im AVL-Baum, 5 Pkt.] (49) Geben Sie einen Algorithmus an, der als Eingabe einen AVL-Baum T mit n Knoten und eine Zahl k ∈ {1, . . ., n} erhält und der den k-kleinsten Schlüsselwert von T ausgibt und die Laufzeit O (log n) besitzt. HINWEIS : Es gibt eine Lösung, welche die interne Darstellung der Knoten durch den Schlüsselwert und Verweise auf die beiden Söhne (falls existent) in geeigneter Weise erweitert. Eine solche Erweiterung darf jedoch die logarithmischen Laufzeiten der Operationen Einfügen und Löschen nicht verändern. Sie dürfen davon ausgehen, daß der gegebene AVL-Baum in Ihrer erweiterten Darstellung vorliegt. Beschreiben Sie Ihre Erweiterung und begründen Sie die Erhaltung der logarithmischen Laufzeiten für die Operationen Einfügen und Löschen, falls sie eine wie im Hinweis erwähnte Erweiterung verwenden. 3