Informationssysteme SS 2013 – Lösungsvorschläge zu Übungsblatt 2 Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Fachbereich Informatik Technische Universität Kaiserslautern Übungsblatt 2 Für die Übungen in der Woche vom 29. April bis 03. Mai 2013 Aufgabe 1: B-Baum-Klassen Zeichnen Sie alle B-Bäume der Klasse (1,2) bei Vorgabe folgender Schlüssel: 1, 2, 3, 4, 5, 6. Bestimmen Sie für die Bäume jeweils eine Einfügereihenfolge der Schlüssel. Zeigen Sie, dass Ihre Behauptung korrekt ist, indem Sie für jede Einfügereihenfolge jeweils den Baum vor dem ersten und anschließend nach jedem weiteren Splitvorgang zeichnen. Lösung: Alle B-Bäume der Klasse (1,2): -3-5- -1-2- -2-5- -4- -6- -1- -3-4- -2-4- -6- -1- -3- -5-6- Eingabereihenfolge: 5, 3, 2, 1, 4, 6 -3-5- -3- => -1-2- -3-5- => -1-2- -4-5- -4- -6- Eingabereihenfolge: 1, 2, 5, 6, 4, 3 -1-2- -2- => -1- -2-5- => -5-6- -1- -3-4- -6- Eingabereihenfolge: 1, 2, 3, 4, 5, 6 -1-2- -2- => -1- -2-4- => -3-4- -1- -3- -5-6- 1 ! Es kann durchaus vorkommen, dass die Lösungsvorschläge fehlerhaft oder unvollständig sind ! Informationssysteme SS 2013 – Lösungsvorschläge zu Übungsblatt 2 Aufgabe 2: Einfügen in einen B-Baum Fügen Sie die Buchstaben des Wortes ALGORITHMUS in umgekehrter Reihenfolge ihres Auftretens im Wort in einen initial leeren B-Baum der Klasse (1, h) ein. Zeichnen Sie den Baum vor dem ersten und dann nach jedem weiteren Splitvorgang. Lösung: ALGORITHMUS in umgekehrter Reihenfolge: S, U, M, H, T, I, R, O, G, L, A Einfügen: S,U - S - U- Einfügen: M (=> Split, S nach oben als Wegweiser) -S-U- - M- Einfügen: H, T -S- T- U - -H- M- Einfügen: I (=> Spilit, I nach oben als Wegweiser), R -I-S-H- -M-R- Einfügen: O (=> 2xSplit, jeweils O als Wegw.) -T-U- -O- -I- -S-M- -H- Einfügen: G, L -R- -T-U- -O- -I- -G-H- -S-L-M- Einfügen: A -R- -T-U-O- - G - I-A - -H- -S-L-M- -R- -T-U- 2 ! Es kann durchaus vorkommen, dass die Lösungsvorschläge fehlerhaft oder unvollständig sind ! Informationssysteme SS 2013 – Lösungsvorschläge zu Übungsblatt 2 Aufgabe 3: Einfügen und Löschen in B-Bäumen Fügen Sie folgende Schlüssel in der angegebenen Reihenfolge in einen zu Beginn leeren B-Baum der Klasse (2, h) ein: 10, 75, 50, 30, 25, 8, 27, 70, 40, 55, 9, 80, 90, 100, 51, 52, 54 a) Zeichnen Sie den Baum vor dem ersten und danach nach jedem weiteren erforderlichen Splitvorgang. b) Löschen Sie anschließend die Schlüssel 52, 50 und 9. Zeichnen Sie den Baum nach jedem Löschschritt. Lösung: a) Einfügen: 10, 75, 50, 30 - 10 - 30 - 50 - 75 - Einfügen: 25, 8, 27, 70, 40 - 30 - - 8 - 10 - 25 - 27 - 30 - 55 - Einfügen: 55 - 8 - 10 - 25 - 27 - - 40 - 50 - - 70 - 75 - - 10 - 30 - 55 - Einfügen: 9, 80, 90 -8-9- - 25 - 27 - - 40 - 50 - - 70 - 75 - 80 - 90 - - 10 - 30 - 55 - 80 - Einfügen: 100, 51, 52 -8-9- - 40 - 50 - 70 - 75 - - 25 - 27 - - 40 - 50 - 51 - 52 - - 70 - 75 - - 51 - Einfügen: 54 - 10 - 30 - -8-9- - 90 - 100 - - 25 - 27 - - 55 - 80 - - 40 - 50 - - 52 - 54 - - 70 - 75 - - 90 - 100 - 3 ! Es kann durchaus vorkommen, dass die Lösungsvorschläge fehlerhaft oder unvollständig sind ! Informationssysteme SS 2013 – Lösungsvorschläge zu Übungsblatt 2 b) Löschen: 52 - 10 - 30 - 51 - 80 - -8-9- - 25 - 27 - - 40 - 50 - - 54 - 55 - 70 - 75 - - 90 - 100 - - 55 - 70 - 75 - - 90 - 100 - - 10 - 30 - 54 - 80 - Löschen: 50 -8-9- - 25 - 27 - - 40 - 51 - 30 - 54 - 80 - Löschen: 9 - 8 - 10 - 25 - 27 - - 40 - 51 - - 55 - 70 - 75 - - 90 - 100 - Aufgabe 4: Einfügen und Löschen in B-Bäumen a) Fügen Sie die Zahlen von 1 bis 23 in absteigender Reihenfolge in einen leeren B-Baum der Klasse (1, h) ein. b) Löschen Sie anschließend die Schlüssel 13 und 7. Zeichnen Sie die Bäume nach jedem Löschschritt. c) Wie hoch ist in der Regel der Füllgrad der Knoten? Durch welches Verfahren kann er erhöht werden? Wiederholen Sie Aufgabenteile a) und b) unter Anwendung der einfachsten Form dieses Verfahrens. Wie hoch ist nun der Füllgrad? Wie verändert sich der Reorganisationsaufwand? Lösung: a) - 22- 23 - Einfügen: 23, 22 - 22 - Einfügen: 21(=>Split), 20 -20 - 21 - Einfügen: 19(=>Split), 18 -23 - - 18 - 19 - - 20 - 22 - 21 - - 20- Einfügen: 17(=>2xSplit), 16 - 22 - - 18 -16 - 17 - - 19 - - 21- - 23- 4 ! Es kann durchaus vorkommen, dass die Lösungsvorschläge fehlerhaft oder unvollständig sind ! - 23 - Informationssysteme SS 2013 – Lösungsvorschläge zu Übungsblatt 2 - 20- Einfügen: 15(=>Split), 14 - 16 - 18 - 14 - 15 - - 22 - 19 - - 17- - 21- Einfügen: 13(=>2xSplit), 12 - 23- - 16 - 20- 18 - - 14 - 12 - 13 - - 15 - - 22 - 19 - - 17- Einfügen: 11(=>1xSplit), 10 - 21- - 23- - 16 - 20- 12 - 14 - 13 - - 10 - 11- - 18 - 15 - - 22 - 19 - - 17- - 21- - 23- Einfügen: 9(=>3xSplit!), 8 - 16 - 20- - 12 - 10 - -8-9- - 14 - 13 - - 11- - 22 - - 18 - 15 - - 17- Einfügen: 7(=>Split), 6 - 19 - - 21- - 16 - 20- - 12 - 8 - 10 - -6-7- - 23- -9- - 14 - 11- - 13 - - 22 - - 18 - 15 - Einfügen: 5(=>2xSplit), 4 - 19 - - 17- - 20- 14 - - 10 - -6-7- - 23- - 16 - 8 - 12 - - 4- 5 - - 21- -9- - 11- - 13 - - 22 - - 18 - 15 - - 17- - 19 - - 21- 5 ! Es kann durchaus vorkommen, dass die Lösungsvorschläge fehlerhaft oder unvollständig sind ! - 23- Informationssysteme SS 2013 – Lösungsvorschläge zu Übungsblatt 2 Einfügen: 3(=>Split), 2 - 16 - 20- - 8 - 12 - -2-3- - 14 - - 10 - -4-6-5- -7- - 11- -9- Einfügen: 1(=>3xSplit) - 19 - - 17- - 21- -12 - -2-5- - 23- - 20- 14 - - 10 - -6-3- - 15 - - 8 - 16 - -4- -1- - 13 - - 22 - - 18 - -7- -9- - 11- - 13 - - 22 - - 18 - 15 - - 17- - 19 - - 21- - 23- b) -8- Löschen: 13 (=>3xUnterlauf/Merge) - 16 - 20- -4- -1- - 10 - 12 - -6- -2- -3- - 5- -7- -9- - 11 - Löschen: 7 (=>2xUnterlauf/Merge, 1x rotieren) - 18 - - 14 - 15 - - 17 - -1- -3- -9- - 21 - - 23 - - 20- 10 - 12 - - 5- 6 - - 19 - - 16 - -8-2-4- - 22 - - 11 - - 18 - - 14 - 15 - - 17 - - 22 - - 19 - - 21 - - 23 - c) Der Füllgrad liegt nahe bei der Untergrenze von 50%, daher ergibt sich eine äußerst schlechte Nutzung des Speichers und eine größere durchschnittliche Höhe des Baumes. Zur Verbesserung dieses Verhaltens kann man den Splitfaktor m erhöhen, dadurch ist beim Einfügen auch ein Ausgleich zwischen maximal m Knoten möglich durch "rotieren über den Vater". 6 ! Es kann durchaus vorkommen, dass die Lösungsvorschläge fehlerhaft oder unvollständig sind ! Informationssysteme SS 2013 – Lösungsvorschläge zu Übungsblatt 2 . Einfügen: 23, 22 - 22- 23 - Einfügen: 21 (=>Split), 20, 19 (Ausgleich) - 21- 19 - 20 - - 22 - 23- - 18 - 21- Einfügen: 18 (=>Split), 17, 16 (Ausgleich) - 22 - 23- - 19 - 20 - - 16 - 17 - Einfügen: 15 (=>2xSplit), 14, 13 (Ausgleich) - 18 - 15 - - 13 - 14- - 21- 19 - 20 - - 16 - 17 - Einfügen: 12 (=>Split), 11, 10 (Ausgleich) - 18 - - 12 - 15 - 10 - 11 - - 13 - 14- Einfügen: 9 (=>Split, Ausgleich), 8, 7 (Ausgleich) - 21- 19 - 20 - - 16 - 17 - - 18 - 21- - 10 - 11 - - 13 - 14- - 16 - 17 - Einfügen: 6 (=>2xSplit), 5, 4 (Ausgleich) - 19 - 20 - - 22 - 23- - 9 - 15 -6- -4-5- - 12 -7-8- Einfügen: 3 (=>Split), 2, 1 (Ausgleich) -4-5- - 10 - 11 - - 18 - 21- - 13 - 14- - 16 - 17 - - 19 - 20 - - 22 - 23- - 9 - 15 - -3 - 6 -1-2- - 22 - 23- - 15 - - 9 - 12 -7-8- - 22 - 23- - 12 -7-8- - 10 - 11 - - 18 - 21- - 13 - 14- - 16 - 17 - - 19 - 20 - - 22 - 23- Löschen : 13, 7 - 9 - 15 -3 - 6 -1-2- -4-5- - 12 -8- - 10 - 11 - - 18 - 21- - 14- - 16 - 17 - - 19 - 20 - - 22 - 23- 7 ! Es kann durchaus vorkommen, dass die Lösungsvorschläge fehlerhaft oder unvollständig sind ! Informationssysteme SS 2013 – Lösungsvorschläge zu Übungsblatt 2 Aufgabe 5: Höhe von B-Bäumen Def.: Seien k, h ganze Zahlen, h 0 , k > 0. Ein B-Baum B der Klasse k h ist entweder ein leerer Baum oder ein geordneter Suchbaum mit folgenden Eigenschaften: • Jeder Pfad von der Wurzel bis zu einem Blatt hat die gleiche Länge h-1. • Jeder Knoten außer der Wurzel und den Blättern hat mindestens k+1 Söhne. Die Wurzel ist ein Blatt oder hat mindestens 2 Söhne. • Jeder Knoten hat höchstens 2k+1 Söhne. • Jedes Blatt mit der Ausnahme der Wurzel als Blatt hat mindestens k und höchstens 2k Einträge (Schlüssel). Zeigen Sie, dass die Höhe eines B-Baums der Klasse (k, h) begrenzt ist n+1 • nach oben durch h 1 + log k + 1 ------------ 2 für n 1 • nach unten durch h log 2k + 1 n + 1 für n 1 Hinweis: Bestimmen Sie zunächst die Formel zur Berechnung der minimalen bzw. maximalen Anzahl von Knoten in einem B-Baum der Klasse(k, h). n–1 Benutzen Sie dazu die Formel xn – 1 i x = -------------- für x 0 x–1 i=0 Lösung: Zunächst wird die Anzahl der Seiten für einen minimalen bzw. maximalen B-Baum bestimmt: • Der minimale Baum hat eine Wurzelseite mit nur zwei Söhnen. Jeder dieser beiden Söhne hat die minimal möglichen k+1 Söhne, jeder dieser Söhne wiederum nur k+1 Söhne, usw.. Also gilt 2 N min k h = 1 + 2 + 2 k + 1 + 2 k + 1 + ... + 2 k + 1 = 1+2 h–2 h–2 i k + 1 = 1 + 2--- k + 1 h – 1 – 1 i=0 k • Der maximale Baum hat eine Wurzelseite mit den höchst möglichen 2k+1 Söhnen, jeder Sohn hat wiederum 2k+1 Söhne, usw.. Also gilt 2 N max k h = 1 + 2k + 1 + 2k + 1 + ... + 2k + 1 h–1 = i i = 0 2k + 1 = h–1 1 h ------ 2k + 1 – 1 2k 8 ! Es kann durchaus vorkommen, dass die Lösungsvorschläge fehlerhaft oder unvollständig sind ! Informationssysteme SS 2013 – Lösungsvorschläge zu Übungsblatt 2 Nun kann mit Hilfe der Seitenzahlen die Anzahl der minimalen und maximalen Einträge bestimmt werden. • Da in einer Seite mindestens k Einträge gespeichert sind, ergibt sich mit obiger Formel für den minimalen Baum 2 h–1 h–1 n n min = 1 + k --- k + 1 – 1= 2k + 1 –1 k • In einer Seite sind höchstens 2k Einträge gespeichert, somit ergibt sich mit obiger Formel für den maximalen Baum 1 h h n n max = 2k ------ 2k + 1 – 1 = 2k + 1 – 1 2k • Für die Höhenbegrenzung des B-Baums gilt damit h 2k + 1 n + 1 h log 2k + 1 n + 1 k + 1 h–1 n+1 n+1 ------------ h – 1 log k + 1 ------------ 2 2 und für die Höhe des B-Baums folgt n+1 log 2k + 1 n + 1 h 1 + log k + 1 ------------ 2 9 ! Es kann durchaus vorkommen, dass die Lösungsvorschläge fehlerhaft oder unvollständig sind !