y x A B C x A y B C - bioinf leipzig

Werbung
Motivation / Wiederholung: natürliche Suchbäume
im Worst Case: lineare Zugriskosten (d.h. für Suchen, Einfügen,
Löschen)
ADS 1: Algorithmen und Datenstrukturen
1
...
...
...
...
..
Teil IX
⇒
2
...
...
...
...
..
Prof. Peter F. Stadler & Sebastian Will
...
...
...
...
...
beschränke die Höhe:
...
...
...
...
...
.
6
2
.. ....
... ....
..
...
...
...
.
...
6
Bioinformatik/IZBI
Institut für Informatik
& Interdisziplinäres Zentrum für Bioinformatik
5
3
1
...
...
..
...
..
3
Universität Leipzig
...
...
...
...
..
5
19. Dezember 2013
Z.B. in ausgeglichenem Baum; statisch ok, aber einen Baum bei
Einfüge/Lösch-Operationen ausgeglichen zu halten, ist sehr teuer!
Was wäre z.B. nötig, nachdem 4 eingefügt wird?
P.F. Stadler & S. Will (Bioinf, Uni LE)
Wiederholung:
ADS1, V9
`-balancierter
19. Dezember 2013
1 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE)
Binärbaum
ADS1, V9
x . Weiterhin sei h(B ) die Höhe eines Baumes B .
Denition: Ein Binärbaum heisst `-balanciert, genau dann wenn für jeden
seiner Knoten x gilt:
nach russischen Mathematikern
Denition:
also:
AVL-Kriterium
| h(Bl (x )) − h(Br (x ))| ≤ 1 .
(Anmerkung: Nach dieser Denition ist der leere Baum auch `-balanciert.)
d.h. der maximale Höhenunterschied von Tochterbäumen eines Knotens ist
`
Adelson-Velski und Landis (1962)
Ein 1-balancierter binärer Suchbaum heiÿt AVL-Baum.
| h(Bl (x )) − h(Br (x ))| ≤ ` .
`
2 / 20
AVL-Baum
Seien Bl (x ) und Br (x ) die linken und rechten Tochterbäume eines Knotens
durch
19. Dezember 2013
Konstruktionsprinzip:
h+1
beschränkt
h+1
h+1
lässt sich als Maÿ für die Abweichung von einer ausgeglichenen
Baumstruktur auassen.
h−1
Oenbar ist jeder ausgeglichene Baum auch 1-balanciert. Aber
ist jeder 1-balancierte Baum ausgeglichen?
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS1, V9
19. Dezember 2013
h
Bl
h
Br
h
Bl
3 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE)
Balancefaktor
h
Br
h−1
Bl
ADS1, V9
Br
19. Dezember 2013
4 / 20
Rebalancierung / Wartungsoperationen nach Einfügen
BF(x ) für Knoten x
Deniere Balancefaktor
Wann und wo kann das AVL-Kriterium beim Einfügen verletzt werden?
als
Durch Einfügen kann sich nur der Balancefaktor von Knoten auf dem
BF(x ) = h(Bl (x )) − h(Br (x )) .
Pfad von der Wurzel des Baumes zum neuen Blatt verändern.
Höchstens h Knoten sind betroen.
Markieren der Knoten mit dieser Höhendierenz der Tochterbäume, z.B.
6(+1)
. .
..
...
...
...
...
.
.
..
3(0)
..
.. ...
... ...
.. ...
... ....
...
...
.
..
..
2
3(-1)
. .
7
.
... ...
... .....
..
...
...
...
...
...
4
2
...
...
...
...
...
...
..
3(0)
... ...
.
... ..
.. ...
... ...
... .....
..
...
...
7
.. ....
... ....
..
...
...
...
...
...
.
..
P.F. Stadler & S. Will (Bioinf, Uni LE)
.. ..
.. .....
...
...
..
...
...
...
...
..
→
7
3(+1)
.. ...
. ..
... ....
...
...
...
..
...
...
...
...
7
2(+1)
4
...
2 4
.
...
...
..
...
...
4(-1)
.
...
...
...
...
...
...
1
5
macht AVL-Kriterium deutlich (|
6(+2)
.. ...
6(+1)
.. ...
6(+2)
. .
. ...
... ..
.. ....
...
...
...
..
.
.
...
..
.
Reorganisation lässt sich lokal begrenzen.
BF(x )| ≤ 1).
Geeignete Operationen: Rotationen.
ADS1, V9
19. Dezember 2013
Rotation
5 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS1, V9
19. Dezember 2013
6 / 20
Beispiel: Einfügen und Einfachrotation
...
...
...
...
...
...
.
...
...
..
...
y
Rechtsrotation
...
...
...
...
.
x C
AB
−→
←−
Linksrotation
.. ...
... ....
...
..
...
...
.
...
...
...
...
...
...
...
.
AVL-Baum
x
...
...
...
..
...
.
...
..
...
...
...
...
...
...
.. ...
... ....
...
..
...
...
...
...
.
...
.
3(0)
..
... ....
... ..
.. ...
... .....
..
...
.
.
.
..
2
7
Rechtsrotation
+2)
6( .
6(+1)
. .
...
...
...
...
A y
BC
Einfügen von 1
.. ....
... ....
...
..
...
...
...
...
.
...
.
→
4
3(+1)
. .
.. ..
.. .....
...
...
...
...
...
..
...
...
2(+1)
.
...
..
...
...
..
....
7
4
3(0)
→
.. ..
... .....
...
...
..
...
...
...
...
...
.
.
2(+1)
.
..
..
...
...
..
.....
1
6(0)
..
... ....
... ..
.. ...
... .....
..
...
.
.
.
..
4
7
1
Hier: x und y sind Knoten; A,B und C stehen für Teilbäume.
Warum erhält Rotation die Suchbaumeigenschaft?
Wie verändert Rotation die Balancierung?
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS1, V9
19. Dezember 2013
7 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS1, V9
19. Dezember 2013
8 / 20
Beispiel: Einfügen und Doppelrotation
Rebalancierung nach Einfügen eines Knotens
Test
AVL-Baum
Einfügen von 5
Linksrotation
x
3
+2)
3(0)
..
2
3(-1)
. .
7
.. ...
.. ...
... ...
... ....
..
...
....
..
6( .
4
4(+1)
. .
7
. .
... ....
... ....
..
...
...
...
..
...
.
.
... ...
.. ....
...
...
...
...
...
..
...
...
4(-1)
.
2
4(0)
. .
.
... ...
.. ....
...
...
...
...
..
...
...
...
.
... .....
...
...
...
...
...
...
...
...
...
...
.. ..
.. ...
... ....
...
...
...
..
...
...
.
3(+1)
.
...
...
...
...
...
...
5
BF(y )
3(+1)
.
7
x
... ....
... ..
.. ...
... .....
..
...
.
.
.
..
A
5
C
B
BF(y ) ≤ −2: Betrachte rechten Tochterknoten x von y . Falls
BF(x ) ≤ 0, rotiere links um y . Sonst (BF(x ) > 0), rotiere zuerst
.. ...
.. ...
... ...
... ....
..
...
....
..
2
. ..
... .....
..
...
...
...
...
...
.
.
..
zuerst links um x , dann rechts um y .
6(0)
..
..
..
...
...
..
....
y (≥ +2)
≥ +2: Betrachte linken Tochterknoten
Falls BF(x ) ≥ 0 (d.h h(A) ≥ h(B )), rotie-
re rechts um y . Sonst Doppelrotation nötig: rotiere
... .....
...
...
...
...
...
...
...
...
...
.
5
...
..
...
...
..
...
Falls
6
x von y .
+2)
6( .
6(+1)
. .
y
4
auf Pfad von i bis zur Wurzel (in dieser
Reihenfolge).
Rechtsrotation
4
BF(y ) für alle Knoten y
i
Falls
7
rechts um x , dann links um y .
2
Nach Einfügen eines Knotens ist maximal eine Einfach- oder Doppelrotation
nötig. Der reorganisierte Teilbaum hat danach dieselbe Höhe wie vorher, so
dass das AVL-Kriterium für alle Knoten oberhalb wieder erfüllt ist.
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS1, V9
19. Dezember 2013
9 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE)
Löschen in AVL-Bäumen I
ADS1, V9
19. Dezember 2013
10 / 20
Löschen in AVL-Bäumen II
Einfacher Fall: Löschen eines Blattes bzw. eines Randknotens
(also Löschen von Knoten mit max. 1 Tochter)
Rebalancierung
wie bei Einfügen
gegebenenfalls wiederholte Rebalancierung (nur auf dem Pfad zur
Wurzel). Dies ist ein Unterschied zu Einfügen, denn Rebalancierung
kann Balancierungsfaktoren von Vorgängern ändern -
an Vorgängerknoten mit BF = +/- 2
Löschen eines Knotens x mit 2 Töchtern wird auf Löschen für
Blatt/Randknoten zurückgeführt:
ersetze x durch kleinsten Schlüssel y im rechten Tochterbaum von x
nach Löschen kann Höhe eines Teilbaums erniedrigen.
AVL-Baum
Löschen von 1
..
...
...
..
....
..
1
. ...
... ..
.. ....
...
...
...
...
.
..
...
4
. ..
... ....
..
...
...
...
...
...
..
..
...
→
6(-1)
. .
. ...
... ..
.. ....
...
...
...
...
.
..
...
7(0)
..
..
.. ...
... ....
... ..
.. .....
....
...
.
8
9
8
7(0)
..
4
..
.. ...
... ....
... ..
.. .....
....
...
.
P.F. Stadler & S. Will (Bioinf, Uni LE)
→
6(-1)
. .
2
Warum hat der Knoten mit Schlüssel
ADS1, V9
9
.. ..
... .....
...
..
...
...
...
...
.
.
...
...
3(0)
..
7(0)
..
2
8
.. ...
... ....
... ..
.. .....
....
...
.
..
4
19. Dezember 2013
11 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS1, V9
der Höhe h gilt, T hat mindestens
schätzen wir also Fh weiter ab.
Nach Binetscher Formel (vgl. 1. Vorlesung) gilt
wobei A
Da |B |
√
= (1 +
< 1,
ist B
5)/2 und
h
< 1.
Wir können deshalb weiter abschätzen
ausserdem |T | minimal.
Fh
Einer der Tochterbäume von T muss die Höhe h − 1 haben.
Wegen Minimalität von T hat der andere Tochterbaum die
kleinstmögliche Höhe; wegen AVL-Eigenschaft, also h − 2.
Nach Induktionshypothese gilt, dass die Tochterbäume mindestens
Fh−1 und Fh−2 Knoten enthalten, daher gilt
|T | ≥ Fh−1 + Fh−2 + 1 ≥ Fh .
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS1, V9
19. Dezember 2013
2
log A
n
≥ Fh ≥ (Ah − 1)/
√
√
5
.
5, also (nach h aufgelöst)
log
≤
h
√
2(
5n
+ 1)
2
log A
13 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE)
.
ADS1, V9
19. Dezember 2013
14 / 20
Fibonacci-Bäume
Maximal unbalancierte AVL-Bäume.
≈
1
2
log A
· (log2
√
5
Zu jedem h
+ log2 n)
0
B
< 1.44 log2 n
(+kleine
Konstante)
≥0
gibt es genau einen Fibonacci-Baum Bh mit Höhe h.
1
ist der leere Baum, B
für h
ergibt sich
≥2
Bh
= log2 (n + 1)
2
B
Resultat: Selbst im ungünstigsten Fall sind AVL-Bäume nur um
Faktor 1.44 höher als vollständige Bäume mit derselben Knotenzahl!
◦
...
..
...
..
...
◦
B
3
◦
.
.....
.. ...
... .....
..
...
...
.
...
..
....
...
◦ ◦
◦
Was haben wir also erreicht?
= BUILD(Bh−1 , x , Bh−2 ) .
4
B
B
◦
..
... ...
... .....
...
...
...
...
.
...
..
..
... .....
.
...
... ....
...
.
...
..
.
.
...
...
..
...
..
...
...
◦
◦
◦ ◦ ◦
◦
(Wie sieht der worst-case aus?)
ADS1, V9
ist ein einzelner Knoten
ist der Fibonacci-Baum der Höhe h mit Wurzel x .
Vergleich mit vollständigen Bäumen:
P.F. Stadler & S. Will (Bioinf, Uni LE)
≥ (Ah − 1)/
Sei T ein AVL-Baum der Höhe h mit n Knoten. Nun gilt
Höhe von AVL-Bäumen III
√
log2 ( 5n + 1)
√
= (Ah − B h )/ 5 ,
√
B = (1 −
5)/2.
Fh
Beweis durch vollständige Induktion (über Baumhöhe)
Induktionsstart: h = 0 (leerer Baum), h = 1 (nur Wurzel) ok.
Induktionsschritt (h ≥ 2). Sei T ein AVL-Baum der Höhe h; sei
h
12 / 20
Um die minimale Knotenzahl eines AVL-Baums der Höhe h abzuschätzen,
≥ Fh ).
h
19. Dezember 2013
Höhe von AVL-Bäumen II
Behauptung: Für jeden AVL-Baum T
≤
wie zuvor
9
0 = 0; F1 = 1; Fi = Fi −1 + Fi −2 (i > 1)
h
höchstens eine Tochter?
.. ...
... ....
... ..
.. .....
....
...
.
..
Zur Erinnerung: Fibonacci-Zahlen F
Aus
y
Lösche ursprünglichen Knoten von y und rebalanciere
Höhe von AVL-Bäumen I
Fh Knoten (|T |
Beachte: die Suche nach y benötigt O (log n ) Schritte.
6(0)
3(-2)
. .
3(-1)
.. ....
...
...
...
...
...
...
...
...
.
.
...
.
...
2(+1)
.
(oder wahlweise gröÿten Schlüssel im linken);
Linksrotation
5
◦
. .
..... .........
.....
.....
.....
.....
.....
.....
.....
.....
..
.....
.
....
... .....
.
... ....
.
...
...
... ...
.
.
.
.
...
.. ....
..
..
.
...
...
.
.
.
.
. ..
.
.
... ....
...
...
..
..
... ....
.
.
.
.
.
.
.
.
...
...
...
...
.
...
..
....
..
◦
◦
◦
◦
◦ ◦ ◦
◦ ◦
◦
◦
19. Dezember 2013
15 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS1, V9
19. Dezember 2013
16 / 20
Gewichtsbalancierte Suchbäume I
Gewichtsbalancierte Suchbäume II
Gewichtsbalancierte oder BB-Bäume (bounded balance)
Wahl des Parameters
Zulässige Abweichung der Struktur vom ausgeglichenen Binärbaum wird
über den Quotient zwischen der Anzahl der Knoten im linken Tochterbaum
α = 1/2:
Binärbäume
α < 1/2:
und dem gesamten Teilbaum beschränkt.
α = 0:
Denition: Sei B ein binärer Suchbaum mit n
>0
Knoten, von denen sich
nl Knoten im linkem Tochterbaum Bl benden.
ρ(B ) = nn++11
l
α:
Balancierungskriterium akzeptiert nur vollständige
Strukturbeschränkung wird zunehmend gelockert
keine Beschränkung der Baumstruktur
Wartung
Einsatz derselben Rotationstypen wie beim AVL-Baum
heiÿt die Wurzelbalance von B .
Ein Baum B heiÿt gewichtsbalanciert, BB(α), oder von beschränkter
Rebalancierung ist gewährleistet durch eine Wahl von
0
Balance α, wenn für jeden Tochterbaum B von B gilt:
α≤1−
0
α ≤ ρ(B ) ≤ 1 − α
ADS1, V9
1
2
Kosten für Suche und Aktualisierung: O (log n )
Nievergelt and Reingold (1972), http://portal.acm.org/citation.cfm?id=804906
P.F. Stadler & S. Will (Bioinf, Uni LE)
r
19. Dezember 2013
17 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE)
Positionssuche mit balancierten Bäumen I
ADS1, V9
19. Dezember 2013
18 / 20
Positionssuche mit balancierten Bäumen II
Rangzahlen erlauben Bestimmung eines direkten Suchpfads im Baum für
Positionssuche nach dem k -ten Element.
Balancierte Suchbäume
Position p
sind linearen Listen in fast allen Grundoperationen überlegen
beginne Suche am Wurzelknoten
Wenn Rang r eines Knotens = p, gilt: Element gefunden
Lösung des Auswahlproblems bzw. Positionssuche (Suche nach k -tem
Element der Sortierreihenfolge) kann jedoch noch verbessert werden
Denition: Der Rang eines Knotens ist die um 1 erhöhte Anzahl der Knoten
seines linken Tochterbaums. (Blattknoten haben Rang 1)
:= k ;
falls r
> p:
Suche im linken Tochterbaum des Knotens weiter
falls r
< p:
Ersetze p := p - r und setze Suche im rechten
Tochterbaum fort.
Die Wartungsoperationen erfordern etwas mehr Aufwand: Nach Einfügen /
Löschen eines Knotens müssen die Rangwerte auf dem kompletten
Suchpfad angepasst werden.
P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS1, V9
19. Dezember 2013
19 / 20 P.F. Stadler & S. Will (Bioinf, Uni LE)
ADS1, V9
19. Dezember 2013
20 / 20
Herunterladen