teilbaum datenstrukturen

Werbung
Datenstrukturen und Algorithmen VO 708.031 12.12.2013 [email protected] 1 Struktur der Vorlesung unterteilt in 5 Kapitel 1.  Einführung u. Grundlagen 2.  Algorithmische Grundprinzipien 3.  SorGerverfahren 4.  Suchen in linearen Feldern 5.  Suchen in Bäumen 12.12.2013 [email protected] 2 In der letzten Vorlesung 1. StaGsche, kleine Menge, selten SuchoperaGon notwendig: •  Lösung: Feld als Datenstruktur und sequenGelles Suchen: O(n) 2. StaGsche, kleine Menge, häufige Zugriffe/SuchoperaGonen •  Lösung: VorsorGertes Feld in O(n log n) erstellen und binäre Suche mit O(log n) verwenden. siehe auch AuD VO, WS10/11, C. Eckert, TU München 05.12.2013 [email protected] 3 In dieser Vorlesung 3. Dynamisch, große Menge von Elementen, z.B. Personaldaten •  Lösung: Baum als dynamische Datenstruktur (einfügen, löschen), organisiert als binärer Suchbaum. Suchen in O(h), wobei h die Baumhöhe ist. 4. Dynamisch, große Menge, viele, effiziente Zugriffe notwendig z.B. große Produktdatenbanken, Suchmaschinen, … •  Lösung: Binärer Suchbaum, der eine möglichst geringe Höhe h garanGert. Sollte möglichst balanziert sein, z.B. 2‐4 Baum, Rot‐Schwarz Baum usw. siehe auch AuD VO, WS10/11, C. Eckert, TU München 05.12.2013 [email protected] 4 Bäume •  Defini<on: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrela<on strukturiert ist. Elemente: Knoten •  In einem Baum gilt: 1
–  ∃ Knoten w ohne Vater(w)  (w=Wurzel) 1
–  ∀ Knoten k≠w Knotenfolge k
∃
0, 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) 12.12.2013 [email protected] 5 Bäume •  Ordnung eines Knotens: Anzahl seiner Söhne •  Ordnung eines Baumes: maximale Ordnung aller Knoten •  Die Knoten eines Baumes sind entweder BläFer (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 Blaj •  Voller Baum der Ordnung k: Jeder Knoten hat genau k Söhne oder ist ein Blaj •  Ein vollständiger Baum ist ein voller Baum, bei dem jedes Blaj gleiche Tiefe hat 12.12.2013 [email protected] 6 Bäume •  Anwendungen: –  Hierarchische Strukturen: –  Inklusionsstrukturen: 12.12.2013 [email protected] 7 Bäume •  Anwendungen in der Informa<k: – 
– 
– 
– 
– 
Rekursionsbäume Entscheidungsbäume Suchbäume Haldenbäume Codebäume u.v.a. /
Beispiel (Syntaxbäume):
ArithmeGsche Ausdrücke Blä'er (= Knoten ohne Söhne) enthalten Zahlen, innere Knoten speichern Operatoren (+, ‐, *, /). 12.12.2013 *
+
2
[email protected] +
3
4
3
5
8 Binärbäume •  Jeder Knoten hat maximal zwei Nachfolger ExisGert ein Sohn‐ oder ein Vaterknoten nicht, wird nil zurückgeliefert 12.12.2013 [email protected] 9 Binärbäume •  Auslesereihenfolge der Knoten: –  Symmetrische Reihenfolge (SR, inorder): linker Teilbaum in SR, Wurzel, rechter Teilbaum in SR Aufruf: SR(w) w … Wurzel T(n) = Θ(n) Beispiel: /
*
+
2
12.12.2013 +
3
4
3
Infix‐Nota9on 5
[email protected] 10 Binärbäume •  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 /
*
+
(HR) +
3
4
3
(NR) 2
12.12.2013 5
Pos<ix‐Nota9on [email protected] 11 SorGerte Binärbäume •  Binäre Suchbäume sind in symmetrischer Reihenfolge sorGert Knoten im linken Teilbaum ≤ Wurzel ≤ Knoten im rechten Teilbaum 12.12.2013 [email protected] 12 SorGerte Binärbäume •  Suchen (binäre Suche): b … gesuchter Wert k … Wurzel des Teilbaums Aufruf: SUCHE(b, w) Suchzeit: O(h) h … Höhe des Baumes (= Länge des längsten Astes) 12.12.2013 [email protected] 13 SorGerte Binärbäume •  Minimum und Maximum: k … Wurzel des Teilbaums Laufzeit: jeweils O(h) 12.12.2013 [email protected] 14 SorGerte Binärbäume •  Einfügen: 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) Baum B war leer Laufzeit: O(h) 12.12.2013 [email protected] 15 SorGerte Binärbäume •  AuVau eines sorGerten Binärbaumes: –  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) Fügt man randomisiert ein, ist E[h] klein 12.12.2013 [email protected] 16 SorGerte Binärbäume •  EnWernen: Suchen ⇒ Knoten k a)  k ist Blaj: abhängen b)  k hat nur einen Sohn: Teilbaum von diesem Sohn an VATER(k) anhängen c)  k hat 2 Söhne: Finde den Nachfolger k‚ (k' hat keinen linken Sohn!) Setze WERT(k) = WERT(k' ) Enverne k'‚ Fall a) oder b) Laufzeit: O(h) 12.12.2013 [email protected] 17 SorGerte Binärbäume •  Vorgänger und Nachfolger: Nachfolger von k: was ist der kleinste Wert größer als k? Wenn ein rechter Sohn exisGert, suche das Minimum in diesem Teilbaum, … … sonst suche den niedrigsten Knoten, bei dem sich k unter dem linken Sohn befindet Laufzeit: O(h) 12.12.2013 [email protected] 18 SorGerte Binärbäume •  Vorgänger und Nachfolger: Vorgänger von k: was ist der größte Wert kleiner als k? Wenn ein linker Sohn exisGert, suche das Maximum in diesem Teilbaum, … … sonst suche den niedrigsten Knoten, bei dem sich k unter dem rechten Sohn befindet Laufzeit: O(h) 12.12.2013 [email protected] 19 SorGerte Binärbäume •  Zusammenfassung: – 
– 
– 
– 
– 
– 
– 
Minimum Maximum Vorgänger Nachfolger Einfügen Löschen Suchen Alle OperaGonen in O(h) Zeit h … Baumhöhe •  Vorteil: dynamische Lösung des Wörterbuchproblems •  Nachteil: Zeiten bis zu Θ(n) 12.12.2013 [email protected] 20 Danke für Ihre Aufmerksamkeit! Bis zum nächsten Mal. (Donnerstag, 19. Dez. 2013, 11:15, i13) 12.12.2013 [email protected] 21 
Herunterladen