Übungsblatt 2 - Technische Universität Kaiserslautern

Werbung
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= 2k + 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 !
Herunterladen