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)
15.12.2011
[email protected]
1
15.12.2011
Wiederholung
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)
15.12.2011
[email protected]
2
Wörterbuchproblem
• Laufzeitverhalten der Suchverfahren für vorsortierte Felder
Binärsuche
[email protected]
• Wir suchen eine Datenstruktur, die das Wörterbuchproblem
effizient löst
• Wörterbuchoperationen:
– Einfügen
– Suchen
– Entfernen
• Lineares Feld: Einfügen O(1) Zeit, Suchen und Entfernen O(n)
Zeit
• Auswege: Gestreute Speicherung (Hashtabellen), Suchbäume
3
24.11.2011
[email protected]
4
Bäume
Bäume
• Ordnung eines Knotens: Anzahl seiner Söhne
• Ordnung eines Baumes: maximale Ordnung aller Knoten
• Die Knoten eines Baumes sind entweder Blätter (Knoten ohne
Söhne, Ordnung 0) oder innere Knoten (Ordnung >0)
• 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
• Definition:
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)
15.12.2011
[email protected]
5
15.12.2011
[email protected]
Bäume
Bäume
• Anwendungen:
– Hierarchische Strukturen:
• Anwendungen in der Informatik:
–
–
–
–
–
– Inklusionsstrukturen:
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
15.12.2011
[email protected]
6
7
15.12.2011
[email protected]
+
3
4
3
5
8
Binärbäume
Binärbäume
• Jeder Knoten hat maximal zwei Nachfolger
• Reihenfolge der Knoten:
– Symmetrische Reihenfolge (SR, inorder):
linker Teilbaum in SR, Wurzel, rechter Teilbaum in SR
Aufruf: SR(w)
w … Wurzel
T(n) = Θ(n)
Beispiel:
/
*
Existiert ein Sohn- oder ein Vaterknoten nicht,
wird nil zurückgeliefert
+
2
15.12.2011
[email protected]
9
15.12.2011
Binärbäume
+
3
4
3
Infix-Notation
5
[email protected]
10
Sortierte Binärbäume
• Binäre Suchbäume sind in symmetrischer Reihenfolge sortiert
• Reihenfolge der Knoten:
– Hauptreihenfolge (HR, preorder):
Wurzel, linker Teilbaum in HR, rechter Teilbaum in HR
– Nebenreihenfolge (NR, postorder):
linker Teilbaum in NR, rechter Teilbaum in NR, Wurzel
Knoten im linken Teilbaum
≤ Wurzel ≤ Knoten im
rechten Teilbaum
/
*
+
(HR)
+
3
4
3
(NR)
2
15.12.2011
5
Postfix-Notation
[email protected]
11
15.12.2011
[email protected]
12
Sortierte Binärbäume
Sortierte Binärbäume
• Suchen (binäre Suche):
• Minimum und Maximum:
b … gesuchter Wert
k … Wurzel des Teilbaums
k … Wurzel des Teilbaums
Aufruf: SUCHE(b, w)
Laufzeit:
jeweils O(h)
Suchzeit: O(h)
h … Höhe des Baumes (= Länge des längsten Astes)
15.12.2011
[email protected]
13
15.12.2011
Sortierte Binärbäume
14
Sortierte Binärbäume
• Vorgänger und Nachfolger:
• Vorgänger und Nachfolger:
Vorgänger von k: was ist der größte Wert kleiner als k?
Nachfolger von k: was ist der kleinste Wert größer als k?
Wenn ein linker Sohn existiert,
suche das Maximum in diesem
Teilbaum, …
Wenn ein rechter Sohn
existiert, suche das Minimum
in diesem Teilbaum, …
… sonst suche den niedrigsten
Knoten, bei dem sich k unter
dem rechten Sohn befindet
… sonst suche den niedrigsten
Knoten, bei dem sich k unter
dem linken Sohn befindet
Laufzeit: O(h)
15.12.2011
[email protected]
Laufzeit: O(h)
[email protected]
15
15.12.2011
[email protected]
16
Sortierte Binärbäume
Sortierte Binärbäume
• Einfügen:
• Entfernen:
Suchen ⇒ Knoten k
a) k ist Blatt: abhängen
Fügt den Wert w in den Binärbaum B ein
Simuliere eine Suche nach w, bis zu einer
freien Stelle (x=nil)
Dort fügen wir das Element ein (als Sohn
von y)
b) k hat nur einen Sohn:
Teilbaum von diesem Sohn an VATER(k) anhängen
c)
Baum B war leer
Laufzeit: O(h)
15.12.2011
[email protected]
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)
17
15.12.2011
[email protected]
18
Sortierte Binärbäume
Sortierte Binärbäume
• Aufbau eines sortierten Binärbaumes:
• Zusammenfassung:
– 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)
Einige wenige
Reihenfolgen
liefern entartete
Bäume (= Listen)
–
–
–
–
–
–
–
Minimum
Maximum
Vorgänger
Nachfolger
Einfügen
Löschen
Suchen
Alle Operationen in O(h) Zeit
h … Baumhöhe
• Vorteil: dynamische Lösung des Wörterbuchproblems
• Nachteil: Zeiten bis zu Θ(n)
Fügt man randomisiert ein, ist E[h] klein
15.12.2011
[email protected]
19
15.12.2011
[email protected]
20
Danke für Ihre Aufmerksamkeit!
Bis zum nächsten Mal.
(Donnerstag, 12. Jan. 2012, 11:15, i13)
15.12.2011
[email protected]
21
Herunterladen