• Keine Ergebnisse gefunden

Balancierte Bäume

N/A
N/A
Protected

Academic year: 2021

Aktie "Balancierte Bäume"

Copied!
21
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

G. Zachmann Informatik 2 - SS 06 Bäume 50

C G C C G C

Tiefe: N-2

Balancierte Bäume

 Aufwand, ein Element zu finden, entspricht der Tiefe des gefundenen Knotens

 im worst case = Tiefe des Baumes

 liegt zwischen log N+1 und N

C G C C G C

 Definition für "balanciert":

 es gibt verschiedene Definitionen

 Allgemein: kein Blatt ist “wesentlich weiter“ von der Wurzel entfernt als irgendein anderes

 Hier: Für alle Knoten unterscheidet sich Anzahl der Knoten in linkem und rechtem Teilbaum höchstens um 1

 Folge: ein binärer Baum der Tiefe log N+1

 schlecht balancierte Bäume

 erhält man, wenn die Elemente in sortierter Reihenfolge angeliefert werden

 Aufwand, einen optimal balancierten Baum nach Einfüge- und

Löschoperationen zu erzwingen, ist sehr groß

(2)

G. Zachmann Informatik 2 - SS 06 Bäume 52

C G C C G

AVL-Bäume

C

 AVL-Baum

 1962 von Adelson, Velskij und Landis eingeführt

 schwächere Form eines balancierten Baumes

 Definition Balance-Faktor:

 bal(x) = (Höhe des rechten Unterbaumes von x) - (Höhe des linken Unterbaumes von x)

 Definition AVL-Baum:

binärer Baum, wobei für jeden Knoten x gilt:

bal(x) ∈ {-1,0,1}

0 0

0 0

-1

0

1 0

-1

0 1 -1 1

C G C C G C

h = 1 N(1) = 1

h = 2 N(2) = 2

h = 3 N(3) = 4

Minimale Knotenanzahl von AVL-Bäumen

 N(h) sei die minimale Anzahl von Knoten eines AVL-Baumes der Höhe h

Höhe mögliche AVL-Bäume dieser Höhe Knotenzahl

(3)

G. Zachmann Informatik 2 - SS 06 Bäume 54

C G C C G C

N(h-2)

N(h-1) 1

 Allgemeiner worst case Fall bei Höhe h:

C G C C G C

Satz:

Beweis:

1) Induktionsanfang: h = 1

2) Induktionsschritt:

N(h) N(h-1)

1

(4)

G. Zachmann Informatik 2 - SS 06 Bäume 56

C G C C G

Minimaler AVL-Baum der Höhe 10

C

C G C C G

Maximale Höhe von AVL-Bäumen

C

 Erinnerung: Fibonacci-Zahlen

 Aus folgt nach Umformung und Abschätzung von F n die …

 Wichtige Eigenschaft von AVL-Bäumen:

Ein AVL-Baum mit N Knoten hat höchstens die Höhe

 Erinnerung: Die Höhe jedes binären Baumes mit N Knoten beträgt

mindestens

(5)

G. Zachmann Informatik 2 - SS 06 Bäume 58

C G C C G

AVL Search Tree

C

 Problem: wir wollen BST, der auch über viele Insert- und Delete- Operationen halbwegs gut balanciert bleibt

 Idee: verwende BST, der zusätzlich AVL-Eigenschaften hat

 Problem: wie erhält man AVL-Eigenschaften bei Einfügen/Löschen?

0 0

0 0

-1

0

+1 0

-1

0 +1 -1 10 +1

7

3 8

1 5

30

4 0

20 25

35

45 60

C G C C G C

Einfügen von k = 30

0 0 0

0 0 0

0 +1

+1

26 39 17

11 3

20 8

33 14

Einfügen von Knoten

(6)

G. Zachmann Informatik 2 - SS 06 Bäume 60

C G C C G C

Einfügen von k = 30

0 0 0

0 0 0

0 +1

+1

26 39 17

11 3

20 8

33 14

30 0 +1

-1 +2

Einfügen von Knoten

C G C C G C

+1 -1 +2

Einfügen von k = 30

0 0

0 0

0

+1

26 39 17

11 3

20 8

33 14

30 0

Ausgeglichenheit

ist verletzt

Einfügen von Knoten

(7)

G. Zachmann Informatik 2 - SS 06 Bäume 62

C G C C G C

+1 -1 +2

Einfügen von k = 30

0 0

0 0

0

+1

26 39 17

11 3

20 8

33 14

30 0

Ausbalancieren durch Rotation Einfügen von Knoten

C G C C G C

+1 -1 +2

Einfügen von k = 30

0 0

0 0

0

+1

26 39 17

11 3

20 8

33 14

30 0

R- Rotation

Einfügen von Knoten

(8)

G. Zachmann Informatik 2 - SS 06 Bäume 64

C G C C G C

+1 -1 +2

Einfügen von k = 30

0 0

0 0

0

+1

26 39 17

11 3

20 8

33 14

30 0

Einfügen von Knoten

C G C C G C

+2

Einfügen von k = 30

0

0 0

0

+1

33 17

11 3

20 8

26 14

30 39

L- Rotation

Einfügen von Knoten

(9)

G. Zachmann Informatik 2 - SS 06 Bäume 66

C G C C G C

+2

Einfügen von k = 30

0

0 0

0

+1

33 17

11 3

8

14

30 39 26

20

Einfügen von Knoten

C G C C G C

0

Einfügen von k = 30

0

0 0

0

+1

20 11

3

8

14

33 30 39 17

26

0

0 0 0

Einfügen von Knoten

(10)

G. Zachmann Informatik 2 - SS 06 Bäume 68

C G C C G C

+1

löschen von k = 8

0

0 0

0

+1

17 11

3

8

14

33 26 39 20

0 0 0

Löschen von Knoten

C G C C G C

+1

löschen von k = 8

0

0 0

0

+1

17 3

8

14

33 26 39 20

0 0 0 11

Löschen von Knoten

(11)

G. Zachmann Informatik 2 - SS 06 Bäume 70

C G C C G C

+1

löschen von k = 8

0 0

-1

+1

17 3

11

14

33 26 39 20

0 0 0

Löschen von Knoten

C G C C G C

+1

löschen von k = 11

0 0

-1

+1

17 3

11

14

33 26 39 20

0 0 0

Löschen von Knoten

(12)

G. Zachmann Informatik 2 - SS 06 Bäume 72

C G C C G C

+1

löschen von k = 11

0 0

+1

17 3

14

33 26 39 20

0 0 0 +2

Löschen von Knoten

C G C C G C

+2

+1

löschen von k = 11

0 0

17 3

14

33 26 39 20

0 0 0

L- Rotation

Löschen von Knoten

(13)

G. Zachmann Informatik 2 - SS 06 Bäume 74

C G C C G C

+2

+1

löschen von k = 11

0 0

17 3

14

33 26 39 20

0 0 0

Löschen von Knoten

C G C C G C

0

löschen von k = 11

0 14

20

0 33 26 39 0 0

3 17

0 0

Löschen von Knoten

(14)

G. Zachmann Informatik 2 - SS 06 Bäume 76

C G C C G

AVL-Rotationen

C

 Operationen auf AVL-Bäumen zur Erhaltung der AVL-Eigenschaft

 Bestehen ausschließlich aus “Umhängen” von Zeigern

 Es gibt 2 verschiedene Arten von Rotationen

 Single Rotation : RR und LL

- RR = der neue Knoten befindet sich im rechten Teilbaum des rechten Teilbaums vom (jetzt) unbalancierten Knoten aus

- LL = analog

- wird manchmal auch einfach nur R- bzw. L-Rotation genannt

 Double Rotation :

- RL = neuer Knoten im linken Unterbaum des rechten Unterbaumes - m.a.W.: vom Knoten mit dem "schlechten" Balancefaktor muß man in den

rechten Teilbaum gehen, dann von da aus in den linken Teilbaum, dann kommt man zu dem neu eingefügten Knoten

- LR = analog

C G C C G C

T 1

T 2 T 3 k 1

k 2

0

+1

RR-Rotation

(15)

G. Zachmann Informatik 2 - SS 06 Bäume 78

C G C C G C

T 1

T 2 T 3 k 1

k 2 +1 +2

RR-Rotation

x

C G C C G C

T 1

T 2 T 3 k 1

k 2 +1 +2

RR-Rotation

x

(16)

G. Zachmann Informatik 2 - SS 06 Bäume 81

C G C C G

LL Rotation Algorithm

C

def LL_Rotate (k2):

k1 = k2.left k2.left = k1.right k1.right = k2 return k1

C G C C G C

def RR_Rotate (k1):

k2 = k1.left k1.right = k2.left k2.left = k2 return k2

RR Rotation Algorithm

(17)

G. Zachmann Informatik 2 - SS 06 Bäume 83

C G C C G C

T 1

k 2

k 1 +1

-2

T 3

T 4 k 3

T 2

+1

x -1 0

0 LR-Rotation

C G C C G C

T 1

k 2

k 1 +1

-2

T 3

T 4 k 3

T 2

+1

x

LR-Rotation

(18)

G. Zachmann Informatik 2 - SS 06 Bäume 85

C G C C G C

-2

T 1

k 3

k 1 -1

-2

T 3 T 4

k 2

T 2 -1

x LR-Rotation

C G C C G C

-2

T 1

k 3

k 1 -1

-2

T 3 T 4

k 2

T 2 -1

x

LR-Rotation

(19)

G. Zachmann Informatik 2 - SS 06 Bäume 87

C G C C G C

k 3

T 1

k 1 0 0

T 3

T 4 k 2

T 2 -1

x LR-Rotation

C G C C G C

def LR_doubleRotate ( k3 ):

k3.left = RR_Rotate ( k3.left ) return LL_Rotate ( k3 )

k

3

k

1

k

1

k

2

k

1

k

3

A

D

B C

C B

A D

(a) Before rotation (b) After rotation neues Element x kann in B oder C sein

Code

(20)

G. Zachmann Informatik 2 - SS 06 Bäume 89

C G C C G C

def RL_doubleRotate( k1 ):

k1.right = LL_Rotate( k1.right ) return RR_Rotate( k1 )

C G C C G

Warum Double Rotation?

C

 Single Rotation kann LR oder RL nicht lösen:

(21)

G. Zachmann Informatik 2 - SS 06 Bäume 91

C G C C G

Algo-Animation

C

http://webpages.ull.es/users/jriera/Docencia/AVL/AVL%20tree%20applet.htm

Referenzen

ÄHNLICHE DOKUMENTE

Die Bildung von Salicin und die Bedeutung der Pilze für den Wald werden ebenso thematisiert wie die Kommunikation der Bäume untereinander und die Lernfähigkeit von Buchen und

unaufschiebbare Maßnahmen zur Abwehr einer gegenwärtigen Gefahr für Personen oder Sachen, sofern die Gefahr von geschützten Bäumen aus- geht, oder zwar nicht von diesen ausgeht,

B-B¨aume verallgemeinern bin¨are Suchb¨aume dahingehend, dass in einem Knoten mehrere Schl¨ ussel stehen und ein Knoten mehrere Kinder hat.. (Typischerweise

Rot-Schwarz-B¨ aume: bin¨ are Suchb¨ aume mit zus¨ atzlicher Struktur, die daf¨ ur sorgt, dass diese balanciert sind, also die H¨ ohe h¨ ochstens O(log n) ist.. Jeder Knoten wird

Information 40 Fühle mich Was ich für Ich habe Kommunikation nicht ausrei- meinen job Zugang zu. chend inior- brauche,

I Jeder Pfad von der Wurzel zu einem Blatt hat die gleiche Anzahl von schwarzen Referenzen. I (Gleiche Tiefe im

I Falls Wurzel erreicht wird, und diese zu 4-Knoten wird, wird diese zu zwei 2-Knoten....

Definition: Ein binärer Suchbaum ist ein AVL-Baum, wenn für jeden Knoten p des Baums gilt, dass sich die Höhe des linken Teilbaums von der Höhe des rechten Teilbaums von p höchstens