Algorithmen und Datenstrukturen

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
7.2 B-Bäume / B*-Bäume als Hilfsmittel zur Indexorganisation
Claudio Moraga; Gisbert Dittrich
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
Algorithmen und Datenstrukturen
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
Gewichtsbalancierte Suchbäume
Durchlaufen eines Binärbaumes
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Baumstrukturen Richard Göbel.
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 24 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Halbzeit: Kurze Wiederholung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Sortieren vorsortierter Daten
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 19 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 9 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Anwendungen von Stapeln und Schlangen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - Balancierte Bäume, AVL-Bäume) Prof. Th. Ottmann.
Online Competitive Algorithms
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 13 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 12 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
2. Die rekursive Datenstruktur Baum 2
Effiziente Algorithmen
Diskrete Mathematik II
Effiziente Algorithmen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Graphen und Bäume.
Algorithmen und Datenstrukturen Übungsmodul 8
Kapitel 6: Suchbäume und weitere Sortierverfahren
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Eine kurze Geschichte der Graphentheorie
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
7 Bäume = „verzweigte Folgen“ Z.B. Stammbaum, patriarchalisch: Abraham
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Binärer Baum, Binärer Suchbaum I
Algorithmen und Datenstrukturen Prof. Dr. Ralf Möller Universität zu Lübeck Institut für Informationssysteme Stefan Werner (Übungen) sowie viele Tutoren.
Binärbäume.
Laufzeitverhalten beim Sortieren
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
DB2 – SS 2019 von Baum allgemein bis B*-Baum
DB2 – SS 2019 von Baum allgemein bis B*-Baum
 Präsentation transkript:

Algorithmen und Datenstrukturen Natürliche Suchbäume Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 18 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät für Angewandte Wissenschaften Albert-Ludwigs-Universität Freiburg

Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr als einen Nachfolger haben) spezielle Graphen: – Ein allgemeiner Graph G = (V,E) besteht aus Knoten V (vertices) und Kanten E  V × V (edges). – Die Kanten sind entweder gerichtet oder ungerichtet. – Knoten und Kanten können markiert sein (sie tragen weitere Informationen). Ein Baum ist ein zusammenhängender azyklischer Graph. Es gilt: # Knoten= # Kanten+1 ein allgemeines & zentrales Konzept zur hierarchischen Strukturierung von Informationen: – Entscheidungsbäume – Codebäume – Syntaxbäume Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Bäume (2) Ungerichteter Baum (kein Knoten ist als Wurzel ausgezeichnet) Gewurzelter Baum (Wurzelbaum, ein Knoten ist als Wurzel ausgezeichnet) – Von jedem Knoten k führt genau ein Pfad (Folge paarweise benachbarter Kanten) zur Wurzel – Vater (Elter, direkter Vorgänger) eines Knotens k ist der erste Nachbar auf dem Pfad von k zur Wurzel – Söhne (Kinder, direkte Nachfolger) sind die anderen Nachbarn von k – Der Rang von k ist die # Söhne des Knotens k 5 6 4 1 3 2 4 Wurzel 5 3 6 1 2 Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Bäume (3) Gewurzelter Baum: – Wurzel: einziger Knoten ohne Vater – Blätter: Knoten ohne Söhne – innere Knoten: alle Knoten, die kein Blatt sind – Ordnung eines Baumes T: maximaler Rang eines Knotens von T – Der Begriff Baum wird oft als Synonym für Wurzelbaum gebraucht Geordneter Wurzelbaum: Unter den Söhnen jedes Knotens ist eine Ordnung festgelegt, etwa über < -Relation unter Schlüsseln in Knoten Binärbaum: Geordneter Wurzelbaum der Ordnung 2, Söhne werden mit linker Sohn, rechter Sohn bezeichnet Vielwegbaum: geordneter Wurzelbaum der Ordnung > 2 4 3 < 5 < 6 1 < 2 Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Bäume (4) Exaktere Definition für die Menge Md der geordneten Wurzel-Bäume der Ordnung d (d ≥ 1): Ein einzelner Knoten ist in Md Sind t1, . . .,td in Md und ist w ein Knoten, dann ist w mit den Wurzeln von t1, . . .,td als Nachfolgern (v.l.n.r.) ein Baum t. Die ti sind Teil-Bäume von t. – Nach dieser Definition muss jeder Knoten Rang d haben. – Allgemeiner darf der Rang auch kleiner sein. – Knoten von Binär-Bäumen haben entweder 0 oder 2 Söhne. – Man könnte auch Knoten mit genau 1 Sohn zulassen, indem in obiger Definition auch leere Teil-Bäume erlaubt werden. Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Rekursive Definition ist ein Baum der Ordnung d, mit Höhe 0. Sind t1,…,td beliebige, disjunkte Bäume der Ordnung d, so erhält man einen (weiteren) Baum der Ordnung d, indem man die Wurzeln von t1,…,td zu Nachfolgern einer neu geschaffenen Wurzel w macht. Die Höhe h des neuen Baums ist dann max {h(t1),…,h(td)}+1. Festlegung: d = 2 Binärbäume, d > 2 Vielwegbäume. w .................. t1 t2 td Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Beispiele Baum kein Baum kein Baum (aber zwei Bäume) Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Strukturelle Eigenschaften von Bäumen Tiefe eines Knotens k: # Kanten von der Wurzel des Baums bis k (Abstand von k zur Wurzel) Höhe h(t) eines Baumes t: Maximale Tiefe eines Blattes von t. Alternative (rekursive) Definition: – h(Blatt) = 0 – h(t) = 1 + max{ti |Wurzel von ti ist Sohn von Wurzel von t} (ti ist Teil-Baum von t) Niveau i: alle Knoten in Tiefe i Vollständiger Baum: Baum, bei dem jedes nichtleere Niveau volle Knotenanzahl hat.  alle Blätter haben die gleiche Tiefe. Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Anwendung für Bäume Verwendung von Bäumen für die Lösung des WBP: Knoten: Speicher für Datensätze Baum: Speicher für Datenmengen Besonderer Vorteil (gegenüber Hash-Tabellen): Durchlauf der gesamten Menge von Sätzen (etwa in sortierter Reihenfolge) leicht möglich. Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche, binäre Suchbäume (1) Ziel: Speichern, Wiederfinden von Datensätzen (allgemeiner: WBP) Zwei alternative Speicherungsformen: Suchbäume: Schlüssel werden in inneren Knoten gespeichert Blätter sind leer (oft=null) sie repräsentieren Intervalle zwischen den Schlüsseln Blattsuchbäume: Schlüssel werden in Blättern gespeichert innere Knoten enthalten Wegweiser zum Auffinden Suchbaum-Bedingung: für jeden inneren Knoten k gilt: alle Schlüssel links unterhalb von k (im linken Teil-Baum tl) sind < als der Schlüssel in k und alle Schlüssel rechts unterhalb von k (im rechtenTeil-Baum tr) sind > als der Schlüssel in k k tl tr Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (2) Blätter in Suchbaum repräsentieren Intervalle zwischen den Schlüsseln der inneren Knoten Wie sucht man in einem Suchbaum nach Schlüssel s? (Blatt  null) k = wurzel; while (k != null) { if (s == k.key) return true; if (s < k.key) k = k.left; else k = k.right } return false; 9 3 12 4 (- ,3) (9,12) (12, ) (3,4) (4,9) Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Beispiel (ohne Stopper) Suche nach Schlüssel s endet beim Suchbaum in Knoten k mit k.key == s oder in Blatt, dessen Intervall s enthält Wurzel 27 39 3 1 15 14 Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (3) Blattsuchbaum: Schlüssel werden in Blättern gespeichert Hinweise (Wegweiser) werden in inneren Knoten gespeichert, so dass sl ≤ sk ≤ sr (sl : Schlüssel in linkem TB, sk : Wegweiser in k, sr Schlüssel in rechtem TB) = sollte nicht doppelt vorkommen Wahl für s: entweder maximaler Schlüssel von tl (üblich) oder minimaler Schlüssel von tr. Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Beispiel: Blattsuchbaum Blätter enthalten die Schlüssel, innere Knoten Wegweiser. Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (4) Wie sucht man in einem Blattsuchbaum nach Schlüssel s? (Blatt = Knoten mit 2 null-Ref.) k = wurzel; if (k == null) return false; while (k.left != null) { // damit auch k.right != null if (s <= k.key) k = k.left; else k = k.right; } // jetzt in Blatt return s==k.key; Im Folgenden werden Suchbäume (nicht Blatt-) betrachtet. Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (5) class SearchNode { int content; SearchNode left; SearchNode right; SearchNode (int c){ // Konstruktor fuer einen Knoten content = c; // ohne Nachfolger left = right = null; } } //class SearchNode class SearchTree { SearchNode root; SearchTree () { // Konstruktor fuer leeren Baum root = null; } // ... Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (6) /* Suche nach c im Baum */ boolean search (int c) { return search (root, c); } boolean search (SearchNode n, int c){ while (n != null) { if (c == n.content) return true; if (c < n.content) n = n.left; else n = n.right; } return false; } Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (7) Alternative Baumstruktur: Statt Blatt  null verwende: Blatt  Referenz auf besonderen Stopper-Knoten b Bei Suche stecke Such-Schlüssel s in b und spare Vergleiche in inneren Knoten. Verwendung eines Stoppers für die Suche! Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Beispiel (mit Stopper) 27 Wurzel 39 3 1 15 14 x Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (7) Einfügen eines Knotens mit Schlüssel s in Suchbaum t: Suche nach s endet in Knoten mit s: nicht einfügen, da sonst doppelte Schlüssel Suche endet in Blatt b: Mache b zu innerem Knoten mit s als Schlüssel und zwei neuen Blättern.  Baum bleibt Suchbaum! Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (8) 9 Einfügen 5 9 3 12 3 12 4 4 5 Baum-Struktur hängt von Einfügereihenfolge in anfangs leeren Baum ab Höhe kann linear zunehmen, sie kann aber auch in O(log n) sein, genau log2 (n+1). Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (9) int height (){ return height (root); } int height (SearchNode n){ if (n == null) return 0; else return 1 + Math.max (height (n.left), height (n.right)); } /* Fuege c im Baum ein; gib true zurueck, falls erfolgreich und false, falls schon vorhanden */ boolean insert (int c) { // Fuege c ein; if (root == null){ root = new SearchNode (c); return true; } else return insert (root, c); } Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (10) boolean insert (SearchNode n, int c){ while (true){ if (c == n.content) return false; if (c < n.content){ if (n.left == null) { n.left = new SearchNode (c); return true; } else n = n.left; } else { // c > n.content if (n.right == null) { n.right = new SearchNode (c); return true; } else n = n.right; } } } Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Sonderfälle Die Struktur des resultierenden Baums hängt stark von der Reihenfolge ab, in der die Schlüssel eingefügt werden. Die minimale Höhe ist log2n + 1 und die maximale Höhe ist n. Resultierende Suchbäume für die Reihenfolgen 15, 39, 3, 27, 1, 14 und 1, 3, 14, 15, 27, 39: 1 3 15 14 3 39 15 1 14 27 27 39 Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (11) Ein Natürlicher Baum entsteht durch iteriertes Einfügen in den anfangs leeren Baum. Welche Bäume sind die häufigeren/typischeren, die ausgeglichenen, die degenerierten? Wie teuer ist das Einfügen? Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (11) Entfernen eines Knotens mit Schlüssel s aus einem Baum (Beibehaltung der Suchbaum Eigenschaft) Suche nach s, falls nicht da: fertig; sonst endet die Suche mit k.key == s und k hat keinen, einen oder zwei Söhne: (a) kein Sohn: fertig, Vater bekommt Zeiger auf null (b) nur ein Sohn ist da : lasse Vater v von k darauf statt auf k zeigen (c) zwei Söhne: suche kleinsten Wert in rechtem Teilbaum, d.h. mache einen Schritt nach rechts und beliebig viele nach links bis zu p (symmetrischer Nachfolger von k); kopiere p.key nach k, lösche p (max. einen Sohn, also nach a, b behandeln) Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Symmetrische Nachfolger Definition: Ein Knoten q heißt der symmetrische Nachfolger eines Knotens p, wenn q den kleinsten Schlüssel enthält, der größer oder gleich dem Schlüssel von p ist. Beobachtungen: Der symmetrische Nachfolger q von p ist der am weitesten links stehende Knoten im rechten Teilbaum von p. Der symmetrische Nachfolger hat höchstens einen Nachfolger, welcher der rechte ist. Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Auffinden des symmetrischen Nachfolgers Beobachtung: Wenn p einen rechten Nachfolger hat, gibt es immer einen symmetrischen Nachfolger. Zunächst gehen wir zum rechten Nachfolger von p. Von dort aus gehen wir solange jeweils zum linken Nachfolger, bis wir einen Knoten ohne linken Nachfolger finden. p q Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Idee der Löschoperation Wir löschen p, indem wir den Inhalt von p durch den seines symmetrischen Nachfolgers q ersetzen. Danach löschen wir q. Löschen von q ist einfach, weil q höchstens einen Nachfolger hat. p x p x q y q y Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Beispiele k hat keinen, einen oder zwei innere Söhne: a) b) c) d) v v tl tl c) d) v v v k s k s tr tr tl p tr Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (12) boolean delete (int c){ return delete (null, root, c); } // loesche c im Baum mit Wurzel n, deren Vorgaenger vn ist boolean delete (SearchNode vn, SearchNode n, int c){ if (n == null) return false; if (c < n.content) return delete (n, n.left, c); if (c > n.content) return delete (n, n.right, c); // jetzt gilt: c == n.content if (n.left == null) { point (vn, n, n.right); return true; } if (n.right == null) { point (vn, n, n.left); return true; } // ... Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (13) // jetzt ist n.left != null und n.right != null SearchNode q = vSymNach (n); if (n == q) { // rechter Sohn von q ist vSymNach (n) n.content = q.right.content; q.right = q.right.right; return true; } else { // linker Sohn von q ist vSymNach (n) n.content = q.left.content; q.left = q.left.right; return true; } } // boolean delete (SearchNode vn, SearchNode n, int c) Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume (14) // vn soll auf m statt auf n zeigen; ist vn == null, zeigt root auf void point (SearchNode vn, SearchNode n, SearchNode m){ if (vn == null) root = m; else if (vn.left == n) vn.left = m; else vn.right = m; } // liefert Vater des symmetrischen Nachfolgers: SearchNode vSymNach (SearchNode n) if (n.right.left != null) { n = n.right; while (n.left.left != null) n = n.left; } return n; } Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Binäre Suchbäume Binärbäume zur Speicherung von Mengen von Schlüsseln (in den inneren Knoten der Bäume), so dass die Operationen Suchen (find) Einfügen (insert) Entfernen (remove, delete) unterstützt werden. Suchbaumeigenschaft: Die Schlüssel im linken Teilbaum eines Knotens p sind alle kleiner als der Schlüssel von p, und dieser ist wiederum kleiner als sämtliche Schlüssel im rechten Teilbaum von p. Implementierung: Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume Einfügen 5 9 9 3 12 3 12 4 4 5 Baum-Struktur hängt von Einfügereihenfolge in anfangs leeren Baum ab Höhe kann linear zunehmen, sie kann aber auch in O(log n) sein, genau log2(n+1) Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Durchlaufreihenfolgen in Bäumen Durchlaufreihenfolgen zum Besuchen der Knoten des Baums zur Ausgabe, zur Berechnung von Summe, Durchschnitt, Anzahl der Schlüssel . . . zur Änderung der Struktur Wichtigste Durchlaufreihenfolgen: Hauptreihenfolge = Preorder = WLR besuche erst Wurzel, dann rekursiv linken und rechten Teil-Baum falls vorhanden Nebenreihenfolge = Postorder = LRW Symmetrische Reihenfolge = Inorder = LWR die Spiegelbild-Varianten von 1-3 Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Hauptreihenfolge (Preorder) Ausgehend von der Wurzel p eines Baums ist die Hauptreihenfolge wie folgt rekursiv definiert: Durchlaufen aller Knoten eines Binärbaumes mit Wurzel p in Hauptreihenfolge: Besuche p, durchlaufe den linken Teilbaum von p in Hauptreihenfolge, durchlaufe den rechten Teilbaum von p in Hauptreihenfolge. 17 11 22 7 14 12 Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Hauptreihenfolge Programm // Hauptreihenfolge; WLR void preOrder (){ preOrder (root); System.out.println (); } void preOrder (SearchNode n){ if (n == null) return; System.out.print (n.content+" "); preOrder (n.left); preOrder (n.right); } // Nebenreihenfolge; LRW void postOrder (){ postOrder (root); System.out.println (); } // ... Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Symmetrische Reihenfolge (Inorder) Die Durchlaufreihenfolge ist: erst linker Teilbaum, dann Wurzel, dann rechter Teilbaum: // Symmetrische; LWR void inOrder (){ inOrder (root); System.out.println (); } void inOrder (SearchNode n){ if (n == null) return; inOrder (n.left); System.out.print (n.content+" "); inOrder (n.right); } // Nebenreihenfolge; LRW // ... Die anderen Durchlaufreihenfolgen werden analog implementiert. Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Beispiel Preorder: 17, 11, 7, 14, 12, 22 Postorder: 7, 12, 14, 11, 22, 17 Inorder: 7, 11, 12, 14, 17, 22 17 11 22 7 14 12 Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Binäre Suchbäume Binärbäume zur Speicherung von Mengen von Schlüsseln (in den inneren Knoten der Bäume), so dass die Operationen Suchen (find) Einfügen (insert) Entfernen (remove, delete) unterstützt werden. Suchbaumeigenschaft: Die Schlüssel im linken Teilbaum eines Knotens p sind alle kleiner als der Schlüssel von p, und dieser ist wiederum kleiner als sämtliche Schlüssel im rechten Teilbaum von p. Implementierung: Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Natürliche Bäume 9 Einfügen 5 9 3 12 3 12 4 4 5 Baum-Struktur hängt von Einfügereihenfolge in anfangs leeren Baum ab Höhe kann linear zunehmen, sie kann aber auch in O(log n) sein, genau log2(n+1) Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Beispiel für Suchen, Einfügen, Entfernen 17 11 22 7 14 12 Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Sortieren mit natürlichen Suchbäumen Idee: Bau für die Eingabefolge einen natürlichen Suchbaum auf und gib die Schlüssel in symmetrischer Reihenfolge (Inorder) aus. Bemerkung: Abhängig von der Eingabereihenfolge kann der Suchbaum degenerieren. Komplexität: Abhängig von der internen Pfadlänge Schlechtester Fall: Sortierte Eingabe:  (n2) Schritte. Bester Fall: Es entsteht ein vollständiger Suchbaum mit minimal möglicher Höhe von etwa log n. n mal Einfügen und Ausgeben ist daher in Zeit O(n log n) möglich. Mittlerer Fall: ? Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Analyse natürlicher Suchbäume Zwei alternative Vorgehensweisen zur Bestimmung der internen Pfadlänge: 1. Random-Tree-Analyse, d.h. Mittelwert über alle möglichen Permutationen der (in den anfangs leeren Baum) einzufügenden Schlüssel. 2. Gestaltanalyse, d.h. Mittelwert über alle strukturell möglichen Bäume mit n Schlüsseln. Unterschied des Erwartungswertes für die interne Pfadlänge: 1.  1.386 n log2n – 0.846 n + O(log n) 2.  nn + O(n) Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Ursache für den Unterschied 3 2 1 3 1 2 1 3 2 1 2 3 3 2 1 3,2,1 3,1,2 1,3,2 1,2,3 2,1,3 und 2,3,1  Bei der Random-Tree-Analyse werden ausgeglichene Bäume häufiger gezählt. Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

å Interne Pfadlänge ( ) I ( t ) = Tiefe ( p ) + 1 Interne Pfadlänge: Maß zu Beurteilung der Güte eines Suchbaumes. Rekursive Definition: 1. Ist t der leere Baum, so ist I(t) = 0. 2. Für einen Baum mit Wurzel t, linkem Teilbaum tl und rechtem Teilbaum tr gilt: I(t) := I(tl) + I(tr)+ Zahl der Knoten von t. Offensichtlich gilt: å ( ) I ( t ) = Tiefe ( p ) + 1 p P innerer Knoten von t Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Durchschnittliche Suchpfadlänge Für einen Baum t ist die durchschnittliche Suchpfadlänge definiert durch: D(t) = I(t)/n, n = Anzahl innerer Knoten in t Frage: Wie groß ist D(t) im besten schlechtesten mittleren Fall für einen Baum t mit n inneren Knoten? Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Interne Pfadlänge: Bester Fall Es entsteht ein vollständiger Binärbaum Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Interne Pfadlänge: Schlechtester Fall Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Zufällige Bäume Seien oBdA die Schlüssel {1,…,n} einzufügen. Sei ferner s1,…, sn eine zufällige Permutation dieser Schlüssel. Somit ist die Wahrscheinlichkeit P(s1 = k), dass s1 gerade den Wert k hat, genau 1/n. Wenn k der erste Schlüssel ist, wird k zur Wurzel. Dann enthalten der linke Teilbaum k – 1 Elemente (nämlich die Schlüssel 1,…,k - 1) und der rechte Teilbaum n – k Elemente (d.h. die Schlüssel k + 1,…,n). Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Erwartete interne Pfadlänge EI(n) : Erwartungswert für die interne Pfadlänge eines zufällig erzeugten binären Suchbaums mit n Knoten Offensichtlich gilt: Behauptung: EI(n)  1.386n log2n - 0.846n + O(logn). EI ( ) = EI ( 1 ) = 1 1 n å EI ( n ) = ( EI ( k - 1 ) + EI ( n - k ) + n ) n k = 1 1 n n å å = n + ( EI ( k - 1 ) + EI ( n - k )) n k = 1 k = 1 Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

å å å Beweis (1) 2 EI ( n + 1 ) = ( n + 1 ) + * EI ( k ) n + 1 ( n + 1 und daher Aus den beiden letzten Gleichungen folgt 2 n å EI ( n + 1 ) = ( n + 1 ) + * EI ( k ) n + 1 k = å n ( n + 1 ) * EI ( n + 1 ) = ( n + 1 ) 2 + 2 * EI ( k ) k = n - å 1 n * EI = n 2 + 2 * EI ( k ) k = ( n + 1 ) EI ( n + 1 ) - n * EI ( n ) = 2 n + 1 + 2 * EI ( n ) ( n + 1 ) EI ( n + 1 ) = ( n + 2 ) EI ( n ) + 2 n + 1 2 n + 1 n + 2 EI ( n + 1 ) = + EI ( n ). n + 1 n + 1 Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Beweis (2) EI ( n ) = 2 ( n + 1 ) H - 3 n 1 1 H = 1 + + ... + 2 n 1 1 Durch vollständige Induktion über n kann man zeigen, dass für alle n ≥ 1 gilt: ist die n -te harmonische Zahl, die wie folgt Abgeschätzt werden kann: Dabei ist die so genannte Eulersche Konstante. EI ( n ) = 2 ( n + 1 ) H - 3 n n 1 1 H = 1 + + ... + n 2 n 1 1 H = ln n + g + + O ( ) n 2 n n 2 g = . 5772 ... Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Beweis (3) 1 EI ( n ) = 2 n ln n - ( 3 - 2 g ) * n + 2 ln n + 1 + 2 g Damit ist Und daher 1 EI ( n ) = 2 n ln n - ( 3 - 2 g ) * n + 2 ln n + 1 + 2 g + O ( ) n EI ( n ) 2 ln n = 2 ln n - ( 3 - 2 g ) + + ... n n 2 2 ln n = * log n - ( 3 - 2 g ) + + ... log e 2 n 2 2 log 2 2 ln n = 10 * log n - ( 3 - 2 g ) + + ... log e 2 n 10 2 ln n » 1 . 386 log n - ( 3 - 2 g ) + + ... 2 n Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Beobachtungen Suchen, Einfügen und Entfernen eines Schlüssels ist bei einem zufällig erzeugten binären Suchbaum mit n Schlüsseln im Mittel in O(log2 n) Schritten möglich. Im schlechtesten Fall kann der Aufwand jedoch Ω(n) betragen. Man kann nachweisen, dass der mittlere Abstand eines Knotens von der Wurzel in einem zufällig erzeugten Baum nur etwa 40% über dem Optimum liegt. Die Einschränkung auf den symmetrischen Nachfolger verschlechtert jedoch das Verhalten. Führt man in einem zufällig erzeugten Suchbaum mit n Schlüsseln n2 Update-Operationen durch, so ist der Erwartungswert für die durchschnittliche Suchpfadlänge lediglich Θ(n). Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Typischer Binärbaum für eine zufällige Schlüsselsequenz Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Resultierender Binärbaum nach n2 Updates Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Strukturelle Analyse von Binärbäumen Frage: Wie groß ist die durchschnittliche Suchpfadlänge eines Binärbaumes mit N inneren Knoten, wenn man bei der Durchschnittsbildung jeden strukturell möglichen Binärbaum mit N inneren Knoten genau einmal zählt? Antwort: Sei IN = gesamte interne Pfadlänge aller strukturell verschiedenen Binärbäume mit N inneren Knoten BN = Anzahl aller strukturell verschiedenen Bäume mit N inneren Knoten Dann ist IN/BN = Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Anzahl strukturell verschiedener Binärbäume Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Gesamte interne Pfadlänge aller Bäume mit N Knoten Für jeden Baum t mit linkem Teilbaum tl und rechtem Teilbaum tr gilt: Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann

Zusammenfassung Die durchschnittliche Suchpfadlänge in einem Baum mit N inneren Knoten (gemittelt über alle strukturell möglichen Bäume mit N inneren Knoten) ist: 1/N IN/BN Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann