54
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät für Angewandte Wissenschaften Albert-Ludwigs-Universität Freiburg Balanzierte Bäume

Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Embed Size (px)

Citation preview

Page 1: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II, SS 2008Algorithmen und Datenstrukturen

Vorlesung 19Prof. Dr. Thomas Ottmann

Algorithmen & Datenstrukturen, Institut für InformatikFakultät für Angewandte WissenschaftenAlbert-Ludwigs-Universität Freiburg

Balanzierte Bäume

Page 2: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 2

Balancierte Bäume

Eine Klasse von binären Suchbäumen ist balanciert, wenn jede der drei Wörterbuchoperationen

SuchenEinfügenEntfernen

von Schlüsseln für einen Baum mit n Schlüsseln stets (im worst case) in O(log n) Schritten ausführbar ist.

Mögliche Balanzierungsbedingungen:

Höhenbedingung AVL-BäumeGewichtsbedingung BB[]-BäumeStrukturbedingungen Bruder-, 2-3-, a-b-, B-Bäume

Ziel: Höhe eines Baumes mit n Schlüsseln bleibt stets in O(log n).

Page 3: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 3

AVL-Bäume

Schöpfer: Adelson-Velskii und Landis (1962)

Suchen, Einfügen und Entfernen eines Schlüssels in einem zufälligerzeugten natürlichen Suchbaum mit n Schlüsseln ist im Mittel in O(log2 n) Schritten ausführbar.

Der Worst Case liegt jedoch bei Ω(n).

Idee von AVL-Bäumen: Modifizierte Prozeduren zum Einfügen undLöschen, die ein Degenerieren des Suchbaums verhindern.

Ziel von AVL-Bäumen: Höhe sollte O(log2 n) und das Suchen, Einfügenund Löschen sollte in logarithmischer Zeit möglich sein.

Page 4: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 4

Definition von AVL-Bäumen

Definition: Ein binärer Suchbaum heißt AVL-Baum oder höhenbalanciert, wenn für jeden Knoten v gilt, dass sich die Höhe des rechten Teilbaumes h(Tr) von v und die Höhe des linken Teilbaumes h(Tl) von v um maximal 1 unterscheiden.

Balancegrad:}1,0,1{)()()( lr ThThvbal

Page 5: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 5

Beispiele

AVL-Baum kein AVL-Baum AVL-Baum

Page 6: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 6

Eigenschaften von AVL-Bäumen

AVL-Bäume können nicht zu linearen Listen degenerieren.

AVL-Bäume mit n Knoten haben eine Höhe von O(log n).

Offenbar gilt:

Ein AVL-Baum der Höhe 0 hat 1 Blatt

Ein AVL-Baum der Höhe 1 hat 2 Blätter

ein AVL-Baum der Höhe 2 mit minimaler Blattzahl hat 3 Blätter

. . .

Wie viele Blätter hat ein AVL-Baum der Höhe h mit minimaler Blattzahl?

Page 7: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 7

Minimale Blattanzahl von AVL-Bäumen mit Höhe h

Folgerung: Ein AVL-Baum der Höhe h hat mindestens Fh+2 Blätter mit

F0 = 0

F1 = 1

Fi+2 = Fi+1 + Fi

Fi ist die i-te Fibonacci-Zahl.

h + 1

h h + 2

Page 8: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 8

Minimaler AVL-Baum der Höhe 9

Page 9: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 9

Höhe eines AVL-Baumes

Satz: Die Höhe h eines AVL-Baumes mit n Blättern (und n - 1 inneren Knoten) beträgt höchstens, c * log2 n + 1, d.h.

h ≤ c log2 n + 1, mit einer Konstanten c.

Beweis: Für die Fibonacci-Zahlen gilt:

Wegen

n ≥ Fh+2 1.894... * 1.618 . . .h

folgt somit

h

hh

hF ...618.1*...7236.02

512

51

5

111

.1log..44.1...618.1log

...7236.0loglog*

...618.1log

12

2

22

2

nnh

Page 10: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 10

Einfügen in einen AVL-Baum

Bei jeder Modifikation des Baums müssen wir garantieren, dass dieAVL-Baum-Eigenschaft erhalten bleibt.

Ausgangssituation: Nach Einfügen von 5:

Problem: Wie können wir den neuen Baum so modifizieren, dass ein

AVL-Baum daraus entsteht?

7 7

4

5

44

Page 11: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 11

Speichern des Balancegrads in den Knoten

Um die AVL-Baum-Eigenschaft wiederherzustellen, genügt es, in jedem Knoten den Balancegrad mitzuführen.

Laut Definition gilt

bal(p) = h(p.right) – h(p.left) {-1, 0, 1}

Beispiel: -1

-1 +1

+1 00

0

Page 12: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 12

Der Baum ist leer: Schaffe einen einzigen Knoten mit zwei Blättern,

speichere dort x und fertig!

Der Baum ist nicht leer und die Suche endet bei einem Blatt.

Sei Knoten p Vater des Blattes, bei dem Suche endet.

Wegen bal(p) {-1, 0, 1} muss gelten, dass entweder

der linke Nachfolger von p ein Blatt ist, aber nicht der rechte (Fall 1) oder

der rechte Nachfolger von p ein Blatt ist aber nicht der linke (Fall 2) oder

p beide Nachfolger von p sind Blätter (Fall 3).

x

AVL-Einfügen: Die verschiedenen Fälle

Page 13: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 13

Fall 1: [bal(p) = + 1] und x < p.key, da Suche bei Blatt mit Vater p endet.

fertig!

Gesamthöhe unverändert (1)

p

0

+1 p

0

0

x

Page 14: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 14

Fall 2: [bal(p) = - 1] und x > p.key, da Suche bei Blatt mit Vater p endet.

fertig!

Gesamthöhe unverändert (2)

Beide Fälle sind unkritisch. Die Höhe des Teilbaums, in dem p sich

befindet, ändert sich nicht.

p

x

0

0

p -1

0

Page 15: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 15

Der kritische Fall

Fall 3: [bal(p) = 0] Dann sind beide Söhne von p Blätter. Die Höhe wächst!

Wir unterscheiden, ob wir den neuen Schlüssel x als rechten oder linken Nachfolger von p einfügen müssen:

bal(p) = 0 und x > p.key bal(p) = 0 und x p.key

In beiden Fällen benötigen wir eine Prozedur upin(p), die den Suchpfadzurückläuft, die Balancegrade prüft und Umstrukturierungen (sogenannte Rotationen oder Doppelrotationen) durchführt.

p 0 p

0

-1

x

k kp 0 p 1

x

k k

Page 16: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 16

Die Prozedur upin(p)

Wenn upin(p) aufgerufen wird, ist stets bal(p) {-1, 1} und dieHöhe des Teilbaums mit Wurzel p ist um 1 gewachsen.

upin(p) startet bei p und geht schrittweise nach oben (ggf. bis zur Wurzel).

In jedem Schritt wird dabei versucht, die AVL-Baum-Eigenschaftwiederherzustellen.

Wir konzentrieren uns im folgenden auf die Situation, dass p linkerNachfolger seines Vorgängers φp ist.

Die Situation, dass p rechter Nachfolger seines Vorgängers φp ist, kannanalog behandelt werden.

Page 17: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 17

Fall1: bal(φp) = 1

Der Vorgänger φp hat den Balancegrad +1. Da sich die Höhe desTeilbaums mit Wurzel p als linker Nachfolger von φp um 1 erhöht hat, genügt es, den Balancegrad von φp auf 0 zu setzen:

φp +1

p

φp 0

p

fertig!

Page 18: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 18

Fall 2: bal(φp) = 0

Der Vorgänger φp hat den Balancegrad 0. Da sich die Höhe desTeilbaums mit Wurzel p als linker Nachfolger von φp sich um 1 erhöht hat, ändert sich der Balancegrad von φp auf -1. Da sich gleichzeitig die Höhe des Teibaums mit Wurzel φp verändert hat, müssen wir upin rekursiv mit φp als Argument aufrufen.

φp 0

p

φp -1

p

upin(φp)

Page 19: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 19

Der kritische Fall 3: bal(φp) = -1

Wenn bal(φp) = -1 und die Höhe des linken Teilbaums p von φp um 1gewachsen ist, muss die AVL-Baum-Eigenschaft in φp verletzt sein.

In diesem Fall müssen wir den Baum umstrukturieren.

Erneut unterscheiden wir zwei Fälle, nämlich bal(p) = -1 (Fall 3.1)und bal(p) = +1 (Fall 3.2).

Die Invariante beim Aufruf von upin(p) bedeutet, dass bal(p) 0. Der Fall bal(p) = 0 kann also nicht vorliegen!

φp -1

p

Page 20: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 20

Fall 3.1: bal(φp) = -1 und bal(p) = -1

Rotation nach rechts

fertig!

φp 0

y 0

x

1

h

2

h - 1

3

h - 1

φp -1

-1x

y

1

h

2

h - 1

3

h - 1

Page 21: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 21

Ist der resultierende Baumnoch ein Suchbaum?

Es muss garantiert sein, dass der resultierende Baum dieSuchbaumeigenschaft und die

AVL-Baum-Eigenschaft erfüllt.

Suchbaumeigenschaft: Da der ursprüngliche Baum dieSuchbaumeigenschaft erfüllt, muss gelten:

Alle Schlüssel in Baum 1 sind kleiner als x.

Alle Schlüssel in Baum 2 sind größer als x und kleiner als y.

Alle Schlüssel in Baum 3 sind größer als y (und x).

Daher erfüllt auch der resultierende Baum die Suchbaumeigenschaft.

Page 22: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 22

Ist der resultierende Baum balanciert?

AVL-Baum-Eigenschaft: Da der ursprüngliche Baum ein AVL-Baum war, muss gelten:

Wegen bal(φp) = -1 haben Baum 2 und Baum 3 die gleiche Höhe h -1.

Wegen bal(p) = -1 nach dem Einfügen, hat Baum 1 die Höhe h,während Baum 2 die Höhe h - 1 hat.

Damit gilt nach der Rotation:

Der Knoten, der y enthält, hat Balancegrad 0.

Der Knoten φp hat Balancegrad 0.

Somit ist der AVL-Baum-Eigenschaft wieder hergestellt.

Page 23: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 23

Fall 3.2: bal(φp) = -1 und bal(p) = +1

Page 24: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 24

Fall 3.2: bal(φp) = -1 und bal(p) = +1

Doppel-rotation

links-rechts

fertig!

φp 0

zh

y

3

h - 2

h - 1

4

h - 1

xh

1

h - 1

2

h – 1

h - 2

φp -1

+1x

z

1

h-1

4

h - 1yh

2

h – 1

h - 2

3

h – 2

h - 1

p

Page 25: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 25

Eigenschaften der Teilbäume

Der neue Schlüssel muss in den rechten Teilbaum von p eingefügt worden sein.

Die Bäume 2 und 3 müssen unterschiedliche Höhe haben, weil sonst die Methode upin nicht aufgerufen worden wäre.

Die einzig mögliche Kombination der Höhen in den Bäumen 2 und 3 ist somit (h - 1,h - 2) und (h - 2,h - 1), sofern sie nicht leer sind.

Wegen bal(p) = 1 muss Baum 1 die Höhe h - 1 haben

Schließlich muss auch Baum 4 die Höhe h - 1 haben (wegenbal(φp) = -1.

Somit erfüllt der resultierende Baum ebenfalls die AVL-Baum-Eigenschaft.

Page 26: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 26

Suchbaumeigenschaft

Es gilt:

Die Schlüssel in Baum 1 sind sämtlich kleiner als x.

Die Schlüssel in Baum 2 sind sämtlich kleiner als y aber größer als x.

Die Schlüssel in Baum 3 sind alle größer als y und x aber kleiner als z.

Die Schlüssel in Baum 4 sind alle größer als x, y und z.

Daher hat auch der durch die Doppelrotation entstandene Baum die

Suchbaumeigenschaft.

Page 27: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 27

Hinweise

Wir haben lediglich den Fall betrachtet, dass p linker Nachfolger seinesVorgängers φp ist.

Der Fall, dass p rechter Nachfolger seines Vorgängers φp ist, kannanalog behandelt werden.

Um die Methode upin(p) effizient zu implementieren, müssen wir bei der Suche nach der Einfügestelle des neuen Schlüssels eine Liste aller besuchten Knoten anlegen.

Dann können wir diese Liste bei den rekursiven Aufrufen nutzen, umjeweils zum Vorgänger überzugehen und ggf. die erforderlichenRotationen oder Doppelrotationen auszuführen.

Page 28: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 28

Das Einfügen in einen nicht leeren AVL-Baum

bal(p) = +1 und x < p.key Anhängen links von p, fertig.

bal(p) = -1 und x > p.key Anhängen rechts von p, fertig.

p ist Blatt, d.h. jetzt gilt bal(p) {-1, 1} upin(p)

Die Methode upin(p):

p ist linker Nachfolger von φp(a) bal(φp) = +1 bal(φp) = 0, fertig.(b) bal(φp) = 0 bal(φp) = -1, upin(φp)(c) i. bal(φp) = -1 und bal(p) = -1 Rotation nach rechts, fertig. ii. bal(φp) = -1 und bal(p) = +1 Doppelrotation links-rechts, fertig.

p ist rechter Nachfolger von φp....

Suche nach x endet bei einem Blatt mit Vorgänger p

Page 29: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 29

Ein Beispiel (1)

Ausgangssituation:

10

3

7

15 01

0

-1

Page 30: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 30

Ein Beispiel (2)

Einfügen von Schlüssel 9:

AVL-Baum-Eigenschaft ist verletzt!

10

3

7

15 01

1

-1

*p

9 0

Page 31: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 31

Ein Beispiel (3)

Linksrotation bei *p liefert:

10

7

9

15 00

0

-1

3 0

Page 32: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 32

Ein Beispiel (4)

Einfügen von 8 mit anschließender Doppelrotation liefert:

10

7

9

15 01

-1

-1

3 0

8 0

9

7

8

10 10

0

0

3 0 15 0

links-rechts

Page 33: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 33

Entfernen aus einem AVL-Baum

Wie gehen ähnlich vor wie bei Suchbäumen:1. Suche nach dem zu entfernenden Schlüssel.2. Falls der Schlüssel nicht enthalten ist, sind wir fertig.3. Andernfalls unterscheiden wir drei Fälle: (a) Der zu löschende Knoten hat keine inneren Knoten als Nachfolger. (b) Der zu löschende Knoten hat genau einen inneren Knoten als

Nachfolger. (c) Der zu löschende Knoten hat zwei innere Knoten als Nachfolger.

Nach dem Löschen eines Knotens kann ggf. die AVL-Baum-Eigenschaftverletzt sein (wie beim Einfügen).

Dies muss entsprechend behandelt werden.

Page 34: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 34

Der zu löschende Knoten hat nur Blätter als Nachfolger

Page 35: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 35

Zu löschender Knoten hat einen inneren Knoten als Nachfolger

Page 36: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 36

Zu löschender Knoten hat genau 2 innere Knoten als Nachfolger

Wir gehen zunächst so vor, wie bei Suchbäumen:

1. Wir ersetzen den Inhalt des zu löschenden Knotens p durch denseines symmetrischen Nachfolgers q.

2. Danach löschen wir den Knoten q.

Da q höchstens einen Nachfolger (den rechten) haben kann, treffenfür q die Fälle 1 und 2 zu.

Page 37: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 37

Die Methode upout

Die Methode upout funktioniert ähnlich wie die Methode upin.

Sie wird entlang des Suchpfads rekursiv aufgerufen und adjustiert dieBalancegrade durch Rotationen und Doppelrotationen.

Wenn upout für einen Knoten p aufgerufen wird, gilt (s.o.):1. bal(p) = 02. Die Höhe des Teilbaums mit Wurzel p ist um 1 gefallen.

upout wird nun so lange rekursiv aufgerufen, wie diese beidenBedingungen gelten (Invariante).

Wiederum unterscheiden wir 2 Fälle, abhängig davon, ob p linker oderrechter Nachfolger seines Vorgängers φp ist.

Da beide Fälle symmetrisch sind, behandeln wir im Folgenden nur denFall, dass p linker Nachfolger von φp ist.

Page 38: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 38

Fall 1.1: p ist linker Nachfolger von φp und bal(φp) = -1

Da die Höhe des Teilbaums mit Wurzel p um 1 gesunken ist, ändert sich die Balance von φp zu 0.

Damit ist aber die Höhe des Teilbaums mit Wurzel φp um 1 gesunken und wir müssen upout(φp) aufrufen (die Invariante gilt jetzt für φp!).

φp -1

p

φp 0

0 upout(φp)

Page 39: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 39

Fall 1.2: p ist linker Nachfolger von φp und bal(φp) = 0

Da sich die Höhe des Teilbaums mit Wurzel p um 1 verringert hat, ändert sich die Balance von φp zu 1.

Anschließend sind wir fertig, weil sich die Höhe des Teilbaums mit Wurzel φp nicht geändert hat.

φp 0

p

φp 1

0 fertig!p

Page 40: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 40

Fall 1.3: p ist linker Nachfolger von φp und bal(φp) = +1

Der rechte Teilbaum von φp war also vor der Löschung bereits um 1größer als der linke.

Somit ist jetzt in dem Teilbaum mit Wurzel φp die AVL-Baum-Eigenschaft verletzt.

Wir unterscheiden drei Fälle entsprechend dem Balancegrad von q.

φp

q

+1

0p

Page 41: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 41

Fall 1.3.1: bal(q) = 0

Rotation nach links

fertig!

-1

up

w

2

h + 1

3

h + 1

v +1

0

h - 1

1

h – 1

0

φp +1

0u

v

3

h + 1

wq

0

h – 1

1

h – 1

p

2

h + 1

0

Page 42: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 42

Fall 1.3.2: bal(q) = +1

Erneut hat sich die Höhe des Teilbaums um 1 verringert, wobei bal(r) = 0(Invariante).

Wir rufen also upout(r) auf.

Rotation nach links

0

up

w

2

h

3

h + 1

v 0

0

h - 1

1

h – 1

0

3

h + 1

φp +1

0u

v

wq

0

h – 1

1

h – 1

p

2

h

0

Page 43: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 43

Fall 1.3.3: bal(q) = -1

Wegen bal(q) = -1 muss einer der Bäume 2 oder 3 die Höhe h besitzen.

Deswegen ist auch in diesem Fall die Höhe des gesamten Teilbaums um1 gefallen, wobei gleichzeitig bal(r) = 0 gilt (Invariante).

Wir rufen also wieder upout(r) auf.

Doppel-rotation

rechts-links

0

up

z

2 3

v 0

0

h - 1

1

h – 1

0

w 0

4

h

rφp +1

0u

v

wq

0

h – 1

1

h – 1

p

2

-1

z

3

4

h

Page 44: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 44

Beobachtungen

Anders als beim Einfügen, kann es beim Löschen vorkommen, dass auchnach einer Doppelrotation die Methode upout rekursiv aufgerufenwerden muss.

Daher reicht i.Allg. eine einzelne Rotation oder Doppelrotation nichtaus, um den Baum wieder auszugleichen.

Man kann Beispiele konstruieren, in denen an allen Knoten entlangdes Suchpfads Rotationen oder Doppelrotationen ausgeführt werdenmüssen.

Wegen h ≤ 1.44 ... log2(n) + 1 gilt aber, dass das Entfernen einesSchlüssels aus einem AVL-Baum mit n Schlüsseln in höchstensO(log n) Schritten ausführbar ist.

AVL-Bäume sind eine worst-case-effiziente Datenstruktur für dasSuchen, Einfügen und Löschen von Schlüsseln.

Page 45: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 45

Bruder-Bäume

Idee:

Innere Knoten dürfen auch nur einen Nachfolger haben.

Solche Knoten heißen unäre Knoten.

Durch Einfügen der unären Knoten erreicht man, dass alle Blätterdieselbe Tiefe haben.

Zu viele unäre Knoten führen jedoch zu entarteten Bäumen mit großer Höhe und wenigen Blättern.

Man verhindert das Entarten, indem man eine Bedingung an sogenannte Bruderknoten stellt.

Zwei Knoten heißen Brüder, wenn sie denselben Vorgänger haben.

Page 46: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 46

Definition von Bruder-Bäumen

Definition: Ein binärer Baum heißt ein Bruder-Baum, wenn jeder innereKnoten einen oder zwei Nachfolger hat, jeder unäre Knoten einenbinären Bruder hat und alle Blätter dieselbe Tiefe haben.

Bruder–Baum kein Bruder-Baum kein Bruder-Baum Bruder-Baum

Page 47: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 47

Beobachtungen

Ist ein Knoten p der einzige Nachfolger seines Vorgängers, so ist p einBlatt oder binär. Von zwei Nachfolgern eines binären Knotens kannhöchstens einer unär sein.

Offensichtlich ist die Anzahl der Blätter eines Bruder-Baumes stets um 1größer als die Anzahl der binären (inneren) Knoten.

Ebenso wie für AVL-Bäume gilt auch für Bruder-Bäume: EinBruder-Baum mit Höhe h hat wenigstens Fh+2 Blätter.

Entsprechend hat ein Bruder-Baum mit n Blättern und (n -1) innerenKnoten eine Höhe h 1.44 ... log2 n.

Page 48: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 48

Bruder-Bäume als Suchbäume

Nur binäre Knoten enthalten Schlüssel.

Die Schlüssel im linken Teilbaum eines Knotens p sind alle kleiner als der Schlüssel in p. Umgekehrt sind alle Schlüssel im rechten Teilbaum von p größer als der von p.

Unäre Knoten enthalten keine Schlüssel.

Eine Möglichkeit Bruder-Bäume als Suchbäume zu verwenden sind die so

genannten 1-2-Bruder-Bäume:

Page 49: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 49

Einschub: a-b-Bäume

Definition: Ein a-b-Baum ist ein Baum mit folgenden Eigenschaften:

1. Jeder innere Knoten hat mindestens a und höchstens b Nachfolger.

2. Alle Blätter haben die gleiche Tiefe.

3. Jeder Knoten mit i Nachfolgern enthält genau i - 1 Schlüssel.

Bemerkungen:

1. Bruder-Bäume sind spezielle 1-2-Bäume.

2. Die später behandelten B-Bäume sind m/2 -m-Bäume (m ≥ 2).

Page 50: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 50

Operationen auf Bruder-Bäumen (1)

Suchen: Im Prinzip analog zu binären Suchbäumen. Stößt man auf einenunären Knoten, setzt man die Suche bei dessen Nachfolger fort.

Einfügen: Beim Einfügen geht man anders vor als bei Suchbäumen:

Da alle Blätter die gleiche Höhe haben, kann man einen neuenKnoten nicht einfach anhängen.

Stattdessen versucht man, unäre in binäre Knoten umzuwandeln.

Gelingt dies nicht, geht man stufenweise nach oben und versucht dort,durch geeignete Transformationen den Knoten einzufügen.

Im schlimmsten Fall kommt man bis zur Wurzel und muss dann einenneuen Knoten zur Wurzel machen.

Page 51: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 51

Operationen auf Bruder-Bäumen (2)

Bruder-Bäume wachsen demnach an der Wurzel und nicht an denBlättern.

Löschen: Beim Löschen geht man ähnlich vor wie bei binären Suchbäumen:

Gegebenenfalls muss man das Löschen auf das Löschen dessymmetrischen Nachfolgers reduzieren.

Ausgehend von dem zu löschenden Knoten geht man dann rekursiventlang des Suchpfads (ähnlich wie bei AVL-Bäumen) im Baum nachoben, um die Bruder-Baum-Eigenschaften wiederherzustellen.

Dabei muss man schlimmstenfalls bis zur Wurzel laufen.

Damit kann man auch bei Bruderbäumen die Operationen Suchen,Einfügen und Löschen in O(log n) durchführen.

Page 52: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 52

Analytische Betrachtungen

1-2-Bruder-Bäume enthalten i.Allg. unäre Knoten, die keine Schlüsselspeichern.

Wie viele können das sein?

Für aufeinander folgende Levels sind lediglich folgende Konfigurationenmöglich:

Niveau l:

Niveau l + 1:

(1) (2) (3)

Page 53: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 53

Wieviele Schlüssel sind in einem 1-2-Bruder-Baum?

Für jeden unären Knoten auf Niveau l muss es einen binären Bruderauf demselben Niveau geben.

Zulässige Kombinationen der Konfigurationen sind demnach:

Konfiguration U(2) 2/3(3) 3/3

(1) und eine Konfig. aus (2) 3/5 (1) und (3) 4/5

mit

Folglich sind wenigstens 3/5 aller Knoten in einem 1-2-Bruder-Baumbinär und enthalten Schlüssel.

11

llll

U und Niveau auf insgesamt Knoten Anzahl

und Niveau auf Knoten binären von Anzahl

Page 54: Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät

Informatik II: Algorithmen und Datenstrukturen, SS 2008Prof. Dr. Thomas Ottmann 54

Konsequenzen

Offensichtlich werden beim Einfügen von n Schlüsseln in einen anfangsleeren Teilbaum höchstens 5/3 * n Knoten erzeugt.

Man kann nachweisen, dass bei der Einfügung eines neuen Knoten beimrekursiven Entlanglaufen des Suchpfads stets gestoppt wird, wenn keinneuer Knoten erzeugt wird.

Also ist die durchschnittliche Anzahl der notwendigenTransformationen bei einer Einfügung in einen 1-2-Bruder-Baumkonstant.

Für AVL-Bäume ist die Herleitung einer entsprechenden Aussagewesentlich schwieriger.

Zwar stoppt die Methode upin nach einer Rotation oder Doppelrotation,allerdings ist nicht klar, wie weit man nach oben laufen muss.