PDF_4

Werbung
Wiederholung
• Suchen in linearen Feldern
Datenstrukturen und
Algorithmen
Ohne Vorsortierung:
• Sequentielle Suche
• Speicherung nach
Zugriffswahrscheinlichkeit
• Selbstanordnende Felder
VO 708.031
Mit Vorsortierung:
• Binärsuche
• Interpolationssuche
• Quadratische Binärsuche
• FastSearch
worst-case: T(n)=Θ(n)
03.12.2009
[email protected]
1
03.12.2009
[email protected]
Wiederholung
Bäume
• Definition:
• Laufzeitverhalten der Suchverfahren für
vorsortierte Felder
Mittlerer Fall
Schlechtester Fall
O(log n)
O(log n)
Interpolationssuche
O(log log n)
O(n)
Quadratische Binärsuche
O(log log n)
O( n )
„FastSearch“
O(log log n)
O(log n)
Binärsuche
03.12.2009
[email protected]
2
Ein Baum ist eine Menge, die durch eine sog.
Nachfolgerrelation strukturiert ist.
Elemente: Knoten
• In einem Baum gilt:
1
– ∃ Knoten w ohne
Vater(w) (w=Wurzel)
1
– ∀ Knoten k≠w ∃ Knotenfolge k0, k1, …, kt
mit k0=k, kt=w und ki=Vater(ki-1) für i=1, 2, …, t.
(Ast zwischen k und w, Länge t,
t … Tiefe des Knotens k)
3
03.12.2009
[email protected]
4
Bäume
Bäume
• Ordnung eines Baumes: maximale Anzahl an Söhnen
• Die Knoten eines Baumes sind entweder Blätter (Knoten ohne
Söhne) oder innere Knoten
• Jeder Knoten ist Wurzel eines Teilbaumes
• Höhe eines Baumes: Länge des längsten Pfades von der
Wurzel bis zu einem Blatt
• Voller Baum der Ordnung k: Jeder Knoten
hat genau k Söhne oder ist ein Blatt
• Ein vollständiger Baum ist ein voller
Baum, bei dem jedes Blatt gleiche
Tiefe hat
• Anwendungen:
– Hierarchische Strukturen:
03.12.2009
03.12.2009
[email protected]
5
– Inklusionsstrukturen:
Bäume
6
Binärbäume
• Anwendungen in der Informatik:
–
–
–
–
–
[email protected]
• Jeder Knoten hat maximal zwei Nachfolger
Rekursionsbäume
Entscheidungsbäume
Suchbäume
Haldenbäume
Codebäume u.v.a.
/
Beispiel (Syntaxbäume):
Arithmetische Ausdrücke
Blätter (= Knoten ohne Söhne) enthalten
Zahlen, innere Knoten speichern
Operatoren (+, -, *, /).
*
+
2
03.12.2009
[email protected]
+
3
4
Existiert ein Sohn- oder ein Vaterknoten nicht,
wird nil zurückgeliefert
3
5
7
03.12.2009
[email protected]
8
Binärbäume
Binärbäume
• Reihenfolge der Knoten:
• Reihenfolge der Knoten:
– Symmetrische Reihenfolge (SR, inorder):
linker Teilbaum in SR, Wurzel, rechter Teilbaum in SR
– Hauptreihenfolge (HR, preorder):
Wurzel, linker Teilbaum in HR, rechter Teilbaum in HR
– Nebenreihenfolge (NR, postorder):
linker Teilbaum in NR, rechter Teilbaum in NR, Wurzel
Aufruf: SR(w)
w … Wurzel
T(n) = Θ(n)
Beispiel:
/
*
(HR)
+
/
*
+
+
3
4
3
(NR)
+
2
03.12.2009
3
4
3
Infix-Notation
2
5
Postfix-Notation
5
[email protected]
9
03.12.2009
Sortierte Binärbäume
[email protected]
10
Sortierte Binärbäume
• Binäre Suchbäume sind in symmetrischer Reihenfolge sortiert
• Suchen (binäre Suche):
b … gesuchter Wert
k … Wurzel des Teilbaums
Knoten im linken Teilbaum
≤ Wurzel ≤ Knoten im
rechten Teilbaum
Aufruf: SUCHE(b, w)
Suchzeit: O(h)
h … Höhe des Baumes (= Länge des längsten Astes)
03.12.2009
[email protected]
11
03.12.2009
[email protected]
12
Sortierte Binärbäume
Sortierte Binärbäume
• Minimum und Maximum:
• Vorgänger und Nachfolger:
Vorgänger von k: was ist der größte Wert kleiner als k?
k … Wurzel des Teilbaums
Wenn ein linker Sohn existiert,
suche das Maximum in diesem
Teilbaum, …
Laufzeit:
jeweils O(h)
… sonst suche den niedrigsten
Knoten, bei dem sich k unter
dem rechten Sohn befindet
Laufzeit: O(h)
03.12.2009
[email protected]
13
03.12.2009
Sortierte Binärbäume
[email protected]
14
Sortierte Binärbäume
• Vorgänger und Nachfolger:
• Einfügen:
Fügt den Wert w in den Binärbaum B ein
Nachfolger von k: was ist der kleinste Wert größer als k?
Simuliere eine Suche nach w, bis zu einer
freien Stelle (x=nil)
Dort fügen wir das Element ein (als Sohn
von y)
Wenn ein rechter Sohn
existiert, suche das Minimum
in diesem Teilbaum, …
… sonst suche den niedrigsten
Knoten, bei dem sich k unter
dem linken Sohn befindet
Baum B war leer
Laufzeit: O(h)
03.12.2009
Laufzeit: O(h)
[email protected]
15
03.12.2009
[email protected]
16
Sortierte Binärbäume
Sortierte Binärbäume
• Entfernen:
• Aufbau eines sortierten Binärbaumes:
Suchen ⇒ Knoten k
a) k ist Blatt: abhängen
– durch wiederholtes Einfügen (⇒ natürliche Bäume)
– Binärbaum hängt von der Reihenfolge der Elemente ab
T(n) = O(n*h)
= Θ(n2), wenn h = Θ(n)
b) k hat nur einen Sohn:
Teilbaum von diesem Sohn an VATER(k) anhängen
c)
Einige wenige
Reihenfolgen
liefern entartete
Bäume (= Listen)
k hat 2 Söhne: Finde den Nachfolger k‚
(k' hat keinen linken Sohn!)
Setze WERT(k) = WERT(k' )
Entferne k'‚ Fall a) oder b)
Laufzeit: O(h)
Fügt man randomisiert ein, ist E[h] klein
03.12.2009
[email protected]
17
03.12.2009
[email protected]
18
Sortierte Binärbäume
• Zusammenfassung:
–
–
–
–
–
–
–
Minimum
Maximum
Vorgänger
Nachfolger
Einfügen
Löschen
Suchen
Danke für Ihre Aufmerksamkeit!
Bis zum nächsten Mal.
Alle Operationen in O(h) Zeit
h … Baumhöhe
(Donnerstag, 17. Dez. 2009, 11:15, i13)
• Vorteil: dynamische Lösung des Wörterbuchproblems
• Nachteil: Zeiten bis zu Θ(n)
03.12.2009
[email protected]
19
03.12.2009
[email protected]
20
Herunterladen