Höhe eines B + -Baums

Ähnliche Dokumente
Zugriff auf Elemente im B + -Baum. Höhe eines B + -Baums. Einfache Operationen auf B + -Bäumen. Anzahl der Blätter bei minimaler Belegung

Mehrwegbäume Motivation

CLRS benutzt eine etwas andere Definition:

Informatik II Bäume zum effizienten Information Retrieval

Informatik II Suchbäume für effizientes Information Retrieval

Informatik II, SS 2016

Informatik II, SS 2014

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für "balanciert":

DB-Zugriffsverfahren: Übersicht B-Bäume B*-Bäume Übersicht

Informatik II, SS 2014

C G C C G C. Löschen von Knoten. Beispiel: Löschen von k =

Programmiertechnik II

2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus

Algorithmen und Datenstrukturen 1

ADS: Algorithmen und Datenstrukturen

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Suchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS

18. Natürliche Suchbäume

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Einführung. B6.2 Symboltabellen. B6.3 Einfache Implementationen

9. Natürliche Suchbäume

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Definition 14 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt:

6/23/06. Universelles Hashing. Nutzen des Universellen Hashing. Problem: h fest gewählt es gibt ein S U mit vielen Kollisionen

Informatik II Vorlesung am D-BAUG der ETH Zürich

Algorithmen und Datenstrukturen 1

Binäre Suchbäume. Organisatorisches. VL-10: Binäre Suchbäume. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger.

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n).

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Teil 1: Suchen. Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume Ausgeglichene Bäume B-Bäume Digitale Suchbäume

Programmiertechnik II

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

Algorithmen und Datenstrukturen 13

Vorlesung Datenstrukturen

Informatik II, SS 2018

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele.

Anwendungsbeispiel MinHeap

Algorithmen und Datenstrukturen (für ET/IT)

class PrintNode(object): def init ( self, param ):... def visit( self, treenode ): print treenode.getitem()

7. Sortieren Lernziele. 7. Sortieren

Abschnitt 18: Effizientes Suchen in Mengen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

13. Binäre Suchbäume

Übung Algorithmen und Datenstrukturen

Informatik II, SS 2016

4.3 Bäume. Definition des Baumes. Bäume sind eine sehr wichtige Datenstruktur der Informatik.

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Grundlagen der Algorithmen und Datenstrukturen Kapitel 7

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Formulierung mittels Dynamischer Programmierung

Informationssysteme SS 2013 Lösungsvorschläge zu Übungsblatt 2. Übungsblatt 2. Für die Übungen in der Woche vom 29. April bis 03.

Vorlesung Datenstrukturen

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 15. Jan Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 10

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Algorithmen und Datenstrukturen. Kapitel 4: Suchverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen

Logische Datenstrukturen

7 Weitere Baumstrukturen und Heapstrukturen

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

4. Tries und kd-bäume

3.8 Bäume. Definition des Baumes

Eine universelle Klasse von Hash-Funktionen

Algorithmen und Datenstrukturen 12

Suchen in linearen Feldern. Datenstrukturen & Algorithmen. Laufzeitverhalten der Suchverfahren. Anzahl der Vergleiche für 10 9 Elemente

Informatik II Prüfungsvorbereitungskurs

Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B7.1 Einführung. B Bäume. B7.3 Rot-Schwarz Bäume

Anwendung: Routing in Netzwerken

Datenstrukturen. einfach verkettete Liste

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

ContainerDatenstrukturen. Große Übung 4

Trees. November 14, Algorithms & Datastructures 2 Exercises WT 2017

Datenstrukturen und Algorithmen. Vorlesung 5

Informatik II, SS 2014

Implementierung eines Baumes (in Python)

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 12

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen.

Mengen. Binäre Suchbäume. Mengen: Anwendungen (II) Mengen: Lösung mit Listen 12/3/12. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

Übung Algorithmen und Datenstrukturen

Motivation Binäre Suchbäume

Copyright, Page 1 of 7 Heapsort

B-Bäume. Suchbäume. Suchen, Einfügen, Löschen. Thomas Röfer. Balancierte Bäume (AVL-Bäume) Universität Bremen. Bäume 2

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Trees. November 13, Algorithms & Datastructures 2 Exercises WT 2017

Suchen und Sortieren Sortieren. Heaps

Baumbasierte Strukturen

Wünschenswerte Eigenschaft von Suchbäumen mit n Knoten: Suchen, Einfügen, Löschen auch im schlechtesten Fall O(log n)

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)

Transkript:

Höhe eines B + -Baums Anzahl der Blätter bei minimaler Belegung Anzahl von (eindeutigen) Elementen bei minimaler Belegung Anzahl der Blätter bei maximaler Belegung Anzahl von Elementen bei maximaler Belegung Dann ergibt sich die Höhe eines B + -Baums. Zachmann Informatik 2 - SS 6 Bäume 23 Zugriff auf Elemente im B + -Baum da die Nutzdaten in den Blättern gespeichert sind, erfordert jeder Zugriff genau h Knotenzugriffe sequentieller Zugriff: h interne Knoten + alle Blätter Beispiel: range query (z.b. DB-Anfragen vom Typ finde alle Studenten mit Matrikelnummner zwischen N und N 2 ). Zachmann Informatik 2 - SS 6 Bäume 24

Einfache Operationen auf B + -Bäumen Einfügen interne Knoten genauso wie bei B-Bäumen Blätter nach dem gleichen Prinzip, es muß garantiert werden, daß größere Schlüssel vom neuen Knoten als Seperator in den Vaterknoten kopiert werden Löschen leichter als bei B-Bäumen denn Schlüssel in den internen Knoten sind nur Seperatoren, sie dürfen nicht entfernt werden. Zachmann Informatik 2 - SS 6 Bäume 25 Beispiel (k=l=2) 2 28 46 67 5 9 2 5 9 28 33 37 4 46 53 59 67 7 83 99 füge ein: 45 4 2 28 46 67 5 9 2 5 9 28 33 37 4 45 46 53 59 67 7 83 99. Zachmann Informatik 2 - SS 6 Bäume 26 2

4 2 28 46 67 5 9 2 5 9 28 33 37 4 45 46 53 59 67 7 83 99 lösche: 28, 4, 46 4 2 28 53 67 5 9 2 5 9 33 37 45 53 59 67 7 83 99. Zachmann Informatik 2 - SS 6 Bäume 27 Vergleich zwischen B-Bäumen und B + -Bäumen B-Baum Nutzdaten in allen Knoten Keine Schlüssel-Redundanz höhere Bäume wegen großer Seperatoren Sequentieller Zugriff auf Folge von Schlüsseln ist aufwendiger B + -Baum Nutzdaten nur in den Blättern Schlüssel-Redundanz niedrigere Bäume (große Breite) wegen kleiner Seperatoren Sequentieller Zugriff = Traversierung einer linearen Liste vereinfachter Lösch-Algorithmus n min = 2(k+) h- - n max = (2k+) h - n min = 2k(k+) h-2 n max = 2k(2k+) h-. Zachmann Informatik 2 - SS 6 Bäume 28 3

Fallstudie: B-Bäume im Vergleich zu B + -Bäumen Parameter: Nutzdaten: Seitengröße = 248 Byte = 2kB Zeiger, Zähler, Schlüssel = 4 Byte eingebettete Speicherung L D = 76 Byte separate Speicherung L D = 4 Byte B-Baum (eingebettet): k = (L-L M -L P )/2 (L K +L D +L P ) = (248-4 - 4) / 2 (4 + 76 + 4) = 2 B-Baum (separate Speicherung): k = (L-L M -L P )/2 (L K +L D +L P ) = (248-4 - 4) / 2 (4 + 4+ 4) = 85 interne Knoten im B + -Baum: k = (L-L M -L P )/2 (L K +L P ) = (248-4 - 4) / 2 (4 + 4) = 27 Blätter im B + -Baum (eingebettet): l = (L-L M -2L P )/2 (L K +L D ) = (248-4 - 8) / 2 (4 + 76) = 2 Blätter im B + -Baum (separate Speicherung): l = (L-L M -2L P )/2 (L K +L P ) = (248-4 - 8) / 2 (4 + 4) = 27. Zachmann Informatik 2 - SS 6 Bäume 29 Präfix-B-Bäume besonders günstig für Strings mit variabler Länge Präfix-B-Baum ist ein B-Baum, in dem kleine Präfixe der Schlüssel als Separator benutzt werden Präfix-B-Bäume benötigen weniger Platz und erlauben einen größeren Fan-Out für die Schlüssel Engels, Hegel, Kant, Marx, Plato, Schopenhauer genügt der erste Buchstabe Beispiel: pr Plan Planung Produkt Produktion Produktivität Produzent oft ist es günstiger, lange Zeichenketten zu komprimieren, z.b. Produkt, 7ion, 8vität, 5zent. Zachmann Informatik 2 - SS 6 Bäume 3 4

Bulk-Loading von B-Bäumen B-Bäume können schrittweise (durch Einfügen eines einzelnen Schlüssels) oder als Index für bereits vorhanden Daten erstellt werden Schrittweise Erstellung ist nicht effizient Bulk-Loading 3 Schritte lese Daten und extrahiere die Schlüssel-Zeiger-Paare sortiere die Paare erstelle den Index und aktualisiere. Zachmann Informatik 2 - SS 6 Bäume 32 Beispiel B + -Baum mit k = l = (aus Platzgründen) beginne mit den sortierten Schlüssel-Zeiger-Paaren und einer leeren Wurzel Wurzel sortierte Seiten, noch nicht im Index 3* 4* 6* 9* * * 2* 3* 2* 22* 23* 3* 35* 36* 38* 4* 44* 6 2* 3* 2* 22* 23* 3* 35* 36* 38* 4* 44* 3* 4* 6* 9* * *. Zachmann Informatik 2 - SS 6 Bäume 33 5

2* 22* 23* 3* 35* 36* 38* 4* 44* 6 2 3* 4* 6* 9* * * 2* 3* 2 38* 4* 44* 6 2 23 35 3* 4* 6* 9* * * 2* 3* 2* 22* 23* 3* 35* 36*. Zachmann Informatik 2 - SS 6 Bäume 34 44* 35 6 2 23 38 3* 4* 6* 9* * * 2* 3* 2* 22* 23* 3* 35* 36* 38* 4* Bem.: dieser einfache Algorithmus erzeugt fast minimale Belegung Wie kann diese Belegung verbessert werden?. Zachmann Informatik 2 - SS 6 Bäume 35 6

Demo http://slady.net/java/bt/. Zachmann Informatik 2 - SS 6 Bäume 36 Komplexitätsanalyse für B-Bäume Annahmen: jeder Knoten benötigt nur einen Zugriff auf externe Daten und jeder modifizierte Knoten wird nur einmal geschrieben Anzahl der Schlüssel-Zugriffe: Suche Pfad von Wurzel zu Knoten/Blatt falls lineare Suche im Knoten: O(k) pro Knoten insgesamt O(k log k n) Zugriffe im Worst-ase Aber: wirklich teuer sind read/write auf Platte renzen für den Lesezugriff beim Suchen (f = fetch ):. Zachmann Informatik 2 - SS 6 Bäume 37 7

Kosten für Insert f = Anzahl "Fetches", w = Anzahl "Writes" 2 Fälle: kein Split: f min = h, w min = Wurzel-Split: f max = h, w max = 2h+ bei maximalen Split-Operationen ist das Einfügen teuer, das passiert aber selten Abschätzung der Split-Wahrscheinlichkeit: höchste Split-Zahl (rel. zur Anzahl Knoten) tritt auf bei der Konstruktion eines minimal belegten Baums Anzahl der Knoten im minimal belegten Baum ist: im minimal belegten Baum gibt es höchstens N(n)- Splits, die Wahrscheinlichkeit für einen Split ist daher. Zachmann Informatik 2 - SS 6 Bäume 39 Eine Insert-Operation erfordert das Schreiben einer Seite, eine Split-Operation erfordert ungefähr 2 Schreib-Operationen durchschnittlicher Aufwand für Insert:. Zachmann Informatik 2 - SS 6 Bäume 4 8

Kosten für Löschen Mehrere Fälle:. Best-ase: b > k, kein Underflow f min = h w min = 2. "Underflow" wird durch Rotation beseitigt (keine Fortpflanzung): f rot = h+ w rot = 3 3. Mischung ohne Fortpflanzung: f mix = h+ w mix = 2 4. Worst-ase: Mischen bis hinauf zum Wurzel-Kind, Rotation beim Wurzel-Kind: f max = 2h- w max = h+. Zachmann Informatik 2 - SS 6 Bäume 4 Durchschnittliche Kosten für Löschen Obere Schranke unter der Annahme, daß alle Schlüssel nacheinander gelöscht werden kein Underflow: f = h, w 2 Zusätzliche Kosten für die Rotation (höchstens ein Underflow pro gelöschtem Schlüssel): f 2 =, w 2 2 Zusätzliche Kosten für das Mischen: Mix-Operation = Elemente eines Knotens in Nachbarknoten mischen und Knoten löschen, d.h., Mix mit Propagation = bis zu h Mix-Op. maximale Anzahl von Mix-Operationen: Kosten pro Mix-Operation: read und write zusätzliche Kosten pro Schlüssel:. Zachmann Informatik 2 - SS 6 Bäume 42 9

Addition ergibt:. Zachmann Informatik 2 - SS 6 Bäume 43 Digitale Suchbäume & Binäre Tries Bisher: Traversierung durch Baum wurde gelenkt durch Vergleich zwischen gesuchtem Key und Key im Knoten Idee: lenke Traversierung durch Bits/Ziffern/Zeichen im Key Ab jetzt: Schlüssel sind Bitketten / Zeichenfolgen feste Länge ->,,, variable Länge -> $, $, $, $ Anwendung IP-Routing, Paket-Klassifizierung, Firewalls IPv4 32 bit IP-Adresse IPv6 28 bit IP-Adresse. Zachmann Informatik 2 - SS 6 Bäume 44

Digitale Suchbäume (DST = digital search trees) Annahme: feste Anzahl an Bits Konstruktion: Wurzel enthält irgendeinen Schlüssel alle Schlüssel, die mit beginnen, sind im linken Unterbaum alle Schlüssel, die mit beginnen, sind im rechten Unterbaum linker und rechter Unterbaum sind jeweils Unterbäume der verbleibenden Schlüssel. Zachmann Informatik 2 - SS 6 Bäume 45 Beispiel Starte mit leerem Suchbaum: füge den Schlüssel ein Bemerkungen: Aussehen des Baumes hängt von der Reihenfolge des Einfügungens ab! Es gilt nicht: Keys (ilnker Teilb.) < Key in Wurzel < Keys( rechter Teilb.)! Es gilt aber: Keys (linker Teilbaum) < Keys(rechter Teilbaum). Zachmann Informatik 2 - SS 6 Bäume 46

Suchen: vergleiche gesuchten Key mit Key im Knoten falls gleich: fertig sonst: vergleiche auf der i-ten Stufe das i-te Bit rechter Unterbaum linker Unterbaum Anzahl der Schlüsselvergleiche: O(Höhe) = O(#Bits pro Schlüssel) Komplexität aller Operationen (Suchen, Einfügen, Löschen) : O( (#Bits pro Schlüssel) 2 ) hohe Komplexität wenn Schlüssellänge sehr groß. Zachmann Informatik 2 - SS 6 Bäume 47 Python-ode def digit(value, bitpos): return (value >> bitpos) & x def searchr(node, key, d): if node == None: return None if key == node.item.key: return node.item if digit(key, d) == : return searchr(node.left, key, d+) else: return searchr(node.right, key, d+) class DigitalSearchTree:... def search(self,key): return searchr(self.head, key, ). Zachmann Informatik 2 - SS 6 Bäume 48 2

Binäre Tries Ziel: höchstens Schlüsselvergleich pro Operation Zum Begriff: Information Retrieval Aussprache wie "try" 2 Arten von Knoten Verzweigungsknoten: linke und rechte Kindsknoten, keine Datenfelder Elementknoten: keine Kindsknoten, Datenfeld mit Schlüssel. Zachmann Informatik 2 - SS 6 Bäume 49 Einfügen Füge Schlüssel ein: Kosten: Vergleich. Zachmann Informatik 2 - SS 6 Bäume 5 3

Entfernen Entferne Schlüssel : Kosten: Vergleich. Zachmann Informatik 2 - SS 6 Bäume 5 Entfernen Entferne Schlüssel : Kosten: Vergleich. Zachmann Informatik 2 - SS 6 Bäume 52 4

Implementierung class Trie:... def insert(self,item): self.head = insertr(self.head, item, ) def insertr(node, item, d): if node == None: return TrieNode(item) if (node.left == None) and (node.right == None): return split( TrieNode(item), node, d ) if digit(item.key, d) == : node.left = insertr(node.left, item, d+) else: node.right = insertr(node.right, item, d+) return node. Zachmann Informatik 2 - SS 6 Bäume 53 def split(nodep, nodeq, d): noden = TrieNode(None) splitcase = 2 * digit(nodep.item.key, d) + digit(nodeq.item.key, d) if splitcase == : # noden.left = split(nodep, nodeq, d+) elif splitcase == 3: # noden.right = split(nodep, nodeq, d+) elif splitcase == : # noden.left = nodep noden.right = nodeq elif splitcase == 2: # noden.left = nodeq noden.right = nodep else: print "an't happen!" return noden. Zachmann Informatik 2 - SS 6 Bäume 54 5