Balancierte Binärbäume - Informatik Uni Leipzig

Werbung
9. Balancierte Binärbäume
Balancierte Binärbäume
AVL-Bäume
- Einfügen mit Rotationstypen
- Löschen mit Rotationstypen
- Höhe von AVL-Bäumen
Gewichtsbalancierte Binärbäume
Positionssuche mit balancierten Bäumen
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
1
Balancierte Bäume
Effizienz der Wörterbuchoperationen auf Bäumen hängt direkt von
der Baumhöhe ab.
Baum mit n Knoten:
Mindesthöhe: |_log2 n_|, maximale Höhe: n-1
Zugriff im Mittel O(log2 n), aber worst case linear.
Ziel:
schneller direkter Zugriff mit z max  O ( log2 n),
Einfüge- und Löschoperationen mit logarithmischen Aufwand
Heuristik:
für jeden Knoten im Baum soll die Anzahl der Knoten in jedem
seiner beiden Unterbäume möglichst gleich gehalten werden
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
2
Balancierte Binärbäume
2 unterschiedliche Vorgehensweisen:
(1) die zulässige Höhendifferenz der beiden Unterbäume ist
beschränkt
==> höhenbalancierte Bäume
(2) das Verhältnis der Knotengewichte der beiden Unterbäume erfüllt gewisse
Bedingungen.
==> gewichtsbalancierte Bäume
Zu (1) Definition: Seien Bl(x) und Br(x) die linken und rechten Unterbäume eines
Knotens x. Weiterhin sei h (B) die Höhe eines Baumes B. Ein k-balancierter
Binärbaum ist entweder leer oder es ist ein Baum, bei dem für jeden Knoten x gilt:
| h (B l ( x ) - h (B r ( x )) |  k
k läßt sich als Maß für die zulässige Entartung im Vergleich zur ausgeglichenen
Baumstruktur auffassen.
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
3
AVL - Bäume
Definition: Ein 1- balancierter Binärbaum heißt AVL-Baum
(nach Adelson, Velski und Landis) wenn das
Balancierungskriterium | h (B l ( x ) - h (B r ( x )) |  1 erfüllt ist.
Konstruktionsprinzip: B l und B r seien AVL - Bäume der Höhe
m und m + 1. Dann sind die nachfolgend dargestellten Bäume
auch AVL - Bäume.
m+1
m
Bl
Br
m
m+2
m
Bl
m+1
Br
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
m+2
m+1
m
Bl
Br
4
Suchoperationen wie für allgemeine binäre Suchbäume
Wartungsalgorithmen: Wann und wo ist das AVL - Kriterium
beim Einfügen verletzt?
==> Es kann sich nur die Höhe von solchen Unterbäumen
verändert haben, deren Wurzeln auf dem Suchpfad
von der Wurzel des Baumes zum neu eingefügten Blatt
liegen
==> Reorganisations-Operationen lassen sich lokal
begrenzen; es sind höchstens h Knoten betroffen.
Definition: Der Balancierungsfaktor BF (x) eines Knotens x
ergibt sich zu BF ( x ) = h ( Bl ( x ) ) - h ( Br ( x ) ) .
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
5
Implementierung des AVL-Baumes:
TYPE
tree = node;
node = RECORD
key
height
left, right
END;
: elem;
: integer;
: node
FUNCTION balance (t: tree): integer;
{liefert für einen gegebenen AVL-Baum seinen
Balancierungsfaktor zurück}
PROCEDURE insert (t: tree, e: elem);
{fügt e in den AVL-Baum t ein und liefert eine
balancierte Version von t zurück - rekursive
Prozedur!}
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
6
Einfügen in AVL - Bäumen
Sobald ein BF ( x ) durch eine Einfügung verletzt wird, muss
eine Rebalancierung des Baumes durch sogenannte Rotationen
durchgeführt werden.
Ausgangspunkt der Rotation ist der nächste Vater des neu
eingefügten Knotens mit BF =  2 . Dieser Knoten dient zur
Bestimmung des Rotationstyps. Er wird durch die von diesem
Knoten ausgehende Kantenfolge auf dem Pfad zum neu
eingefügten Knoten festgelegt.
Rotationstypen
Es treten vier verschiedene Rotationstypen auf . Der neu
einzufügende Knoten sei X. Y sei der bezüglich der Rotation
kritische Knoten - der nächste Vater von X mit
BF =  2.
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
7
Dann bedeutet:
• RR : X wird im rechten Unterbaum des rechten
Unterbaums von Y eingefügt ( Linksrotation ).
• LL : X wird im linken Unterbaum des linken Unterbaums
von Y eingefügt ( Rechtsrotation ).
• RL : X wird im linken Unterbaum des rechten Unterbaums
von Y eingefügt ( Doppelrotation ).
• LR : X wird im rechten Unterbaum des linken Unterbaums
von Y eingefügt ( Doppelrotation ).
==> Die Typen LL und RR sowie LR und RL sind
symmetrisch zueinander.
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
8
Rotationsbeispiele:
16
Beispiel 1:
12
8
19
15
Einfügen: 9
12
wird balanciert durch:
16
8
9
15
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
19
9
Beispiel 2:
16
12
19
8
15
Einfügen: 13
wird balanciert durch:
15
12
8
16
13
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
19
10
Löschen in AVL - Bäumen
- Löschen eines Blattes bzw. eines Randknotens
( Knoten mit 1 Sohn )
• Höhenreduzierung ändert Balancierungsfaktoren der
Vaterknoten
• ggf. fortgesetzte Rebalancierung erforderlich (nur
möglich für Knoten mit BF =  2 auf dem Weg vom zu
löschenden Element zur Wurzel).
- Löschen eines Knotens (Schlüssel x) mit 2 Söhnen kann auf
diese Fälle zurückgeführt werden.
• x wird ersetzt durch kleinsten Schlüssel y im rechten
Unterbaum von x (oder größten Schlüssel im linken
Unterbaum)
• führt zur Änderung des Balancierungsfaktors für v
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
11
Bis auf Symmetrie treten nur 3 Fälle auf:
Fall 1: Die Höhenerniedrigung setzt sich nicht fort, da in der
Wurzel das AVL - Kriterium erfüllt bleibt. Es ist deshalb keine
Rebalancierung erforderlich.
Fall 2: Die Höhenerniedrigung eines Teilbaumes pflanzt sich zur
Wurzel hin fort. Sie kann auf diesem Pfad eine Rebalancierung
auslösen.
Fall 3: Die Höhenerniedrigung eines Teilbaumes bewirkt direkt
eine Rebalancierung. Für die Behandlung dieser Situation sind der
linke (oder rechte) Unterbaum in größerem Detail zu betrachten.
Dabei ergeben sich die folgenden 3 Teilfälle:
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
12
Fall 3a)
• R/L-Rotation führt zur Erfüllung des AVL - Kriteriums
• Unterbaum behält ursprüngliche Höhe
• keine weiteren Rebalancierungen erforderlich
Fall 3b)
• Rechtsrotation reduziert die Höhe des gesamten UB von
h+1 nach h.
• Höhenreduzierung pflanzt sich auf dem Pfad zur Wurzel
hin fort und kann zu weiteren Rebalancierungen führen.
Fall 3c)
• Doppelrotation ( ==> Höhenerniedrigung )
• ggf. fortgesetzte Rebalancierungen
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
13
Der Rebalancierungsalgorithmus beim Löschen hat
folgende wesentlichen Schritte:
1.) Suche im Löschpfad nächsten Vater mit BF =  2.
2.) Führe Rotation im gegenüberliegenden Unterbaum
dieses Vaters aus.
Im Gegensatz zum Einfügevorgang kann hier eine Rotation
wiederum eine Rebalancierung auf dem Pfad zur Wurzel auslösen,
da sie in gewissen Fällen auf eine Höhenerniedrigung des
transformierten Unterbaums führt. Die Anzahl der
Rebalancierungsschritte ist jedoch durch die Höhe h des Baums
begrenzt.
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
14
Aufwandsabschätzungen
Balancierte Bäume wurden als Kompromiss zwischen ausgeglichenen und natürlichen
Suchbäumen eingeführt, wobei logarithmischer Suchaufwand im schlechtesten Fall
gefordert wurde.
Für die Höhe hb eines AVL-Baumes mit n Knoten gilt:
[log2 ( n )] + 1  hb  1.44 * log2 ( n + 1 )
Die obere Schranke lässt sich durch sog. Fibonacci-Bäume, eine Unterklasse der AVLBäume, herleiten.
Definition: Fibonacci-Bäume
1. Der leere Baum ist ein Fibonacci-Baum der Höhe 0: B0
2. Ein einzelner Knoten ist ein Fibonacci-Baum der Höhe 1: B1
3. Sind Bh-1 und Bh-2 Fibonacci-Bäume der Höhe h-1 und h-2, so ist
Bh = (Bh-1, x, Bh-2 ) mit x ~ Vater von Bh-1, Bh-2 ein Fibonacci-Baum der
Höhe h .
Zusammenhang zwischen minimaler Knotenzahl eines AVL-Baumes und
Fibonacci-Bäumen: Zu gegebener Baumhöhe sind entsprechende Fibonacci-Bäume
die AVL-Bäume mit jeweils minimaler Knotenzahl.
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
15
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
16
Gewichtsbalancierte Suchbäume
(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 Knoten in Bl (n sei entsprechend die
Anzahl der Knoten in B)
(1)  ( B ) = ( l + 1 ) / ( n + 1) heißt die Wurzelbalance von B.
(2) Ein Baum B heißt gewichtsbalanciert mit Balance  (kurz
ein BB ( )-Baum), wenn für jeden Unterbaum
B‘ von B gilt:
   ( B‘ )  1 - 
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
17
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/4    1 -2 / 2
•
Einsatz derselben Rotationstypen wie beim AVL - Baum
Kosten für Suche:
Höhe h eines Baumes aus ist logarithmisch in der Anzahl der Knoten beschränkt
==> Suche stets in O ( log 2 n ) Schritten ausführbar
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
18
Positionssuche mit balancierten Bäumen
Balancierte Suchbäume
• sind linearen Listen in fast allen Grundoperationen
überlegen
• Positionssuche (Suche nach k-tem Element der
Sortierreihenfolge) kann jedoch noch verbessert
werden.
Definition: Der Rang eines Knotens ist die um 1 erhöhte
Anzahl der Knoten seines linken Unterbaums
Verbesserung bei Positionssuche mit AVL - Bäumen
Jeder Knoten erhält Rang als Hilfsgröße
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
19
Rangzahlen erlauben Bestimmung eines direkten Suchpfads im
Baum für Positionssuche nach dem k-ten Element.
• Wenn Rang r eines Knotens größer ist als die Position p
(Initialwert: k), suche im linken UB des Knotens weiter
• p > r ==> p:= p - r und Fortsetzung der Suche im rechten UB
• p = r : Element gefunden
Wartungsoperationen etwas komplexer
Änderung im linken Unterbaum erfordert Ranganpassung aller
betroffenen Väter bis zur Wurzel.
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister) - Kapitel 9: Balancierte Binärbäum.
20
Herunterladen