• Keine Ergebnisse gefunden

1 Balancierte Bäume AVL-Bäume Minimale Knotenanzahl von AVL-Bäumen

N/A
N/A
Protected

Academic year: 2021

Aktie "1 Balancierte Bäume AVL-Bäume Minimale Knotenanzahl von AVL-Bäumen"

Copied!
11
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

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

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ß

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

(2)

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:

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

C G C C G C

Satz:

Beweis:

1) Induktionsanfang: h = 1

2) Induktionsschritt:

N(h) N(h-1)

1

C G C C G

Minimaler AVL-Baum der Höhe 10

C

Maximale Höhe von AVL-Bäumen

CGCCGC

 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

(3)

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

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

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

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

(4)

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

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

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

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

(5)

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

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

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

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

(6)

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

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

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

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

(7)

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

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

C G C C G C

löschen von k = 11 0 0 14

20

0 33 26 39 0 0

3 17

0 0

Löschen von Knoten

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

(8)

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

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

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

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

(9)

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

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

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

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

CGCCGC

-2

T 1 k 3

k 1 -1

-2

T 3 T 4

k 2

T 2 -1

x

LR-Rotation

(10)

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

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

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

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:

(11)

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

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

Bei sortierter Speicherung von Daten bieten bin¨ are B¨ aume gegen¨ uber Listen potentiell den Vorteil, daß die Suche nach gespeicherten Datens¨ atzen schneller ist, da in jedem

Bedeutung von Reduktionsfaktoren (Prinzip, keine Formeln!) Anwendung algebraischer Äquivalenzen.. Vergleich kostenbasierte

So ist PHYLIP ein leistungsfähiges Programm, um Phylogenien genauer zu unter- suchen, aber auch ein gutes Beispiel für die Tatsache, dass es nie möglich sein wird, einen exakten

Fall 2: Knoten ist Blatt Wenn Wert gleich Schlüssel, dann gefunden}. Ansonsten

Die „nachher“-Position bezieht sich immer auf den den neuen Wurzelknoten, der Pfad zu dem entsprechenden Knoten beginnt immer beim alten Wurzelknoten k...  Ausgleichen  durch

[r]

Im Winter bleibt das Wasser in den Wurzeln, im Stamm und in