10. Balancierte Bäume

Werbung
10. Balancierte Bäume
Informatik II für Verkehrsingenieure
Ziel
GEORDNETER BINÄRER BAUM
§ Suchen
§ Operationen Einfügen und Löschen
§ Analyse der Eigenschaften des geordneten Baumes
BALANCIERTER SUCHBAUM
§ Einfügen und Löschen
§ Rotationen
2
Bäume: Definition
ormatik: Programmierung und Software-Entwicklung, WS 11/12
4
BaumEin BaumBäume:
besteht ausDefinition
Knoten, die durch Kanten miteinander verbunden
sind. Ein Wurzelknoten ist ein Knoten, auf den keine Kante zeigt.
In Knoten
können
nach Anwendung
verschiedeneverbunden
Daten gespeichert sein.
besteht
aus
Knoten,
diejedurch
Kanten miteinander
DEFINITION
Die Menge
Bäume
wird
durch
folgende
Regeln
konstruiert:
Wurzelknoten
ist einaller
Knoten,
auf
den
keine
Kante
zeigt.
Knoten
Kanten
§ Ein Baum
besteht
aus
, die
durch
miteinander
verbunden
sind. Ein Wurzelknoten ist ein
Knoten, auf den keine Kante zeigt.
Es gibt
einen leerenverschiedene
Baum.
können je nach
Anwendung
Daten gespeichert sein.
einzelner
ohneverschiedene
irgendwelche
Kanten
ist einsein.
Baum.
§ In KnotenEin
können
je nachKnoten
Anwendung
Daten
gespeichert
e aller Bäume wird durch folgende Regeln konstruiert:
Ist n > 0 und sind B1, B2, …, Bn Bäume mit Wurzelknoten w1, w2, …, wn, so
§ Die
Menge
aller
Bäume
wird zu
durch
folgende
RegelnBaum
konstruiert:
t einen
leeren
Baum.
kann
man
diese
einem
größeren
zusammensetzen, indem man
- Es gibt einen leeren Baum.
einen neuen Knoten hinzufügt und diesen mit w1, w2, …, wn verbindet. Der
Ein einzelnerohne
Knoten ohne
irgendwelche Kanten
ist ein Baum
nzelner- Knoten
irgendwelche
Kanten
ist
ein
Baum.
neue
Knoten
ist
dann
Wurzelknoten
des
so
aufgebauten
Baums.
- Sind B , B , ..., B Bäume mit Wurzelknoten w , w , ..., w , so kann man diese zu einem größeren Baum
1
2
n
1
2
n
zusammensetzen,
indem
einen neuen
hinzufügt und diesen
, w , ...,
Der neue
0 und sind
B1, B2, …,
Bn man
Bäume
mitKnoten
Wurzelknoten
w1, mit
w2w, …,
wwn, verbindet.
so
Knoten ist dann Wurzelknoten des so aufgebauten Baums.
man diese zu einem größeren Baum zusammensetzen, indem man
w2
…
neuen Knoten hinzufügt und diesen mit w1w, 1w2, …, wn verbindet.
Der wn
Knoten ist dann Wurzelknoten des so aufgebauten Baums.
1
B1
B2
2
n
Bn
3
17
Informatik II, SS06
Geordneter Binärbaum (Suchbaum)
Geordnete Binärbäume (Suchbäume)
Ein Binärbaum b heißt geordnet, wenn
IN BINÄRBAUM T HEISST bGEORDNET
, WENN
leer ist oder
wenn
§ T leer ist oder wennFolgendes für alle nichtleeren Teilbäume t von b gilt:
§ Folgendes für alle nichtleeren
Teilbä
Der Schlüssel
vonutme
ist t von T gilt:
Der Schlüssel von t ist größer (oder gleich) als alle Schlüssel des linken Teilbaums von t und
- größer (oder gleich) als alle Schlüssel des linken Teilbaums von t und
kleiner (oder gleich) als alle Schlüssel des rechten Teilbaums von t
- kleiner (oder gleich) als alle Schlüssel des rechten Teilbaums von t
7
>
<
10
5
>
>
3
9
<
12
M. Wirsing: Dynamische Datenstrukturen – Listen und Bäume
4
Suche im Binärbaum
Suche im geordneten Binärbaum
19
II, SS06
PRINZIPIELLER ABLAUF DER BERECHNUNG VON T.CONTAINS(6):
zipieller Ablauf der Berechnung von t.contains(6):
§ Suche ob Element 6 enthalten ist
Vergleiche 6 mit dem Wert der Wurzel;
7
Da 6<7, gehe zum linken Kindknoten;
6<7
8
5
3
6
12
5
Suche im Binärbaum
Suche im geordneten Binärbaum
19
II, SS06
PRINZIPIELLER ABLAUF DER BERECHNUNG VON T.CONTAINS(6):
zipieller Ablauf der Berechnung von t.contains(6):
① VERGLEICHE
DEMWert
WERT DER
WURZEL
;
Vergleiche
6 mit6 MIT
dem
der
Wurzel;
7
Da 6<7,
gehe
linken
Kindknoten;
② DA 6<7,
GEHE zum
ZUM LINKEN
KINDKNOTEN
;
6<7
8
5
3
6
12
6
Suche im Binärbaum
Suche im geordneten Binärbaum
19
II, SS06
PRINZIPIELLER ABLAUF DER BERECHNUNG VON T.CONTAINS(6):
zipieller Ablauf der Berechnung von t.contains(6):
① VERGLEICHE
DEMWert
WERT DER
WURZEL
;
Vergleiche
6 mit6 MIT
dem
der
Wurzel;
7
Da 6<7,
gehe
linken
Kindknoten;
② DA 6<7,
GEHE zum
ZUM LINKEN
KINDKNOTEN
;
6<7
③ VERGLEICHE 6 MIT DEM WERT DIESES KNOTENS;
8
5
④ DA 6>5, GEHE ZUM RECHTEN KINDKNOTEN DIESES KNOTENS;
6>5
3
6
12
7
Suche im Binärbaum
Suche im geordneten Binärbaum
19
II, SS06
PR IN Z IP IE LLE R AB LA U F D E R BE R E C H N U N G V O N T .C O N TA IN S (6):
zipieller Ablauf der Berechnung von t.contains(6):
① VE R G6
L Emit
IC H Edem
6 M IT D
E M WEder
R T DWurzel;
E R WU RZ E L ;
Vergleiche
Wert
7
Da 6<7,
gehe
Kindknoten;
② DA 6<7,
G E H zum
E Z U M linken
L IN K E N K
IN D K N O T E N ;
③ VE R G L E IC H E 6 M IT
④ DA 6>5, G E H E
DEM
WE R T
KN O T EN S ;
8
5
ZU M R EC HTEN
⑤ VE R G L E IC H E 6 M IT
D IE SE S
6<7
DEM
KIN D K N O T E N
WE R T
D IE SE S
⑥ DA 6==6, G E B E ER G E B N IS T R U E
D IE S ES
KN O T EN S ;
KN O T E N S ;
3
6==5
6
12
Z U R U ̈CK.
8
24
Informatik II, SS06
Einfügen in geordneten Baum
Einfügen in geordneten Binärbaum
Einfügen in einen geordneten Binärbaum wird rekursiv die “richtige” Stelle
BE IM EIN FU ̈GENBeim
IN EINEN GEORDNETEN BINÄRBAUM WIRD REKURSIV DIE “RICHTIGE” STELLE GESUCHT, SO
gesucht, so dass wieder eine geordneter Binärbaum entsteht.
DASS WIEDER EINEBeispiel:
GEORDNETER
INÄRBAUM ENTSTEHT.
t.add(8)Bergibt:
§ Beispiel: t.add(8) ergibt:
7
7
t=
t=
5
3
t.add(8)
10
6
10
5
12
3
6
8
12
M. Wirsing: Dynamische Datenstrukturen – Listen und Bäume
9
Löschen im geordneten Binärbaum
EIGENSCHAFT
§ Beim entfernen eines Schlüssels muss die Baumstruktur aufrecht erhalten werden.
7
3
14
18 Löschen
33
19
18
52
26
10
Löschen im geordneten Binärbaum/2
EIGENSCHAFT
§ Beim entfernen eines Schlüssels muss die Baumstruktur aufrecht erhalten werden. Das ist etwas
schwieriger bei inneren Knoten.
7
3
14
14 Löschen
33
19
52
26
11
Löschen im geordneten Binärbaum/3
EIGENSCHAFT
§ Beim entfernen eines Schlüssels muss die Baumstruktur aufrecht erhalten werden. Das ist etwas
schwieriger bei inneren Knoten.
7
3
7 Löschen
33
19
52
26
12
Löschen im geordneten Binärbaum/4
Informatik II, SS06
36
Löschen in geordneten Binärbaum
Allgemein treten zwei grundsätzlich verschiedene Situationen auf:
Fall 1: der Knoten q mit dem zu entfernenden Schlüssel besitzt höchstens einen Sohn
(Blatt oder Halbblatt):
a) der Knoten q besitzt keinen Sohn
b) der Knoten q besitzt einen linken Sohn
(rechts: symmetrisch)
M. Wirsing: Dynamische Datenstrukturen – Listen und Bäume
13
37
Informatik II, SS06
Löschen im geordneten Binärbaum/5
Löschen in geordneten Binärbaum
Fall 2:
Der Knoten q mit dem zu entfernenden Schlüssel besitzt zwei Söhne (innerer Knoten):
Der zu löschende Schlüssel von q
wird durch den kleinsten der
größeren Schlüssel ersetzt.
Dieser Schlüssel befindet sich stets
in einem Blatt oder einem Halbblatt,
das daraufhin aus dem Baum entfernt
wird.
M. Wirsing: Dynamische Datenstrukturen – Listen und Bäume
14
Analyse des geordneten Binärbaumes
AUFBAU BINÄRBAUM ZU FOLGENDER DATENMENGE (SIEHE ÜBUNG 8.4)
§ 50, 17, 72, 12, 23, 54, 76, 9, 14, 19, 67
15
Analyse des geordneten Binärbaumes/2
AUFBAU BINÄRBAUM ZU FOLGENDER DATENMENGE (SIEHE ÜBUNG 8.4)
§ 9, 12, 14, 17, 19, 23, 50, 54, 67, 72, 76
16
Vollständig ausgeglichene binäre Suchbäume
Vollständig ausgeglichene b. Suchbäume
EIN VOLLSTÄNDIG AUSGEGLICHENER BINÄRER SUCHBAUM IST
§ binär geordneter Baum (Suchbaum), bei dem
-- abgesehen von der untersten Schicht -alle Levels vollständig besetzt sind.
§ Die Tiefe/Höhe eines vollständig ausgeglichenen Suchbaums beträgt log2(n+1), wobei n die Anzahl
der Elemente ist
à Dies ist die minimale Höhe für alle Suchbäume
à Optimaler Aufwand für Suche
18
Vollständig ausgeglichene b. Suchbäume
Informatik II, SS06
8
Vollständig ausgeglichene binäre Suchbäume
BEISPIELE
Beispiele: Vollständig ausgeglichene binäre Suchbäume der Höhen 1-4
M. Wirsing: Balancierte Bäume
19
Einfügen
Informatik II, SS06
9
EINFÜGENVollständig ausgeglichene binäre Suchbäume
Problem:
Einfügen
eines Elements
muss ein vollständiger Suchbaum
§ erfolgt
erst einmalBeim
identisch
zum geordneten
Binärbaum
möglicherweise vollständig reorganisiert werden.
Beispiel: Einfügen von Zuse unproblematisch; Einfügen von Bauer führt zu vollständiger
Reorganisation
Hoare
Hoare
Zuse
Wirth
Floyd
einfügen
Wirth
Floyd
Dahl
Dahl
Gosling
Gosling
Zuse
Turing
Gosling
Hoare
Floyd
Turing
Wirth
Bauer
einfügen
Dahl
Turing
20
9
Informatik II, SS06
Einfügen/2
Vollständig ausgeglichene binäre Suchbäume
Beim Einfügen eines Elements muss ein vollständiger Suchbaum
EINFÜGENProblem:
VON BAUER
möglicherweise vollständig reorganisiert werden.
Beispiel: Einfügen von Zuse unproblematisch; Einfügen von Bauer führt zu vollständiger
Reorganisation
Hoare
Hoare
Zuse
Wirth
Floyd
einfügen
Wirth
Floyd
Dahl
Dahl
Gosling
Gosling
Dahl
Gosling
Wirth
Gosling
Zuse
Turing
Hoare
Floyd
Turing
Turing
Bauer
einfügen
Turing
Dahl
Bauer
Floyd
Hoare
Wirth
21
Vollständig ausgeglichene b. Suchbäume
PROBLEM
§ Beim Einfügen eines Elements muss ein vollständiger Suchbaum möglicherweise vollständig
reorganisiert werden.
§ Damit erhöht sich der Aufwand für das Einfügen
KOMPROMISSLÖSUNG
§ Ist notwendig, um den vollständigen Baum nicht reorganisieren zu müssen
22
AVL-Bäume
AVL-Bäume
DEFINITION
§ Ein binärer Suchbaum heißt AVL-Baum, falls für den linken Teilbaum T1 und den rechten Teilbaum T2
der Wurzel gilt
§ | h(T2) – h(T1) | <= 1
Wurzel
§ T1 und T2 sind ihrerseits AVL-Bäume.
BALANCEFAKTOR (BF)
§ Der Wert |h(T2) – h(T1)| wird als Balancefaktor (BF) eines
Knotens bezeichnet. Er kann in einem AVL-Baum nur
die Werte -1,0, oder 1 (dargestellt durch -, = und +)
annehmen.
T1
T2
24
Entstehung
14
Informatik II, SS06
AVL-Bäume: Entstehung
George Adelson-Velsky
*1922 , jetzt in Israel
Forscher am ITEP
(Moskau Inst. für Theor.
u. Exper. Physik)
Schachcomputer
Pionier
Gewann 1967 3:1 im
Computerschach gegen
John McCarthy
AVL Bäume sind benannt nach
den russischen Mathematikern G.M.
Adelson-Velskii und E. M. Landis,
die diese schwächere Definition von
Ausgeglichenheit eines Baums 1962
aufstellten.
G. M. Adelson-Velskii und
E. M. Landis, Doklady Nauk SSSR
146, S. 263-266, 1962; Englische
Übersetzung in Soviet Math 3, S.
1259-1263
Evgenii Mikhailovich Landis
1921-1997 Diss. 1953,
ITEP und Professor der
Moskauer Staatsuni.
25
15
Informatik II, SS06
Beispiel
AVL-Bäume
IBeispiele:
ST DAS EIN AVL-BAUM?
Mit Angabe der Balancefaktoren
26
Beispiel/2
15
AVL-Bäume
Mit Angabe der Balancefaktoren
KEIN AVL-Baum
27
Einfügen in AVL-Baum
16
Informatik II, SS06
Einfügen in AVL-Baum
Dijkstra
=
Dahl
einfügen
Dijkstra
Dahl
=
Einfügen von Dahl:
Neuberechnung des
Balancierungsfaktors,
AVL Kriterium erfüllt
28
17
matik II, SS06
Einfügen in AVL-Baum
Einfügen in AVL-Baum
Dahl
tra EINFÜGEN
=
einfügen
§ Von Bauer
Einfügen von Dahl:
Neuberechnung des
Balancierungsfaktors,
AVL Kriterium erfüllt
Dijkstra
Dahl
=
ügen von Bauer: Verletzung des AVL Kriteriums
hl
Dijkstra
-2
-
Rechtsrotation
Dahl
Bauer
=
ch Rechtsrotation: AVL Kriterium wieder erfüllt
=
Dijkstra
=
29
Bauer: Verletzung des AVL Kriteriums
Einfügen in AVL-Baum
Rechts EINFÜGEN
§ rotation
Von Wirth
Dahl
Bauer
=
=
Dijkstra
=
otation: AVL Kriterium wieder erfüllt
e Bäume
30
18
Informatik II, SS06
Einfügen in AVL-Baum
EINFÜGEN
§ Von Zuse
Dahl
Bauer
Einfügen in AVL-Baum
Einfügen von Wirth:
Nach Neuberechnung des
Balancierungsfaktors ist
AVL-Kriterium weiter erfüllt
+
Dijkstra
+
=
Wirth
=
Einfügen von Zuse:
Dahl
Bauer
=
Dahl
+2
Linksrotation
Dijkstra
+2
Bauer
+
Wirth
=
=
Dijkstra
=
Wirth
+
Zuse
=
Zuse
=
Nach Linksrotation: AVL Kriterium wieder erfüllt
M. Wirsing: Balancierte Bäume
31
Einfügen in AVL-Baum
EINFÜGEN
§ Von Hoare
32
Einfügen in AVL-Baum
EINFÜGEN
§ Von Gosling und Naur
33
Einfügen in AVL-Baum
EINFÜGEN
§ Von Turing
34
21
Informatik II, SS06
Anwendungsstelle der Rotation
Anwendungsstelle der Rotation
Veränderungen der Balancierungsfaktoren geschehen ausschließlich auf dem
Pfad von der Wurzel zur Einfügeposition
Ausgangspunkt der Rotation ist immer der „tiefste“ Elternknoten mit BF = ±2
(dieser Knoten hatte vorher BF = ±1)
Der (auf dem Pfad) darunter liegende Knoten hat BF = ±1
Dahl
Bauer
=
Dijkstra
+2
+2
Dahl
Dijkstra
+2
Bauer
Wirth
+
Zuse
=
=
Wirth
-2
Hoare
Gosling
=
Zuse
=
+
Naur
+
Turing
=
35
Allgemeine Rotationstypen in AVL-Bäumen
22
Informatik II, SS06
Rotationstypen
Rotationstypen
Betrachte ausgehend vom tiefsten Knoten mit BF = 2 den Pfad zur
Einfügeposition:
RR: Rechts-Rechts Linksrotation
LL: Links-Links Rechtsrotation
RL: Rechts-Links Doppelrotation „rechts“
LR: Links-Rechts Doppelrotation „links“
L
L
R
R
L
R
R
L
Rotation ist immer eindeutig bestimmt
Jetzt genauere Betrachtungen der einzelnen Typen
M. Wirsing: Balancierte Bäume
37
Informatik II, SS06
Typ RR:
Linksrotation
23
Typ RR: Linksrotation
Wir bezeichnen den „tiefsten“ Knoten mit Strukturverletzung mit A, dessen Kind
mit S und den Enkelknoten mit B
Bei der Linksrotation hat S den BF „+“ und A den BF „+2“
A
+2
T1
T2
S
S
A
+
T3
Linksrotation
T1
=
=
T3
T2
38
24
Informatik II, SS06
Typ LL: Rechtsrotation
Typ LL: Rechtsrotation
Bei der Rechtsrotation hat S den BF „-“ und A den BF „-2“
A
S
T1
S
-2
=
A
-
T3
T2
Rechtsrotation
T1
T2
=
T3
39
25
Informatik II, SS06
Typ RL: Doppelrotation
Typ RL: Doppelrotation
Bei der RL-Doppelrotation hat A den BF „+2“, S den BF „-2“, B den BF „+“ oder „-“ .
Wir wählen „-“ für den BF von B.
A
B
+2
T1
S
B
T2
-
A
-
T4
T3
M. Wirsing: Balancierte Bäume
RL Doppelrotation
T1
=
S
=
T2
T3
+
T4
40
Typ RL: Doppelrotation
26
Informatik II, SS06
Typ LR: Doppelrotation
Bei der LR-Doppelrotation hat A den BF „-2“, S den BF „+“, B den BF „+“ oder „-“ .
Wir wählen „-“ für den BF von B.
A
S
+
T1
T2
B
B
-2
S
T4
-
T3
LR Doppelrotation
T1
=
A
=
T2
T3
+
T4
41
27
Informatik II, SS06
Typ LR: Doppelrotation/2
Typ LR: Doppelrotation
Variante der LR-Doppelrotation mit Balancefactor „+“ für B
A
S
+
T1
T2
B
B
-2
S
T4
+
T3
LR Doppelrotation
T1
=
A
=
T2
T3
+
T4
42
Löschen im AVL-Baum
Löschen
DAS LÖSCHEN
§ Erfolgt wie bei den geordneten Suchbäumen und kann (wie das Einfügen) zu Strukturverletzungen
führen, die durch Rotationen ausgeglichen werden
§ Beim Löschen genügt nicht immer eine einzige Rotation oder Doppelrotation. Im schlechtesten Fall
muss auf dem Suchpfad bottom-up vom zu entfernenden Schlüssel bis zur Wurzel auf jedem Level
eine Rotation bzw. Doppelrotation durchgeführt werden.
44
Take-Home-Message
GEORDNETER BINÄRER BAUM
§ Suchen
§ Operationen Einfügen und Löschen
§ Analyse der Eigenschaften des geordneten Baumes
BALANCIERTER SUCHBAUM
§ Einfügen und Löschen
§ Rotationen
45
Herunterladen