Animationen zu Kap. 4.3: AVL-B�ume

Document Sample
Animationen zu Kap. 4.3: AVL-B�ume Powered By Docstoc
					Animationen zu
Kap. 4.3: AVL-Bäume
         Professor Dr. Petra Mutzel
         Lehrstuhl für Algorithm Engineering, LS11
         Fakultät für Informatik, TU Dortmund



12. VO   DAP2      SS 2008        27. Mai 2008

                   Petra Mutzel   DAP2 SS08      1
Beispiel 1:           Rotationen (1)
    bal(5)=2                                          bal(7)=0
      5                                                  5
                             Rotation
                  bal(7)=1                                    7
              7               nach
                              links
                                              bal(5)=0
                  8           an 5                                8

  5 ist unbalanciert                        5, 7, 8 sind balanciert




                             Petra Mutzel         DAP2 SS08           2
Beispiel 2:         Rotationen (2)
    bal(5)=2
      5                                                 5
                             Rotation
                  bal(7)=0                                    7
              7               nach
                              links
       6          8           an 5                      6         8

                                   falsch: die 6 muss mitwandern
  5 ist unbalanciert                        5, 7, 8 sind balanciert




                             Petra Mutzel         DAP2 SS08           3
                  Rotationen (3)
     bal(5)=2                                     bal(7)=-1
       5                                            5
                                     bal(5)=1
                            Rotation
                bal(7)=0                     6            7
            7                nach
                              links
        6        8            an 5                  6         8

                                  falsch: die Warum eigentlich?
                                  so korrekt! 6 muss mitwandern
   5 ist unbalanciert                 5, 7, 8 sind balanciert
  Die Suchbaumeigenschaft bleibt bei einer Rotation erhalten.
   Nach einer Rotation entsteht wieder ein binärer Suchbaum

                             Petra Mutzel    DAP2 SS08
Achtung: dies ist nicht so wenn gleiche Schlüssel enthalten sind4
Beispiel 3:         Rotationen (4)
    bal(5)=2                                       bal(8)=0
      5                                                5

                  bal(8)=-1 Rotation                       8
              8               nach
                              links
                                            bal(5)=0
      7                       an 5                     7

  5 ist unbalanciert                falsch: Das war keine
                                        Rotation!!!




                             Petra Mutzel      DAP2 SS08       5
              Rotationen (5)
 bal(5)=2                                         bal(8)=-2
   5                                               5

            bal(8)=-1 Rotation                          8
        8               nach
                        links
                                       bal(5)=1
   7                    an 5                       7

5 ist unbalanciert                    Diese Rotation hat
                                         nichts genützt!




                       Petra Mutzel        DAP2 SS08          6
                 Rotationen (6)
   bal(5)=2              bal(5)=2              bal(7)=0
     5                      5                   5

bal(8)=-1 8          bal(7)=1 8                      7
                                      bal(5)=0 bal(8)=0
     7                     7                              8


              Rotation              Rotation
                nach                 nach
               rechts                links
                an 8                 an 5
    Doppelrotation Rechts-Links notwendig!
                      Petra Mutzel  DAP2 SS08             7
                    Doppelrotationen


        u                            u                       a

    v           d           a                  d        v          u

b       a               v            c             b         c         d

            c       b




                                Petra Mutzel           DAP2 SS08       8
                  Definition
•   AVL-Ersetzung: Operation (z.B Insert, Delete),
    die einen Unterbaum T eines Knotens z durch
    einen modifizierten AVL-Baum ersetzt, dessen
    Höhe um höchstens 1 von der Höhe von T
    abweicht.




                       Petra Mutzel   DAP2 SS08      10
               Rebalancierung
•   Wir betrachten einen AVL-Baum unmittelbar nach
    einer AVL-Ersetzung (Einfügung bzw. Entfernens
    eines Knotens).
•   Sei u ein unbalancierter Knoten maximaler
    Tiefe, d.h. bal(u)∈{-2,+2}.
•   Sei T der maximale Unterbaum mit Wurzel u in T.

•   Wir unterscheiden vier verschiedene Situationen.



                       Petra Mutzel   DAP2 SS08        11
                   1. Fall: bal(u)=-2
•   Sei v das linke Kind von u (existiert!)
•   Fall 1.1: bal(v)∈{-1,0}: Rotation nach rechts an u

                u bal(u)=-2                  v       bal(v)∈{0,1}

        v                                             u
                          Rotation
                    C
                         nach rechts
                                       A                  C
            B                                    B
    A           Wir wissen:
                h(C)=h(A)-1 und
                h(B)=h(A) oder h(A)-1
• Suchbaumeigenschaft bleibt erhalten; u und v sind balanciert
• Für die Knoten unterhalb hat sich nichts geändert.
                            Petra Mutzel     DAP2 SS08       12
                1. Fall: bal(u)=- 2 ff.
 •    Sei v das linke Kind von u (existiert!)
 •    Fall 1.2: bal(v)=+1:   Links-Rechtsrotation an u


 bal(v)=1
                u bal(u)=-2                           w

        v                                     v                u
                               Links-
                w             rotation
                        D       an v
                               dann               B        C
  A                           Rechts-    A                         D
            B       C         rotation
                                an u
                                         u, v und w sind balanciert
h(D)=h(A) und ( h(B)=h(A) oder h(C)=h(A) )
                            Petra Mutzel       DAP2 SS08           14
                        2 Fall: bal(u)= +
                         1.             -2
 •                  linke
         Sei v das rechte Kind von u (existiert!)
 •       Fall 2
              1.1: bal(v)∈{-1,0}: Rotation nach rechts an u
                           {0,1}

            u       bal(u)=-2
                     bal(u)=2                             v

                    v                             u
                                 Rotation
     C
                                      links
                                nach rechts
                                              C               A
                B                                     B
                         A
                         h(C)=h(A)-1 und
                         h(B)=h(A) oder h(B)=h(A)-1
• Inorder-Reihenfolge bleibt erhalten und u und v sind balanciert
• Für die Knoten unterhalb hatPetra Mutzel
                               sich nichts geändert. SS08
                                               DAP2              16
                           +
           2 Fall: bal(u)= - 2
            1.                                  ff.
 •               linke
      Sei v das rechte Kind von u (existiert!)
 •    Fall 2
           1.2: bal(v)=+1:
                        -1    Links-Rechtsrotation an u
                             Rechts-Links

bal(u)=-2 u                                        w
                bal(u)=2
                bal(v)=-1
                   v                       u               v
                            Rechts-
                             Links-
           w                rotation
  D                           an v
                             dann              C       B
                       A    Rechts-
                             Links-    D                       A
       C       B            rotation
                              an u
                                       u, v und w sind balanciert
h(D)=h(A) und ( h(B)=h(A) oder h(C)=h(A) )
                            Petra Mutzel       DAP2 SS08           17
            Rebalancierung ff.
•   Seien T der maximale Unterbaum mit Wurzel u in
    T vor der Rebalancierung, T´ der gleiche
    Teilbaum nach einer einfachen Rotation und T´´
    nach einer Doppelrotation.

•   Für die einfache Rotation gilt: h(T´)-h(T)∈{-1,0}
•   Im Falle der Doppelrotation gilt: h(T´)-h(T) ∈{-1,0}

•   Alle Transformationen (Einfach- und
    Doppelrotationen) kann man also als eine AVL-
    Ersetzung auffassen.
                        Petra Mutzel   DAP2 SS08      18
            Rebalancierung ff.
•   Nach der AVL-Ersetzung gilt:
•   Die Unterbäume mit Wurzel u und v sind danach
    balanciert. Für die Unterbäume unterhalb hat sich
    die Balancierung nicht geändert.

•   Bestimme nun den nächsten unbalancierten
    Knoten maximaler Tiefe. Diese Tiefe ist nun
    kleiner als vorher.
•   Wiederhole die Rebalancierung (AVL-Ersetzung)
    solange, bis alle Knoten balanciert sind.

•   Das Verfahren konvergiert nach O(h(T))
    Iterationen zu einem gültigen AVL-Baum.
            Rebalancierung ff.
•   Die Insert-Operation unterscheidet sich nur
    insofern von der Delete-Operation, dass hier ein
    einziger Rebalancierungsschritt genügt.

•   Bei der Delete-Operation hingegen kann es sein,
    dass mehrere Rebalancierungsschritte notwendig
    sind.



            Implementierungen:
                        Petra Mutzel   DAP2 SS08       20

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:5
posted:5/2/2012
language:German
pages:17