ALP I Funktionale Programmierung

Werbung
Algebraische Datentypen
ALP I
Funktionale Programmierung
Bäume (kurze Einführung)
SS 2013
Prof. Dr. Margarita Esponda
ALP I: Margarita Esponda, 6. Vorlesung, 11.07.2012
Funktionale Programmierung
Was ist ein Baum?
Eine spezielle Graph-Struktur ohne Zyklen
root
1. Er hat eine Wurzel.
O1
2. Alle Knoten ausser der Wurzel
O3
O2
O5
O4
O11
Prof. Dr. Margarita Esponda
O7
O12
O13
mit einem Vorfahren.
3. Es existiert genau ein Weg
zwischen der Wurzel und
O10
O9
O8
O6
haben genau eine Verbindung
jedem beliebigen Knoten.
O14
Eigenschaften von Bäumen
Zwischen zwei beliebigen Knoten in einem Baum existiert
genau ein Pfad, der sie verbindet.
O1
Kanten
O3
O2
Knoten
O4
O6
O5
O8
O9
O7
O10
Blätter
Ein Baum mit N Knoten hat N-1 Kanten.
ALP I: Margarita Esponda, 11. Vorlesung, 16.07.2012
Eigenschaften von Bäumen?
Nehmen wir an, wir haben einen Baum t, dann gilt:
• |t| bezeichnet die Größe des Baumes t oder die gesamte Anzahl
seiner Knoten.
• Die Tiefe (Level) eines Knotens ist sein Abstand zur Wurzel. Die
Tiefe der Wurzel ist gleich 0.
• die Höhe h(t) ist der maximale Abstand zwischen der Wurzel und
den Knoten.
• Blätter sind Knoten ohne Kinder.
• Die Pfadlänge des Baumes sei definiert als die Summe der Tiefen
aller Knoten des Baumes.
ALP I: Margarita Esponda, 11. Vorlesung, 16.07.2012
Eigenschaften von Bäumen
|t| = gesamte Anzahl seiner Knoten = 10
h(t) = 3
Tiefe(n) = 1
O1
Pfadlänge(t) = 19
n
O4
O6
O5
O8
ALP I: Margarita Esponda, 11. Vorlesung, 16.07.2012
O3
O2
O9
O7
O10
Funktionale Programmierung
Binärbäume
Bäume, in dem jeder Knoten höchstens zwei Kinder
hat.
Ein Binärbaum mit N inneren Knoten hat N+1 äußere
Knoten oder Blätter.
O5
Innere Knoten
Blätter
Prof. Dr. Margarita Esponda
O10
O9
O11
O12
O13
O14
Funktionale Programmierung
Binäre Suchbäume
Binäre Suchbäume sind sortierte Binärbäume, d.h. die
gespeicherten Elemente im Baum werden nach bestimmten
Regeln einsortiert.
Beispiel:
53
27
13
69
34
63
46
Prof. Dr. Margarita Esponda
95
Eigenschaften von Binär-Bäumen
Rekursive Definitionen:
Anzahl der inneren Knoten
t = tl + t r + 1
Höhe des Baumes
h(t) = 1 + max(h(tl ), h(t r ))
Innere Pfadlänge des Baumes
π (t) = π (tl ) + π (t r ) + t − 1
(Summe der Tiefen aller inneren Knoten)
22. ALP2-Vorlesung, M. Esponda
Eigenschaften von Binär-Bäumen
Rekursive Definitionen:
t = tl + t r + 1
h(t) = 1 + max(h(tl ), h(t r ))
O3
O2
=3
π (t) = π (tl ) + π (t r ) + t − 1
O4
= 10
O8
22. ALP2-Vorlesung, M. Esponda
O1
=3+3+1=7
O9
O12
O9
O7
O5
O13
O14
O14
Funktionale Programmierung
Balancierter Binärbaum
Level 0
O1
O2
Level 1
O3
h
O4
O8
O5
O9
O10
O6
O11
O12
O13
Wenn
Prof. Dr. Margarita Esponda
Level 2
O7
O14
O15
Level 3
h=3
1=
20
2=
21
2 . 2 = 22
2 . 2 . 2 = 23
dann
n = 24 -1
Funktionale Programmierung
Vollständige Binärbäume
Ein vollständiger binärer Baum hat 2h – 1 innere Knoten und 2h Blätter
n = 2h+1 - 1
root
⇓
Level 0
n + 1 = 2h+1
O1
O2
O3
O4
O5
O6
⇓
Level 1
h
Level 2
O7
log2(n+1) = log2(2h+1)
⇓
log2(n+1) = h+1
O8
O9
O10
O11
O12
O13
O14
O15
Level 3
⇓
h = ⎡log2(n+1)⎤ -1
Prof. Dr. Margarita Esponda
Funktionale Programmierung
Suchen (Bäume vs. Listen)
Ein vollständiger binärer Baum hat 2h – 1 innere Knoten und 2h Blätter
n = 2h+1 - 1
⇓
n+1=
h ≈ log2(n)
2h+1
⇓
log2(n+1) =
n
h
log(n)
log2(2h+1)
⇓
log2(n+1) = h+1
⇓
h = ⎡log2(n+1)⎤ -1
Prof. Dr. Margarita Esponda
n
Herunterladen