Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

G.Heyer Algorithmen und Datenstrukturen 1 Löschen in B-Bäumen Die B-Baum-Eigenschaft muss wieder hergestellt werden, wenn die Anzahl der Elemente in einem.

Ähnliche Präsentationen


Präsentation zum Thema: "G.Heyer Algorithmen und Datenstrukturen 1 Löschen in B-Bäumen Die B-Baum-Eigenschaft muss wieder hergestellt werden, wenn die Anzahl der Elemente in einem."—  Präsentation transkript:

1 G.Heyer Algorithmen und Datenstrukturen 1 Löschen in B-Bäumen Die B-Baum-Eigenschaft muss wieder hergestellt werden, wenn die Anzahl der Elemente in einem Knoten kleiner als k wird. Durch Ausgleich mit Elementen aus einer Nachbarseite oder durch Mischen (Konkatenation) mit einer Nachbarseite wird dieses Problem gelöst. Maßnahme 1: Ausgleich durch Verschieben von Schlüsseln Voraussetzung: Nachbarseite P hat mehr als k Elemente ( Seite P hat k-1 Elemente)

2 G.Heyer Algorithmen und Datenstrukturen 2 Ausgleich durch Verschieben von Schlüsseln... K n-1 * K n * K n P P Ausgleich P b * K 1 *... * K b * P 1 P 0 P0P0 P1P1 P k K n-1 * K b * K n * K 1 *... * K b-1 * P 1 P 0 P b-1 P * K n * K 1 *... * K k-1 * P b P * K 1 *... * K k-1 * P1P1 P0P0 P k-1

3 G.Heyer Algorithmen und Datenstrukturen 3 Maßnahme 2: Mischen von Seiten... K n-1 * K n * K n P * K 1 *... * K k * P 1 P 0 * K 1 *... * K k-1 * P1P1 P0P0 P k-1 P k P... K n - 1 * K n Mischen * K 1 *... * K k * K n * K 1 *.. * K k - 1 * P P 0 P 1 P k P0P0 P1P1 P k-1

4 G.Heyer Algorithmen und Datenstrukturen 4 Löschalgorithmus 1) Löschen in Blattseite Suche x in Seite P Entferne x in P und wenn a) #Einträge k in P : tue nichts b) #E = k - 1 in P und #E > k in P: gleiche Unterlauf in P über P aus. c) #E = k - 1 in P und #E = k in P : mische P und P 2) Löschen in innerer Seite Suche x Ersetze x = K i durch kleinsten Schlüssel y in B ( P i ) oder größten Schlüssel y in B(P i - 1 ) (nächst größerer oder nächst kleinerer Schlüssel im Baum) Entferne y im Blatt P Behandle P wie unter 1

5 G.Heyer Algorithmen und Datenstrukturen 5 Kostenanalyse für das Löschen Günstigster Fall: f min = h ; w min = 1 Obere Schranke für durchschnittliche Löschkosten drei Anteile: 1) Löschen, 2) Ausgleich, 3) anteilige Mischkosten f avg f 1 + f 2 + f 3 < h k1k w avg w 1 + w 2 + w 3 < = 4 + 1k1k 1k1k

6 G.Heyer Algorithmen und Datenstrukturen 6 B* - Bäume Hauptunterschied zu B-Baum: In inneren Knoten wird nur die Wegweiser-Funktion ausgenutzt. Innere Knoten führen nur (K i, P i ) als Einträge. Information ( K i, D i ) wird in den Blattknoten abgelegt. Für einige K i ergibt sich eine redundante Speicherung. Die inneren Knoten bilden also einen Index, der einen schnellen direkten Zugriff zu den Schlüsseln gestattet. Der Verzweigungsgrad erhöht sich beträchtlich, was wiederum die Höhe des Baumes reduziert. Die Blätter enthalten alle Schlüssel mit ihren zugehörigen Daten in Sortierreihenfolge. Durch Verkettung aller Blattknoten lässt sich eine effiziente sequentielle Verarbeitung erreichen, die beim B-Baum einen umständlichen Durchlauf in symmetrischer Ordnung erforderte.

7 G.Heyer Algorithmen und Datenstrukturen 7 B*- Baum ist die für den praktischen Einsatz wichtigste Variante des B-Baums. Definition: Seien k, k* und h* ganze Zahlen, h* 0, k, k* > 0. Ein B*-Baum B der Klasse ( k, k*, h* ) ist entweder ein leerer Baum oder ein geordneter Baum für den gilt: 1) Jeder Pfad von der Wurzel zu einem Blatt besitzt die gleiche Länge h*. 2) Jeder Knoten außer der Wurzel und den Blättern hat mindestens k+1 Söhne, die Wurzel mindestens 2 Söhne, außer wenn sie ein Blatt ist. 3) Jeder innere Knoten hat höchstens 2k+1 Söhne. 4) Jeder Blattknoten mit Ausnahme der Wurzel als Blatt hat mindestens k* und höchstens 2k* Einträge. Bemerkung: Der so definierte Baum heißt in der Literatur gelegentlich auch B + - Baum.

8 G.Heyer Algorithmen und Datenstrukturen 8 B* - Bäume (2) Unterscheidung von zwei Knotenformaten: M * K 1 *... K b *freier Platz P0P0 P1P1 PbPb L innerer Knoten k b 2k Blattknoten k* m 2k* M * * K 1 D 1 K 2 D 2... K m D m freier Platz P PNPN Feld M enthalte die Kennung des Seitentyps sowie die Zahl der aktuellen Einträge.

9 G.Heyer Algorithmen und Datenstrukturen 9 Da die Seiten eine feste Länge L besitzen, lässt sich aufgrund der obigen Formate k und k* bestimmen: L = l M + l P + 2. k ( l K + l P ) ; k = L - l M - l P 2 * ( l K + l P ) L = l M + 2. l P + 2. k* ( l K + l D ); k* = L - l M - 2 l P 2 * ( l K + l D ) Höhe des B*-Baumes l + log 2k + 1 n 2k* h* 2 + log k + 1 für h* 2 n 2k*

10 G.Heyer Algorithmen und Datenstrukturen 10 B* - Bäume (3) B*-Baum lässt sich auffassen als eine gekettete sequentielle Datei von Blättern, die einen Indexteil besitzt, der selbst ein B-Baum ist. Im Indexteil werden insbesondere beim Splitt-Vorgang die Operationen des B-Baums eingesetzt.... Indexteil: B-Baum von Schlüsseln sequentielle sortierte Datei der Blätter

11 G.Heyer Algorithmen und Datenstrukturen 11 Grundoperationen beim B*-Baum 1) Direkte Suche: Da alle Schlüssel in den Blättern, kostet jede direkte Suche h* Zugriffe. h* ist jedoch im Mittel kleiner als h in B-Bäumen. Da f avg beim B-Baum mit h abgeschätzt werden kann, erhält man also durch B*-Baum eine effizientere Lösung. 2) Sequentielle Suche: Erfolgt nach Aufsuchen des Linksaußen der Struktur unter Ausnutzung der Verkettung der Blattseiten. Es sind zwar ggf. mehr Blätter als beim B-Baum zu verarbeiten, doch da nur h*-1 innere Knoten aufzusuchen sind, wird die sequentielle Suche ebenfalls effizienter ablaufen.

12 G.Heyer Algorithmen und Datenstrukturen 12 Grundoperationen beim B*-Baum (2) 3) Einfügen: Von Durchführung und Leistungsverhalten dem Einfügen in einem B-Baum sehr ähnlich. Bei inneren Knoten wird die Spaltung analog zum B-Baum durchgeführt. Beim Split-Vorgang einer Blattseite muss gewährleistet sein, dass jeweils die höchsten Schlüssel einer Seite als Wegweiser in den Vaterknoten kopiert werden. 4) Löschen: Datenelemente werden immer von einem Blatt entfernt (keine komplexe Fallunterscheidung wie beim B-Baum). Weiterhin muss beim Löschen eines Schlüssels aus einem Blatt dieser Schlüssel nicht aus dem Indexteil entfernt werden; er behält seine Funktion als Wegweiser.

13 G.Heyer Algorithmen und Datenstrukturen 13 Präfix - Suffix - Komprimierung ermöglicht beim B*-Baum weit höhere Anzahl von Einträgen pro Seite (Lauflängenkomprimierung) Gespeichert werden nur solche Zeichen eines Schlüssels, die sich vom Vorgänger und Nachfolger unterscheiden.

14 G.Heyer Algorithmen und Datenstrukturen 14 Allgemeine Zusammenhänge: B-BaumB*-Baum n min 2. ( k + 1 ) h k*. ( k + 1 ) h* - 2 n max ( 2k + 1 ) h - 12k*. ( 2k + 1 ) h* - 1 B - Baum Datensätze separat (k=85) Datensätze eingebettet (k=12) h n min n max n min n max

15 G.Heyer Algorithmen und Datenstrukturen 15 B* - Baum Datensätze separat Datensätze eingebettet ( k = 127, k* = 127 ) ( k = 12, k* = 127 ) hn min n max n min n max

16 G.Heyer Algorithmen und Datenstrukturen 16 Konzept des Mehrwegbaumes: Aufbau sehr breiter Bäume von geringer Höhe Bezugsgröße: Seite als Transporteinheit zum Externspeicher Seiten werden immer größer, d. h., das Fan-out wächst weiter. B- und B*-Baum gewährleisten eine balancierte Struktur unabhängig von der Schlüsselmenge unabhängig von ihrer Einfüge-Reihenfolge Standard-Zugriffspfadstruktur in DBS: B*-Baum

17 G.Heyer Algorithmen und Datenstrukturen 17 Wichtigste Unterschiede des B*-Baums zum B-Baum Strikte Trennung zwischen Datenteil und Indexteil. Datenelemente stehen nur in den Blättern des B*-Baums. Schlüssel innerer Knoten haben nur Wegweiserfunktion. Sie können auch durch beliebige Trenner ersetzt oder durch Komprimierungs-Algorithmen verkürzt werden. Kürzere Schlüssel oder Trenner in den inneren Knoten erhöhen den Verzweigungsgrad des Baums und verringern damit seine Höhe. Die redundant gespeicherten Schlüssel erhöhen den Speicherplatz-Bedarf nur geringfügig ( < 1 % ) Der Löschalgorithmus ist einfacher Verkettung der Blattseiten ergibt schnellere sequentielle Verarbeitung

18 G.Heyer Algorithmen und Datenstrukturen 18 Verbesserung der Baumbreite durch Schlüsselkomprimierung Präfix-Suffix-Komprimierung sehr effektiv Schlüssellängen von Bytes werden im Mittel auf 1.3 bis 1.8 Bytes reduziert. Gibt es bessere Strukturen für die direkte Suche im Hauptspeicher und auf Externspeicher? AVL - Baum: O(log 2 n) Vergleiche B*-Baum: E / A - Kosten O(log k* (n)), vielfach 3 Zugriffe Bisher: Allokation des Satzes als physikalischer Nachbar des Vorgängers oder beliebige Allokation und Verknüpfung durch Zeiger Suche über Schlüsselvergleich

19 G.Heyer Algorithmen und Datenstrukturen 19 Gestreute Speicherungsstrukturen (Hashing) (Schlüsseltransformation, Adressberechnungs-Verfahren, key-to-address transformation, scatter-storage technique usw.) Berechnung der Satzadresse SA( i ) aus Satzschlüssel K i ==> Schlüsseltransformation Speicherung des Satzes bei SA( i ) Ziele Schnelle direkte Suche: Schlüsseltransformation Gleichverteilung der Sätze (möglichst wenig Synonyme)

20 G.Heyer Algorithmen und Datenstrukturen 20 Definition: S sei Menge aller möglichen Schlüsselwerte eines Satztyps (Schlüsselraum) und A = { 0, 1,..., m - 1} das Intervall der ganzen Zahlen von 0 bis m - 1. Eine Hash-Funktion h: S A ordnet dann jedem möglichen Schlüssel s S des Satztyps eine Zahl aus A als Adresse in einer Hash-Tabelle zu.

21 G.Heyer Algorithmen und Datenstrukturen 21 Abstrakte ADT-Definition DatentypHASHTAB Basistyp{ Schlüssel }, { Daten } Operationen: ERZEUGEN: HASHTAB ; EINFÜGEN: HASHTAB x { Schlüssel } x {Daten} HASHTAB ; LÖSCHEN: HASHTAB x { Schlüssel } HASHTAB ; SUCHE: HASHTAB x { Schlüssel } {Daten} {error} Axiome HT HASHTAB, K, K {Schlüssel}, D {Daten} : SUCHE ( ERZEUGEN, K) = error ; LÖSCHEN ( ERZEUGEN, K ) = ERZEUGEN; LÖSCHEN ( EINFÜGEN ( HT, K, D), K ) = IF K = K THEN HT ELSE EINFÜGEN ( LÖSCHEN ( HT, K ), K, D ) ; SUCHE ( EINFÜGEN ( HT, K, D ), K ) = IF K = K THEN D ELSE SUCHE ( HT, K ) ;

22 G.Heyer Algorithmen und Datenstrukturen 22 Direkte Adressierung Einfachste Technik zur Umsetzung eines Satzschlüssels h ist eine injektive Funktion. Für jeden Schlüssel aus S muss Speicherplatz bereitgehalten werden, d. h. die Menge aller möglichen Schlüssel ist bekannt. Parameter l = Schlüssellänge, b = Basis, m = #Speicherplätze n p = #S =b mögliche Schlüssel n a = #K = # vorhandene Schlüssel

23 G.Heyer Algorithmen und Datenstrukturen 23 Abbildung zur direkten Adressierung S A h n a n p = #S m = #A = n p

24 G.Heyer Algorithmen und Datenstrukturen 24 Wenn K bekannt ist und K fest bleibt, kann leicht eine injektive Abbildung h : K { 0,..., m - 1 } z. B. wie folgt berechnet werden: Die Schlüssel in K werden lexikographisch geordnet und auf ihre Ordnungsnummern abgebildet oder der Wert eines Schlüssels K i oder eine einfache ordnungserhaltende Transformation dieses Wertes ( Division / Multiplikation mit einer Konstanten ) ergibt die Adresse: A i = h ( K i ) = K Perfektes Hashing

25 G.Heyer Algorithmen und Datenstrukturen 25 Hashing Annahmen: Die Menge der möglichen Schlüssel ist meist sehr viel größer als die Menge der verfügbaren Speicheradressen h ist nicht injektiv A S h n a n p = #S m = #A n a

26 G.Heyer Algorithmen und Datenstrukturen 26 Der für das Hashing verfügbare Speicherplatz heißt Hash-Tabelle Definitionen: Zwei Schlüssel K i und K j K kollidieren (bzgl. einer Hash-Funktion h ) gdw. h (K i ) = h (K j ). Tritt für K i und K j eine Kollision auf, so heißen diese Schlüssel Synonyme. Die Menge der Synonyme bezüglich einer Speicheradresse A i heißt Kollisionsklasse. Für die Hash-Funktion h gelten folgende Forderungen: Sie soll sich einfach und effizient berechnen lassen Sie soll eine möglichst gleichmäßige Belegung von HT erzeugen. Sie soll möglichst wenige Kollisionen verursachen.

27 G.Heyer Algorithmen und Datenstrukturen 27 Leistungsfähigkeit einer Hash-Funktion: Einflussgrößen und Parameter Belegungsgrad der Hash-Tabelle HT Anzahl der Sätze, die sich auf einer Adresse speichern lassen, ohne eine Kollision auszulösen (Bucket-Kapazität) Technik zur Kollisionsauflösung Verteilung der aktuell benutzten Schlüssel ggf. Reihenfolge der Speicherung der Sätze (auf Hausadresse zuerst !) Eine gute Hash-Funktion soll auch ungleich verteilte Schlüssel möglichst gleichmäßig auf die Adressen von HT verteilen.


Herunterladen ppt "G.Heyer Algorithmen und Datenstrukturen 1 Löschen in B-Bäumen Die B-Baum-Eigenschaft muss wieder hergestellt werden, wenn die Anzahl der Elemente in einem."

Ähnliche Präsentationen


Google-Anzeigen