Gewichtsbalancierte Suchbäume

Slides:



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

Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Eine dynamische Menge, die diese Operationen unterstützt,
Suchbäume unterstützen alle unten angegebenen Operationen für dynamische Mengen K effizient: Search(K ,k) ---- Suche ein Element x von K mit Schlüssel.
DNA-Array oder DNA-Chip
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Christian Schindelhauer
7.2 B-Bäume / B*-Bäume als Hilfsmittel zur Indexorganisation
Mindesthöhe: |_log2 n_|, maximale Höhe: n-1
Claudio Moraga; Gisbert Dittrich
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
Algorithmen und Datenstrukturen
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
B-Bäume.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Durchlaufen eines Binärbaumes
Kapitel 6. Suchverfahren
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
<d,a,s, ,i,s,t, ,e,i,n,e, ,L,i,s,t,e>
Balancierte Bäume Effizienz der Wörterbuchoperationen auf Bäumen hängt direkt von der Baumhöhe ab. Baum mit n Knoten: Mindesthöhe: |_log2 n_|, maximale.
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
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.
Synonyme: Stapel, Keller, LIFO-Liste usw.
Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur
Sortieren mit Binären Bäumen
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Effizienz: Indexstrukturen
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
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.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - Balancierte Bäume, AVL-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – Bruder-Bäume, B-Bäume) Prof. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Bäume-
Externe Datenstruktur lineare Liste
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Splay Trees Von Projdakov Benjamin.
Effiziente Algorithmen
Diskrete Mathematik II
Effiziente Algorithmen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Vorlesung Binärer Suchbaum II-
Graphen und Bäume.
Kapitel 6: Suchbäume und weitere Sortierverfahren
Kapitel 6: Suchbäume und weitere Sortierverfahren
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Binärer Suchbaum IV AVL-Baum I
Binärer Baum, Binärer Suchbaum I
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Diskrete Mathematik I Vorlesung 7 Binärer Suchbaum III.
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:
Vorlesung AVL-Bäume/Algorithmen-
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
 Präsentation transkript:

Gewichtsbalancierte Suchbäume Gewichtsbalancierte oder BB-Bäume (bounded balance): Zulässige Abweichung der Struktur vom ausgeglichenen Binärbaum wird als Differenz zwischen der Anzahl der Knoten im rechten und linken Unterbaum festgelegt. Definition: Sei B ein binärer Suchbaum mit linkem Unterbaum Bl und l die Anzahl der Blätter in Bl (n sei entsprechend die gesamte Anzahl der Blätter in B) (1)  ( B ) = l / n heißt die Wurzelbalance von B. (2) Ein Baum B heißt gewichtsbalanciert (BB ( )) oder von beschränkter Balance , wenn für jeden Unterbaum B‘ von B gilt:    ( B‘ )  1 - 

Parameter  als Freiheitsgrad im Baum  = 1/2 : Balancierungskriterium akzeptiert nur vollständige Binärbäume  < 1/2 : Strukturbeschränkung wird zunehmend gelockert ==> Welche Auswirkungen hat die Lockerung des Balancierungskriteriums auf die Kosten? Rebalancierung wird gewährleistet durch die Wahl von   1 -V2 / 2 Einsatz derselben Rotationstypen wie beim AVL - Baum Kosten für Suche und Aktualisierung: O ( log 2 n ) _

11. Kapitel: Mehrwegbäume Definition: Ein m-Wege-Suchbaum oder ein m-ärer Suchbaum B ist ein Baum, in dem alle Knoten einen Grad  m besitzen. Entweder ist B leer oder er hat folgende Eingenschaften: 1) Jeder Knoten des Baums hat folgende Struktur: b * K1 D1 * K2 D2 * . . . Kb Db * P0 P1 P2 Pb Die Pi , 0  i  b , sind Zeiger auf die Unterbäume des Knotens und die Ki und Di , 1  i  b sind Schlüsselwerte und Daten

2) Die Schlüsselwerte im Knoten sind aufsteigend geordnet: Ki  Ki+1 , 1  i < b . 3) Alle Schlüsselwerte im Unterbaum von Pi sind kleiner als der Schlüsselwert Ki+1, 0  i < b . 4) Alle Schlüsselwerte im Unterbaum von Pb sind größer als der Schlüsselwert Kb. 5) Die Unterbäume von Pi, 0  i  b sind auch m-Wege-Suchbäume. Die Di können Daten oder Zeiger auf die Daten repräsentieren. Zur Vereinfachung werden die Di weggelassen.

Wichtige Eigenschaften für alle Mehrwegbäume: S( Pi ) sei die Seite, auf die Pi zeigt, und K(Pi) die Menge aller Schlüssel, die im Unterbaum mit Wurzel S(Pi) gespeichert werden können. Dann gelten folgende Ungleichungen: 1) x  K( P0 ) : x < K1 2) x  K( Pi ) : Ki < x < Ki +1 für i = 1, 2, ... , b-1 3) x  K( Pb ) : Kb< x

Im ungünstigsten Fall ist der Baum völlig entartet: N = h Kostenanalyse: Die Anzahl der Knoten N in einem vollständigen Baum der Höhe h , h  1, ist h N =  m i i = 0 Im ungünstigsten Fall ist der Baum völlig entartet: N = h Schranken für die Höhe eines m-Wege Suchbaums: logm (N +1 )  h  N

m-Wege-Suchbäume Definition des Knotenformats #define Emax M-1 /* maximale Anzahl von Einträgen */ typedef int Index ; /* 0 ... Emax -1*/ typedef struct { Schluesseltyp Key; Infotype Info; Sptr Ptr; } Eintrag ; typedef struct { Index b ; /* Aktuelle Anzahl von Einträgen */ Sptr P0 ; Eintrag Evektor [Emax]; } Seite ; typedef Seite *Sptr;

Rekursive Prozedur zum Aufsuchen eines Schlüssels void Msuche (Schluesseltyp X, Sptr P, Eintrag Element) { Index i; if ( P == NULL ) printf („Schluessel X ist nicht im Baum ! \n“); else { if ( X < P --> Evektor[ 0 ].Key) /* X < K1 */ Msuche ( X, P --> P0, Element); else { i = 0 ; while ( ( i < P --> b-1 ) && ( X > P --> Evektor[ i ].Key) ) i++; } if ( P --> Evektor[ i ].Key == X) /* Ki =X, 0  i  b-1 */ Element = P --> Evektor [i]; /* Ki < X < K i+1, 0  i  b-1 oder X > Kb */ else Msuche( X , P --> Evektor[ i ].Ptr, Element ); } return ;

Durchlauf eines m-Wege-Suchbaums in symmetrischer Ordnung void Sym_ord( Sptr P) { Index i ; if ( P != NULL) { Sym_ord (P --> P0) ; for ( i = 0 ; i = P --> b -1 ; i++ ) printf ( „ Schluessel: %s \n“, P --> Evektor[ i ].Key); Sym_ord ( P --> Evektor [ i ].Ptr ); } return;

Ziel: Aufbau sehr breiter Bäume von geringer Höhe in Bezug auf Knotenstruktur vollständig ausgeglichen effiziente Durchführung der Grundoperationen Zugriffsverhalten weitgehend unabhängig von Anzahl der Sätze Weiterentwicklung der Mehrwegbäume: B- und B*-Baum B-Baum: 1970 von R. Bayer und E. McCreight entwickelt. Idee: dynamische Reorganisation eines Mehrwegbaumes durch Splitten und Mischen von Seiten. Grundoperationen: Einfügen eines Satzes Löschen eines Satzes direkter Schlüsselzugriff auf einen Satz sortiert, sequentieller Zugriff auf alle Sätze

B - Bäume Definition: 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 Baum mit folgenden Eigenschaften: 1) Jeder Pfad von der Wurzel zu einem Blatt hat die gleiche Länge h. 2) 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. 3) Jeder Knoten hat höchstens 2k+1 Söhne. 4) Jedes Blatt mit der Ausnahme der Wurzel als Blatt hat mindestens k und höchstens 2k Einträge.

Für einen B - Baum ergibt sich folgendes Knotenformat: * K1 D1 * K2 D2 * . . . Kb Db * freier Platz P0 P1 P2 Pb Einträge: Die Einträge für Schlüssel, Daten und Zeiger haben die festen Längen lb, lK, lD und lp. Die Knoten- oder Seitengröße sei L. Maximale Anzahl von Einträgen pro Knoten: L - lb - lp bmax = ------------ = 2k lK + lD + l p

Reformulierung der Definition: 4) und 3): Eine Seite darf höchstens voll sein. 4) und 2): Jede Seite (außer der Wurzel) muss mindestens halb voll sein. Die Wurzel enthält mindestens einen Schlüssel. 1): Der Baum ist, was die Knotenstruktur angeht, vollständig ausgeglichen. Höhe h: Bei einem Baum der Klasse  ( k , h ) mit n Schlüsseln gilt für seine Höhe: log2k+1 ( n + 1)  h  logk+1 ((n + 1) / 2 ) + 1 für n  1 und h = 0 für n = 0

Balancierte Struktur: unabhängig von der Schlüsselmenge unabhängig von ihrer Einfüge-Reihenfolge ==> Wie wird das erreicht ? Einfügen in B-Bäumen Was passiert, wenn die Wurzel überläuft ? * K1 * K2 * . . . * K 2k * K2k+1

Fundamentale Operation: Split-Vorgang ==> Aufteilung der Schlüsselmenge nach folgendem Prinzip: K1 K2 . . . Kk Kk + 2 . . . K2k + 1 Kk + 1 mittlere Schlüssel (Median) wird zum Vaterknoten gereicht Ggf. muss Vaterknoten angelegt werden (Anforderung einer neuen Seite) Hier wird eine neue Wurzel angelegt: * Kk + 1 * * K1* K2* . . . * Kk * * Kk + 2 * . . . * K2k + 1 *

Blattüberlauf erzwingt Split-Vorgang, was Einfügung in den Vaterknoten (ggf: Wurzel ) impliziert. Wenn dieser überläuft, folgt erneuter Split-Vorgang Split-Vorgang der Wurzel führt zu neuer Wurzel; Höhe des Baumes erhöht sich um 1. Bei B-Bäumen ist das Wachstum von den Blättern zur Wurzel hin gerichtet. Einfügealgorithmus (ggf. rekursiv ) Suche Einfüge-Position Wenn Platz vorhanden ist, speichere Element, sonst schaffe Platz durch Split-Vorgang und füge ein.

Split-Vorgang als allgemeines Wartungsprinzip . . . * Kn * Kn+1 * . . . Pn + 1 Pn * K1 * . . . * Kk * Kk+1 * . . . * K2 k * K2 k +1 * P0 P1 Pk-1 Pk Pk + 1 P2 k P2 k + 1 . . . * Kn * Kk + 1 * Kn +1 * . . . Pn + 1 Pn P‘ * K1 * . . . * Kk * * Kk +2 * . . . * K2 k+1 * P0 P1 Pk Pk + 1 Pk + 2 P2 k + 1

Kostenmaße Anzahl der zu holenden Seiten: f (fetch) Anzahl der zu schreibenden Seiten : w ( write) Direkte Suche f min = 1 : der Schlüssel befindet sich in der Wurzel f max = h : der Schlüssel ist in einem Blatt 1 k 1 2k mittlere Zugriffskosten h -  f avg  h - ( für h > 1 ) Beim B -Baum sind die maximalen Zugriffskosten h eine gute Abschätzung der mittleren Zugriffskosten. ==> Bei h = 3 und einem k = 100 ergibt sich 2.99  f avg  2.995

Sequentielle Suche Durchlauf in symmetrischer Ordnung : f seq = N Pufferung der Zwischenknoten im HSP wichtig ! Einfügen Günstigster Fall - kein Split-Vorgang: fmin = h ; wmin = 1 Durchschnittlicher Fall : favg = h ; wavg < 1 + 2k