DB2 – SS 2019 von Baum allgemein bis B*-Baum

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Algorithm Engineering
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
7.2 B-Bäume / B*-Bäume als Hilfsmittel zur Indexorganisation
Graphen Ein Graph ist eine Kollektion von Knoten und Kanten. Knoten sind einfache Objekte. Sie haben Namen und können Träger von Werten, Eigenschaften.
GIN2 – 2. Vorlesung, SS04 Prof. Dr. Wolfram Conen
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Gewichtsbalancierte Suchbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur
Baumstrukturen Richard Göbel.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Algorithmen und Datenstrukturen
WS03/041 Binomial Queues Prof. Dr. S. Albers Prof.Dr.Th Ottmann.
Informatik II – Kapitel 13
Minimum Spanning Tree: MST
Kapitel 2: Datenstrukturen
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Animationen zu Kap. 4.3: AVL-Bäume
2. Die rekursive Datenstruktur Baum 2
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Effiziente Algorithmen
Diskrete Mathematik II
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Christian Scheideler Institut für Informatik Universität Paderborn
Jamshid Azizi: Folie Isomorphietest Jamshid Azizi
Graphen und Bäume.
Analyse der Laufzeit von Algorithmen
Eine kurze Geschichte der Graphentheorie
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
7 Bäume = „verzweigte Folgen“ Z.B. Stammbaum, patriarchalisch: Abraham
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Binärer Baum, Binärer Suchbaum I
Gliederung der Vorlesung
Binärbäume.
Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 2 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 1 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Einführung in die Informationsverarbeitung Teil Thaller Stunde V: Wege und warum man sie geht Graphen. Köln 14. Januar 2016.
MLDM Übung 8 – IBL 2 Musterlösung.
Übungsblatt 2 Erläuterungen Wintersemester 16/17 DBIS.
Lösung der Aufgabe 1: Die Erweiterung des Diagramms auf „Winged Egde“ besteht in zwei Beziehungen, nr-Kante und vl-Kante, zwischen der Klasse Kante. Jede.
Musterlösung zur Klausur "Diskrete Mathematik" vom
Diskrete Mathematik II
Das Problem des Handlungsreisenden
Graphentheorie.
Laufzeitverhalten beim Sortieren
Algorithmen für Geographische Informationssysteme
ADS – Vorlesung Prof. Dr. Wolfram Conen
Übungen Übungsanmeldung Übungskorrektur
Wiederholung Breitensuche BFS mit Startknoten s Tiefensuche
Graphen.
Kap. 12 R-Bäume GB B31 B245 Box 1: Box 2: Box 3: Box 4: Box 5:
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
2. Die rekursive Datenstruktur Baum 2.2 Suchen und Einfügen
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
3. Die Datenstruktur Graph 3.1 Einfache Graphen
DB2 – SS 2019 von Baum allgemein bis B*-Baum
 Präsentation transkript:

DB2 – SS 2019 von Baum allgemein bis B*-Baum Dr. Karsten Tolle

Graphtheorie … Bäume Definitionen manchmal merkwürdig – man findet den Zusatz „Teil der Graphtheorie“. … oder es wird nicht Baum, sondern eine spezielle Baumart definiert, z.B.: Binärbaum gerichteter Baum geordneter Baum …

Graphtheorie … Ein Graph G ist ein Paar G=(V,E) aus einer (endlichen) Menge von Knoten V und einer Menge von Kanten E (E⊆VxV). Basiert auf: Dieter Jungnickel „Graphen, Netzwerke und Algorithmen“ 3. Auflage von 1994

kreisfrei / zusammenhängend nicht zusammenhängend nicht kreisfrei kreisfrei (zyklenfrei) nicht zusammenhängend zusammenhängend gdw. alle Knoten verbunden nicht kreisfrei zusammenhängend und kreisfrei

Baum und Blatt G sei ein Graph auf n Knoten. Dann implizieren je zwei der folgenden drei Bedingungen die dritte: G ist zusammenhängend. G ist kreisfrei. G hat n-1 Kanten. Ein Graph T, der diesen Bedingungen genügt, heißt ein Baum („tree“). Jeder Knoten vom Grad 1 (Anzahl der Kanten, die den Knoten enthalten) heißt Blatt („leaf“).

Baum  Wurzel? zusammenhängend und kreisfrei  Baum

Wurzel? zusammenhängend und kreisfrei  Baum ohne Wurzel! Graphentheorie: In einem gerichteten Graphen heißt ein Knoten, von dem aus alle Knoten erreichbar sind, eine Wurzel („root“). Basiert auf: Dieter Jungnickel „Graphen, Netzwerke und Algorithmen“ 3. Auflage von 1994

gerichteter Graph (digraph) „In gerichteten oder auch orientierten Graphen werden Kanten statt durch Linien durch Pfeile gekennzeichnet, wobei der Pfeil vom ersten zum zweiten Knoten zeigt. Dies verdeutlicht, dass jede Kante des Graphen nur in eine Richtung durchlaufen werden kann.“ (Wikipedia)

gerichteter Graph (digraph) -> Baum Ein gerichteter Graph ist ein Baum gdw. der entsprechende ungerichtete Graph ein Baum ist. kein Baum Baum

gerichtete Graphen zusammenhängend und kreisfrei  Baum

gerichtete Graphen (Wurzel rot) zusammenhängend und kreisfrei  Baum ohne Wurzel zusammenhängend und kreisfrei  Baum Wikipedia unterscheidet in in-tree und out-tree zusammenhängend und kreisfrei  Baum zusammenhängend und kreisfrei  Baum

gewurzelter Baum (Baum mit Wurzel) C D Darstellung: Wurzel oben A C C ist innerer Knoten B D D und B sind Blätter Wikipedia unterscheidet in in-tree und out-tree

Vater, Mutter, Kind A C ist Kind von A C ist Vater von D C B D Wikipedia unterscheidet in in-tree und out-tree Jeder Knoten hat genau einen Vater (außer die Wurzel)! (in einem gewurzeltem Baum)

Binärbaum Definition: Ein Binärbaum ist ein gewurzelter Baum, bei dem jeder Knoten höchstens zwei Kindknoten besitzt. A A B C D C B kein Binärbaum D Binärbaum

geordneter Baum Bei einem geordneten Baum ist die Reihenfolge der Teilbäume eines Knotens relevant. A A C ≠ B C B D D

Binärer Suchbaum Ist ein geordneter Binärbaum, bei dem durch die links-rechts Aufteilung eine Ordnung erstellt wird. … z.B. alle kleiner nach links und alle größer oder gleich nach rechts. 85 85 17 und 87 einfügen 12 95 95 12 2 2 17 87

B*-Baum (bei uns) mit k und k* Balancierter Baum (alle Blätter auf einer Ebene) k gibt die minimal erlaubte Anzahl von Kindknoten an (innerer Knoten)  maximal 2k-1 k* gibt die minimal erlaubte Anzahl von Einträgen in Blättern an  maximal 2k*-1 … die Wurzel ist nur nach oben begrenzt!

Aus den Folien (S. 22): Wie erstellen? Reihenfolge der Eingabe relevant? … ja, Reihenfolge ist relevant. Natürlich müssen die Daten in den Blättern sortiert sein, wo aber die Lücken sind bzw. welche Blätter ganz voll sind (hier B7 und B11) hängt von der Reihenfolge der Eingabe ab.

Typische Aufgabentypen zu B*-Baum Fragen zu Grundlagen (siehe oben) Erstellung/Zeichnen eines Baumes Beschreibung/Zeichnen der Operationen (Lookup, Modify, Insert, Delete) Berechnung von k und k* entsprechend der Vorgaben

Gegeben sei ein leerer B Gegeben sei ein leerer B*-Baum mit 𝑘=3, 𝑘 ∗ =2 und den folgenden Daten: Fügen Sie die Daten aus der Tabelle in den leeren B*-Baum (über die ID) entsprechend der Reihenfolge der Tabelle (von oben nach unten) ein. Zeichnen Sie mindestens jeden Zwischenschritt, bei dem ein neuer Block für den Baum benötigt wird und den fertigen Baum. Daten ID Wert   1 A 3 B 6 C 4 D 7 5 F 2

Lösungsvorschlag: 1,A 3,B 6,C 4 - 1,A 3,B - 4,D 6,C - 5 - 5,F 6,C 7,C Daten ID Wert   1 A 3 B 6 C 4 D 7 5 F 2 1,A 3,B 6,C Wurzel als Blatt: Nach dem Eintragen der 4: 4 - 1,A 3,B - 4,D 6,C - Nach dem Eintragen der 5 (hier mit schieben der 4 in den linken Nachbar- Knoten): 5 - 1,A 3,B 4,D 5,F 6,C 7,C

Nach dem Eintragen der 2: 3 5 1,A 2,A - 3,B 4,D - 5,F 6,C 7,C Alternativ, hätte man beim Eintragen der 5 aufgespaltet, sollte der finale Baum so aussehen: 4 6 1,A 2,A 3,B 4,D 5,F - 6,C 7,C -

Gegeben sei folgende Ausgangsbaum B*-Baum mit k=k*=2. Ausgangsbaum: 25, .. Führen Sie folgende Operationen jeweils auf dem Ausgangsbaum aus und zeichnen Sie resultierenden Baum erneut auf.   Löschen der 10 Löschen der 7 Einfügen von 18

Löschen der 10 25, .. Es gibt zwei Möglichkeiten (hier nur Verschmelzen und Aufteilen der beiden Knoten) Alternative wäre Verschmelzen und Schieben nach rechts, wodurch es ein Blatt weniger wäre: 25, .. 12 20 12,… 15,… - 20,… 25,… -

Löschen der 7 25, .. 15 10 27 1,… 3,… 8,… 10,… 12,… - 15,… 20,… 25,… 27,… 30,… -

Einfügen von 18 25, .. Möglichkeiten: 1) Schieben nach links, 2) Schieben nach rechts oder 3) auftrennen Schieben nach links ergibt: 25, .. 18 15,… 18,…

Berechnung von k und k* entsprechend der Vorgaben Bestimmen Sie die Werte k und k* für einen B*-Baum bei gegebener Seitengröße p=4096 Bytes, Schlüsselgröße s=8 Bytes, Satzgröße r=500 Bytes und Verweisgröße v=8 Bytes. Sonstiger Verwaltungsoverhead inkl. Header kann vernachlässigt werden. Wie viele Ebenen benötigt man mindestens/höchstens mit diesen Parametern um 5000, 500000 und 50000000 Datensätze zu speichern?

a) Berechnung von k und k* k*: floor (4096 Byte / 500 Byte) => 8 DS passen maximal in einen Block! 2k*-1 = 8 2k* = 9 k* = floor(4,5) = 4 | k* muss ja ganzzahlig sein! k: floor ((4096 Byte – 8 Byte) / (8 Byte + 8 Byte)) +1 = 256 = passen maximal floor ((größe Block – ganz linker Zeiger) / (Zeiger + Schlüssel)) + 1 (vom Zeiger ganz links) 2k-1 = 256 2k = 257 k = floor (128,5) = 128 | k muss ganzzahlig sein!

b) mindestens 50000000 Mindestens gdw. Alle Knoten maximal besetzt: Also k* = 4 => bis zu 2*4-1 = 7 DS in den Blättern und k = 128 => bis zu 2*128-1 Verweise in den Knoten ceiling(50.000.000 DS / 7) = 7142858 Blätter ceiling(7142858 / 255) = 28012 Knoten darüber ceiling(28012 / 255) = 110 Knoten darüber ceiling(110/255) = 1 die Wurzel Also hat der B*-Baum 4 Ebenen! Höchstens genauso, nur mit minimaler Belegung, man rechnet also mit 4 DS in den Blättern und 128 Verweise in den Knoten. … sollte höchstens 5 Ebenen ergeben (hatten wir in der Übung berechnet)! … ist halt logarithmisch.