Algorithmen und Datenstrukturen Überblick

Werbung
Algorithmen und
Datenstrukturen
Dipl. Inform. Andreas Wilkens
[email protected]
Überblick
Grundlagen
Definitionen
Elementare Datenstrukturen
Rekursionen
Bäume
2
1
Datenstruktur „Baum“
Definition eines Baumes
Ein einzelner Knoten ist ein Baum.
Wenn B1, B2, ..., Bn für n>=1 Bäume sind,
dann ist auch das folgende Gebilde ein
Baum:
B1,...,Bn nennt man
Teilbäume oder
Unterbäume.
3
Beispiele für Bäume
4
2
Begriffe
Wurzel
Kante
Blatt
innerer Knoten
5
Begriffe
Wurzel: Knoten ohne Vorgänger
Innere Knoten: mit Vorgänger und
Nachfolger
Blätter: Knoten ohne Nachfolger
6
3
Listen & Bäume
Listen und Bäume können beide zum
Ablegen von Daten benutzt werden.
Listen haben Nachteile z.B. beim Zugriff
auf bestimmte Elemente, da kein
Random Access möglich ist.
Listen haben Vorteile wegen z.B. hoher
Flexibilität bei Einfügungen und
Löschungen.
7
Listen & Bäume
Bäume bieten Kompromiß:
flexibles Einfügen wie bei Listen
dabei geringere Zahl von
Zugriffsoperationen
8
4
Formale Definition
Ein Baum ist ein ungerichteter Graph
ohne geschlossene Wege, in dem
zwischen je zwei Knoten genau ein Weg
existiert
(zyklenfreier, zusammenhängender,
ungerichteter Graph)
9
geordnete Bäume
Wenn die Teilbäume B1,...,Bn in einer
festen Reihenfolge stehen sollen, so
spricht man von geordneten Bäumen.
10
5
gerichteter Baum
Ein gerichteter
Graph ist dann ein
gerichteter Baum,
wenn er zyklenfrei
und
zusammenhängend
ist und wenn jeder
Knoten höchstens
eine einlaufende
Kante besitzt.
11
Wurzelbaum
Ein Wurzelbaum ist
ein gerichteter Baum
mit genau einem
Knoten w (Wurzel)
ohne einlaufende
Kante, von dem aus
man jeden anderen
Knoten des Baumes
auf genau einem
Weg erreichen kann.
12
6
Wurzelbaum
In einem
Wurzelbaum haben
alle Knoten außer
der Wurzel genau
einen Vorgänger.
Der nebenstehende
Baum ist kein
Wurzelbaum, da der
Knoten n4 zwei
Vorgänger hat.
13
Niveau eines Knotens
In einem Wurzelbaum besitzt jeder
Knoten ein sogenanntes Niveau.
Leider gibt es für das Niveau zwei
unterschiedliche Interpretationen.
Variante 1
Variante 2
14
7
Niveau – Variante 1
Das Niveau
ist der
Abstand
eines
Knotens von
der Wurzel,
in Anzahl
durchlaufener
Kanten.
15
Niveau – Variante 2
Die Wurzel
hat das
Niveau 1
ein direkter
Nachfolger
hat das
Niveau 2
usw.
16
8
Höhe des Baumes
Als Höhe des Baumes bezeichnet man
das größte auftretende Niveau des
Baumes.
Da das Niveau nach Variante 1 oder 2
angegeben werden kann, gibt es auch
bei der Höhe zwei Varianten!
17
Vater, Sohn und Bruder
Wenn im gerichteten
Baum eine Kante vom
Knoten u zum Knoten v
existiert, dann ist u der
Vater von v und v der
Sohn von u.
Wenn u eine weitere
Kante zu v` hat, dann
nennt man v und v`
Brüder.
18
9
geordneter Wurzelbaum
Haben die Nachfolger eines Knotens
eine Ordnung (z.B. linker und rechter
Nachfolger), dann spricht man von
einem geordneten Wurzelbaum.
19
Grad des Knotens
Die Anzahl der Nachfolger eines
Knotens nennt man Grad (Ordnung)
des Knotens.
20
10
Grad des Knotens
Grad(u) = 2
Grad(v) = 3
Grad(w) = 0
21
Grad des Baumes
Das Maximum der
im Wurzelbaum
vorkommenden
Grade nennt man
Grad (Ordnung) des
Baumes.
Der Grad des
nebenstehenden
Baumes ist 3.
22
11
Binärbaum
Ein Binärbaum ist ein geordneter
Wurzelbaum vom Grad 2, d.h. jeder
Knoten hat maximal 2 Nachfolger.
23
Voller & vollständiger
Binärbaum
Ein voller Binärbaum ist ein Binärbaum, bei
dem jedes Niveau komplett mit Knoten gefüllt
ist.
Ein vollständiger Binärbaum ist auf allen
Ebenen gefüllt mit Ausnahme des
zeichnerisch untersten Niveaus.
(In der Literatur werden diese beiden
Definitionen teilweise vertauscht.)
24
12
Voller Binärbaum
16
24
8
4
2
1
6
3
20
12
5
10
9
7
14
11
13
28
15
17
26
22
18
19
21
23
25
30
27
31
29
ALLE Ebenen sind komplett.
25
Vollständiger Binärbaum
Nur unterste Ebene ist nicht komplett.
26
13
Anzahl Knoten
Anzahl der Knoten in einem Binärbaum
der Höhe k:
voller Binärbaum:
n = 2k+1 – 1
vollständiger Binärbaum:
2k <= n <= 2k+1 – 1
Höhe angegeben nach Variante 1,
d.h. Wurzel hat Höhe 0
27
Binärer Suchbaum
Ein binärer Suchbaum kann dazu
genutzt werden, sortierte Daten für
Suchzwecke bereitzuhalten.
28
14
Binärer Suchbaum
bei aufsteigender Sortierung gilt:
Alle Werteinträge im linken Teilbaum sind
kleiner als der Eintrag in der Wurzel.
Alle Werteinträge im rechten Teilbaum sind
größer als der Eintrag in der Wurzel.
Linker und rechter Teilbaum sind ebenfalls
Suchbäume.
29
Binärer Suchbaum
20
14
17
8
3
33
11
26
39
30
30
15
Vorteil binärer Suchbaum
effizienter Suchvorgang
Beispiel:
bei 216-1 = 65535 Knoten ist die minimale
Baumhöhe h=15 (voller Baum)
nach maximal 16 Vergleichen ist klar, ob
der Wert enthalten ist oder nicht
31
Aufbau binärer Suchbaum
Aufbau eines Knotens
struct node {
ItemType data;
node *left;
node *right;
};
32
16
Algorithmus binärer Suchbaum
Beim leeren Baum wird der erste Wert
in einen neu geschaffenen Knoten
untergebracht und unter dem rootPointer eingehängt.
33
Algorithmus binärer Suchbaum
Weitere Knoten wie folgt eingehängt:
bei root beginnend im Baum absteigen
wenn neuer Wert kleiner als aktueller
Knotenwert, dann links absteigen
wenn neuer Wert größer, dann rechts
absteigen.
Neuen Knoten anstelle des gefundenen
Nullpointers einhängen.
34
17
Projekt
Visualisierung von binären Bäumen mit
Visual C++
Sascha Rother und Christoph Holst
SS 2003
35
Nachteil
Die Form des nach diesem Algorithmus
entstehenden Baumes hängt stark ab
von den eingegliederten Daten.
Bei bereits sortierten Daten entsteht
eine lineare Liste.
36
18
Ideal
Ideal wäre es, wenn der binäre
Suchbaum immer die minimale Höhe
hat, da dann die Suchzeit minimiert
wird.
(Mehr dazu später.)
37
Durchlaufen von Binärbäumen
Um z.B. alle Werte eines Binärbaumes
auszugeben, muß dieser durchlaufen
werden.
Das Durchlaufen nennt man auch
“traversieren”.
38
19
Durchlaufen von Binärbäumen
Verschiedene Möglichkeiten:
WLR – Wurzel-Links-Rechts
WRL – Wurzel-Rechts-Links
LWR – Links-Wurzel-Rechts
LRW – Links-Rechts-Wurzel
RWL – Rechts-Wurzel-Links
RLW – Rechts-Links-Wurzel
1.
2.
3.
4.
5.
6.
39
Bedeutung
WLR – Wurzel-Links-Rechts
Gebe den Wert der Wurzel aus.
Laufe in den linken Teilbaum.
Laufe in den rechten Teilbaum.
40
20
Preorder, Inorder, Postorder
Das WLR-Verfahren nennt man auch
“Preorder”.
Das LWR-Verfahren nennt man auch
“Inorder”.
Das LRW-Verfahren nennt man auch
“Postorder”.
41
Beispiel
20
14
17
8
3
33
11
26
39
30
Wie sieht der WLR-Durchlauf aus?
(Preorder)
42
21
Beispiel
20
14
17
8
3
33
26
39
30
11
WLR (Preorder):
20, 14, 8, 3, 11, 17, 33, 26, 30, 39
43
Beispiel
20
14
17
8
3
33
11
26
39
30
Wie sieht der LWR-Durchlauf aus?
(Inorder)
44
22
Beispiel
20
14
17
8
3
33
26
39
30
11
LWR (Inorder):
3, 8, 11, 14, 17, 20, 26, 30, 33, 39
45
Beispiel
20
14
17
8
3
33
11
26
39
30
Wie sieht der LRW-Durchlauf aus?
(Postorder)
46
23
Beispiel
20
14
17
8
3
33
11
26
39
30
LRW (Postorder):
3, 11, 8, 17, 14, 30, 26, 39, 33, 20
47
Auf einen Blick
derselbe Baum,
verschiedene Durchlaufvarianten:
WLR: 20, 14, 8, 3, 11, 17, 33, 26, 30, 39
LWR: 3, 8, 11, 14, 17, 20, 26, 30, 33, 39
LRW: 3, 11, 8, 17, 14, 30, 26, 39, 33, 20
48
24
Klausuraufgabe SS 2004
Bei der aktuell in Portugal stattfindenden Fußball-EM sind außer den
Gastgebern noch folgende 15 Nationen am Start:
BG
D
ENG
HR
NL
Bulgarien
Deutschland
England
Kroatien
Niederlande
CH
DK
F
I
RUS
Schweiz
Dänemark
Frankreich
Italien
Russland
CZ
E
GR
LV
S
Tschechien
Spanien
Griechenland
Lettland
Schweden
Zeichnen Sie einen Binären Suchbaum mit optimaler (d.h. möglichst
geringer) Höhe, der als Nutzdaten die oben angegebenen Kürzel der 15
Nationen (ohne Gastgeber Portugal) besitzt.
Zeichnen Sie nur den fertigen Baum, keine einzelnen
Entwicklungsschritte.
49
25
Herunterladen