Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

G.Heyer Algorithmen und Datenstrukturen 1 Gewichtsbalancierte Suchbäume Gewichtsbalancierte oder BB-Bäume (bounded balance): Zulässige Abweichung der Struktur.

Ähnliche Präsentationen


Präsentation zum Thema: "G.Heyer Algorithmen und Datenstrukturen 1 Gewichtsbalancierte Suchbäume Gewichtsbalancierte oder BB-Bäume (bounded balance): Zulässige Abweichung der Struktur."—  Präsentation transkript:

1 G.Heyer Algorithmen und Datenstrukturen 1 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 B l und l die Anzahl der Blätter in B l (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 -

2 G.Heyer Algorithmen und Datenstrukturen 2 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 - V 2 / 2 Einsatz derselben Rotationstypen wie beim AVL - Baum Kosten für Suche und Aktualisierung: O ( log 2 n ) _

3 G.Heyer Algorithmen und Datenstrukturen 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: P1P1 b*K1K1 D1D1 *K2K2 D2D2 KbKb... *DbDb * P0P0 P2P2 PbPb Die P i, 0 i b, sind Zeiger auf die Unterbäume des Knotens und die K i und D i, 1 i b sind Schlüsselwerte und Daten

4 G.Heyer Algorithmen und Datenstrukturen 4 2) Die Schlüsselwerte im Knoten sind aufsteigend geordnet: K i K i+1, 1 i < b. 3) Alle Schlüsselwerte im Unterbaum von P i sind kleiner als der Schlüsselwert K i+1, 0 i < b. 4) Alle Schlüsselwerte im Unterbaum von P b sind größer als der Schlüsselwert K b. 5) Die Unterbäume von P i, 0 i b sind auch m-Wege-Suchbäume. Die D i können Daten oder Zeiger auf die Daten repräsentieren. Zur Vereinfachung werden die D i weggelassen.

5 G.Heyer Algorithmen und Datenstrukturen 5 Wichtige Eigenschaften für alle Mehrwegbäume: S( P i ) sei die Seite, auf die P i zeigt, und K(P i ) die Menge aller Schlüssel, die im Unterbaum mit Wurzel S(P i ) gespeichert werden können. Dann gelten folgende Ungleichungen: 1)x K( P 0 ) :x < K 1 2)x K( P i ) : K i < x < K i +1 für i = 1, 2,..., b-1 3)x K( P b ) :K b < x

6 G.Heyer Algorithmen und Datenstrukturen 6 Kostenanalyse: Die Anzahl der Knoten N in einem vollständigen Baum der Höhe h, h 1, ist N = m i i = 0 h Im ungünstigsten Fall ist der Baum völlig entartet: N = h Schranken für die Höhe eines m-Wege Suchbaums: log m (N +1 ) h N

7 G.Heyer Algorithmen und Datenstrukturen 7 m-Wege-Suchbäume Definition des Knotenformats #define EmaxM-1/* maximale Anzahl von Einträgen */ typedefintIndex ;/* 0... Emax -1*/ typedefstruct { SchluesseltypKey; InfotypeInfo; SptrPtr; } Eintrag ; typedefstruct { Indexb ;/* Aktuelle Anzahl von Einträgen */ SptrP0 ; EintragEvektor [Emax]; } Seite ; typedefSeite *Sptr;

8 G.Heyer Algorithmen und Datenstrukturen 8 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 Evektor[ 0 ].Key)/* X < K 1 */ Msuche ( X, P --> P0, Element); else { i = 0 ; while ( ( i b-1 ) && ( X > P --> Evektor[ i ].Key) ) i++; } if ( P --> Evektor[ i ].Key == X) /* K i =X, 0 i b-1 */ Element = P --> Evektor [i]; /* K i K b */ else Msuche( X, P --> Evektor[ i ].Ptr, Element ); } return ; }

9 G.Heyer Algorithmen und Datenstrukturen 9 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; }

10 G.Heyer Algorithmen und Datenstrukturen 10 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

11 G.Heyer Algorithmen und Datenstrukturen 11 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.

12 G.Heyer Algorithmen und Datenstrukturen 12 Für einen B - Baum ergibt sich folgendes Knotenformat: b*K1K1 D1D1 *K2K2 D2D2 KbKb... *DbDb * P0P0 P2P2 PbPb P1P1 freier Platz L Einträge: Die Einträge für Schlüssel, Daten und Zeiger haben die festen Längen l b, l K, l D und l p. Die Knoten- oder Seitengröße sei L. Maximale Anzahl von Einträgen pro Knoten: b max = = 2k L - l b - l p l K + l D + l p

13 G.Heyer Algorithmen und Datenstrukturen 13 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: log 2k+1 ( n + 1) h log k+1 ((n + 1) / 2 ) + 1 für n 1 und h = 0 für n = 0

14 G.Heyer Algorithmen und Datenstrukturen 14 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 ? * K 1 * K 2 *... * K 2k * K 2k+1

15 G.Heyer Algorithmen und Datenstrukturen 15 Fundamentale Operation: Split-Vorgang ==> Aufteilung der Schlüsselmenge nach folgendem Prinzip: K 1 K 2... K k K k + 1 K k K 2k + 1 mittlere Schlüssel (Median) wird zum Vaterknoten gereicht Ggf. muss Vaterknoten angelegt werden (Anforderung einer neuen Seite) Hier wird eine neue Wurzel angelegt: * K k + 1 * * K 1 * K 2 *... * K k ** K k + 2 *... * K 2k + 1 *

16 G.Heyer Algorithmen und Datenstrukturen 16 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.

17 G.Heyer Algorithmen und Datenstrukturen 17 Split-Vorgang als allgemeines Wartungsprinzip... * K n * K n+1 *... * K 1 *... * K k * K k+1 *... * K 2 k * K 2 k +1 * P0P0 P0P0 PnPn P n + 1 P k + 1 PkPk P k-1 P1P1 P 2 k + 1 P 2 k... * K n * K k + 1 * K n +1 *... * K 1 *... * K k ** K k +2 *... * K 2 k+1 * PnPn P n + 1 P1P1 P 2 k + 1 P k + 1 PkPk P k + 2 P

18 G.Heyer Algorithmen und Datenstrukturen 18 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 mittlere Zugriffskosten h - 1k1k f avg h - 1 2k ( 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

19 G.Heyer Algorithmen und Datenstrukturen 19 Sequentielle Suche Durchlauf in symmetrischer Ordnung : f seq = N Pufferung der Zwischenknoten im HSP wichtig ! Einfügen Günstigster Fall - kein Split-Vorgang: f min = h ; w min = 1 Durchschnittlicher Fall : f avg = h ; w avg < 1 + 2k2k


Herunterladen ppt "G.Heyer Algorithmen und Datenstrukturen 1 Gewichtsbalancierte Suchbäume Gewichtsbalancierte oder BB-Bäume (bounded balance): Zulässige Abweichung der Struktur."

Ähnliche Präsentationen


Google-Anzeigen