Gewichtsbalancierte Suchbäume

19
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

description

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. - PowerPoint PPT Presentation

Transcript of Gewichtsbalancierte Suchbäume

Page 1: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen1

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 -

Page 2: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen2

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 )

_

Page 3: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen3

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:

P1

b * K1 D1 * K2 D2 Kb. . .* Db *

P0 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

Page 4: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen4

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.

Page 5: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen5

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

Page 6: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen6

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:logm (N +1 ) h N

Page 7: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen7

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;

Page 8: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen8

Rekursive Prozedur zum Aufsuchen eines Schlüsselsvoid 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 ; }

Page 9: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen9

Durchlauf eines m-Wege-Suchbaums in symmetrischer Ordnungvoid 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;

}

Page 10: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen10

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ätzeWeiterentwicklung der Mehrwegbäume: B- und B*-BaumB-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

Page 11: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen11

B - BäumeDefinition: 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.

Page 12: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen12

Für einen B - Baum ergibt sich folgendes Knotenformat:

b * K1 D1 * K2 D2 Kb. . .* Db *

P0 P2 PbP1

freier Platz

L

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:

bmax = ------------ = 2kL - lb - lp

lK + lD + l p

Page 13: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen13

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

Page 14: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen14

Balancierte Struktur:• unabhängig von der Schlüsselmenge

• unabhängig von ihrer Einfüge-Reihenfolge

==> Wie wird das erreicht ?

Einfügen in B-BäumenWas passiert, wenn die Wurzel überläuft ?

* K1 * K2 * . . . * K 2k * K2k+1

Page 15: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen15

Fundamentale Operation: Split-Vorgang==> Aufteilung der Schlüsselmenge nach folgendem Prinzip:

K1 K2 . . . Kk Kk + 1Kk + 2 . . . K2k + 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 *

Page 16: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen16

• 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.

Page 17: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen17

Split-Vorgang als allgemeines Wartungsprinzip. . . * Kn * Kn+1 * . . .

* K1 * . . . * Kk * Kk+1 * . . . * K2 k * K2 k +1 *

P0

P0

PnPn + 1

Pk + 1PkPk-1P1 P2 k + 1P2 k

. . . * Kn * Kk + 1 * Kn +1 * . . .

* K1 * . . . * Kk * * Kk +2 * . . . * K2 k+1 *

PnPn + 1

P1 P2 k + 1Pk + 1Pk Pk + 2

P‘

Page 18: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen18

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 - 1 k

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

Page 19: Gewichtsbalancierte Suchbäume

G.Heyer Algorithmen und Datenstrukturen19

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