Kap. 4.2: Binäre Suchbäume



Ähnliche Dokumente
Motivation Binäre Suchbäume

Algorithmen und Datenstrukturen Suchbaum

13. Binäre Suchbäume

Datenstrukturen & Algorithmen

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Binäre Bäume Darstellung und Traversierung

Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen

Kapiteltests zum Leitprogramm Binäre Suchbäume

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Tutorium Algorithmen & Datenstrukturen

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Algorithmen und Datenstrukturen Balancierte Suchbäume

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

WS 2009/10. Diskrete Strukturen

Vorkurs Informatik WiSe 15/16

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

Kap. 4.2 Binäre Suchbäume ff Kap. 4.3: AVL-Bäume

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

368 4 Algorithmen und Datenstrukturen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Kapitel 5: Dynamisches Programmieren Gliederung

Suchen und Sortieren

Automatisches Zeichnen von Graphen

1 topologisches Sortieren

Programmiertechnik II

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Nachtrag zu binären Suchbäumen

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Kapitel 2: Zeichnen von Bäumen Beispiel: Baumzeichnung

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

Anmerkungen zur Übergangsprüfung

Sortierte Folgen 250

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen

KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN

Theoretische Informatik SS 04 Übung 1

Beispiel zu Datenstrukturen

15 Optimales Kodieren

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Konzepte der Informatik

Grundlagen der Programmierung 2. Bäume

Theoretische Grundlagen der Informatik

! " # $ " % & Nicki Wruck worldwidewruck

Die Komplexitätsklassen P und NP

Algorithmen & Datenstrukturen 1. Klausur

Primzahlen und RSA-Verschlüsselung

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Kapitalerhöhung - Verbuchung

Lehrer: Einschreibemethoden

Zeichen bei Zahlen entschlüsseln

Überblick. Lineares Suchen

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Webalizer HOWTO. Stand:

Abituraufgabe zur Stochastik, Hessen 2009, Grundkurs (TR)

Basis und Dimension. Als nächstes wollen wir die wichtigen Begriffe Erzeugendensystem und Basis eines Vektorraums definieren.

Algorithmen und Datenstrukturen 2

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Was meinen die Leute eigentlich mit: Grexit?

Algorithmen und Datenstrukturen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Professionelle Seminare im Bereich MS-Office

Animationen erstellen

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

WS 2008/09. Diskrete Strukturen

Einführung in die Programmierung

Das Leitbild vom Verein WIR

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Zeichnen von Graphen. graph drawing

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Programmiersprachen und Übersetzer

Theoretische Grundlagen der Informatik WS 09/10

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Mi, 21. Mai, ab 12:30 Uhr, in E23 (OH14) Dann ab 14:30 Uhr: Motivation: Gegeben: hier: später: Aufgabe:

Suchen und Sortieren Sortieren. Heaps

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Einführung in. Logische Schaltungen

Bauteilattribute als Sachdaten anzeigen

Step by Step Webserver unter Windows Server von Christian Bartl

Tangentengleichung. Wie lautet die Geradengleichung für die Tangente, y T =? Antwort:

Sortierverfahren für Felder (Listen)

Repetitionsaufgaben Wurzelgleichungen

Grundlagen der Theoretischen Informatik, SoSe 2008

Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung bis

9. Natürliche Suchbäume

Anwendungsbeispiele Buchhaltung

Kugel-Fächer-Modell. 1fach. 3fach. Für die Einzelkugel gibt es 3 Möglichkeiten. 6fach. 3! Möglichkeiten

Hochschule Karlsruhe Klausur EAI Prof. Dr. Christian Pape. Klausur EAI WS 05/06. Note: Bearbeitungszeit 90 Minuten Keine Hilfsmittel

ARCO Software - Anleitung zur Umstellung der MWSt

2.11 Kontextfreie Grammatiken und Parsebäume

Transkript:

Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1

Zusätzliche Lernraumbetreuung Morteza Monemizadeh: Jeden Montag von 14:00 Uhr-16:00 Uhr in OH14, R. 314, Hilfe bei Problemen der Vorlesung oder Übung (in englischer Sprache) Beachten Sie auch die bisherigen Lernraumangebote Mo-Fr (s. Web) 2

Motivation Warum soll ich heute hier bleiben? Binäre Suchbäume begegnen Ihnen ständig! Warum soll mich das interessieren? Beliebte Klausuraufgaben! 3

Binäre Suchbäume Datenstruktur zur Unterstützung der Operationen des ADT Dictionary: 4

Operationen des ADT Dictionary INSERT(K k,v v) Falls k nicht schon in D ist, dann wird ein neuer Schlüssel k mit Wert v in D eingefügt, andernfalls wird der Wert des Schlüssels k auf v geändert. DELETE(K k) Entfernt Schlüssel k mit Wert aus D (falls k in D) SEARCH(K k): V Gibt den bei Schlüssel k gespeicherten Wert zurück (falls k in D) 5

Zusätzliche Operationen der Binären Suchbäume MINIMUM (MAXIMUM) Sucht den Schlüssel mit kleinstem (größtem) Wert. PREDECESSOR (SUCCESSOR) Ausgehend von einem gegebenen Element suchen wir das Element mit dem nächstkleineren (nächstgrößeren) Schlüssel. 6

Überblick Bezeichnungen Traversierungen für binäre Bäume Implementierungen Analyse 7

Definitionen Gewurzelter Baum (rekursiv): entweder leer oder Knoten (Wurzel) mit Verweisen auf mehrere gewurzelte Bäume (Teilbäume) Kind von Knoten v: Wurzelknoten eines nichtleeren Teilbaums von v Blatt: Knoten ohne Kinder 8

Bezeichnungen: Gewurzelte Bäume Wurzel innere Knoten 5 Kanten linker Unterbaum von 5 2 3 5 7 8 Knoten Blätter: Knoten ohne Kinder Tiefe d(v): # der Elter-Knoten bis Wurzel (inkl.) 3 ist Wurzel des linken Unterbaums von 5 3 ist Elter von 2, 3 ist Elter von 5 2 ist linkes Kind von 3, 5 ist rechtes Kind von 3

Bezeichnungen Wurzel innere Knoten linker Unterbaum von 5 2 3 5 5 7 d(3)=1 d(8)=2 d(wurzel)=0 8 Blätter: Knoten ohne Kinder Tiefe d(v): # der Elter-Knoten bis Wurzel (inkl.) Ebene: Menge aller Knoten mit gleicher Tiefe

innere Knoten linker Unterbaum von 5 Bezeichnungen 2 3 5 5 7 Wurzel d(3)=1 d(8)=2 d(wurzel)=0 Nachfolger(v): Menge aller Knoten im Unterbaum mit Wurzel v 8 Blätter: Knoten ohne Kinder Höhe h(t r ) eines (Teil-)baumes T r mit Wurzel r: max { d(v): v ist Knoten in T r } h(t 3 )=1 h(t 8 )=0 h(t Wurzel )=2

Weitere Definitionen Ein gewurzelter Baum heißt geordnet, wenn die Reihenfolge der Kinder festgelegt ist Ein binärer gewurzelter Baum ist ein gewurzelter Baum, bei dem jeder Knoten genau zwei Kinder hat. Ein geordneter gewurzelter binärer Baum unterscheidet also zwischen linkem und rechtem Kind bzw. linkem und rechtem Unterbaum. Ein binärer Baum heißt vollständig, wenn alle Blätter die gleiche Tiefe haben. 13

Def. Binärer Suchbaum Ein binärer Suchbaum ist ein binärer geordneter Baum, dessen Knoten einen Suchschlüssel als Datum enthalten, und der die Suchbaumeigenschaft erfüllt: Suchbaumeigenschaft: Enthält ein Knoten den Schlüssel x, so sind alle Schlüssel in seinem linken Unterbaum kleiner als x und alle Schlüssel im rechten Unterbaum größer als x. Achtung: alle Schlüssel verschieden 14

Implementierung binärer Bäume Realisierung als verallgemeinerte Listen mit bis zu zwei Nachfolgern: x.key: Schlüssel von Knoten x x.info: zum Schlüssel zu speichernde Daten x.parent: Elter von Knoten x x.left: linkes Kind von Knoten x x.right: rechtes Kind von Knoten x Zugriff auf den Baum erfolgt über seinen Wurzelknoten root 15

Traversierungen für binäre Bäume Inorder-Traversierung: Durchsuche rekursiv zunächst den linken Unterbaum, dann die Wurzel, durchsuche dann den rechten Unterbaum. Preorder-Traversierung: Besuche zuerst die Wurzel, durchsuche dann rekursiv den linken Unterbaum, dann den rechten. Postorder-Traversierung: Durchsuche rekursiv zunächst den linken Unterbaum, durchsuche dann rekursiv den rechten Unterbaum, besuche dann die Wurzel. 16

Traversierungen für binäre Bäume Level-Order-Traversierung: Durchsuche zunächst alle Ebenen von links nach rechts, wobei die Ebenen von oben nach unten besucht werden. Die wichtigste Traversierungsordnung für binäre Suchbäume ist die Inorder- Traversierung, weil dabei die Schlüssel aufsteigend sortiert durchlaufen werden. 17

Inorder-Traversierung (1) Procedure INORDER(p) (2) if p NULL { (3) INORDER(p.left) (4) Ausgabe von p (5) INORDER(p.right) (6) } Aufruf: INORDER(root) 18

Beispiel für INORDER-Aufruf INORDER(5) INORDER(2) Ausgabe von 2 INORDER(1) Ausgabe von 1 Ausgabe von 5 INORDER(3) Ausgabe von 3 2 1 5 3 Inorder: 2,1,5,3 s. auch Skript 19

Pre Inorder-Traversierung (1) Procedure INORDER(p) PREORDER(p) (2) if p NULL { (3) INORDER(p.left) (4) PREORDER(p.left) Ausgabe von p (5) INORDER(p.right) PREORDER(p.right) (6) } 20

Post Inorder-Traversierung (1) Procedure INORDER(p) POSTORDER(p) (2) if p NULL { (3) INORDER(p.left) POSTORDER(p.left) (4) Ausgabe POSTORDER(p.right) von von p p (5) INORDER(p.right) (6) } 21

Traversierungen für binäre Bäume Aus Inorder-Traversierung und Preorder- Traversierungsreihenfolge kann der binäre Baum eindeutig rekonstruiert werden, wenn er lauter verschiedene Schlüssel enthält. Dies gilt nicht, wenn lediglich Preorder- und Postorder-Reihenfolge gegeben sind. Beispiel: 1 2 5 3 2 1 5 3 Hier geht es nicht um binäre SUCHBÄUME Preorder: 5,2,1,3 Postorder: 1,2,3,5 s. Übung 22

Implementierung Worst Case Analyse von von SEARCH(r,s) BinarySearch in binären Suchbäumen Finde die Position im Baum mit Wurzel r, an der s gespeichert ist (bzw. sein müßte): Idee: nutze Suchbaumeigenschaft: 1. Vergleiche s mit dem Schlüssel s an der Wurzel (des Teilbaums) 2. Falls gefunden: STOP! 3. Sonst: Falls s < s : suche im linken Teilbaum 4. Sonst: suche im rechten Teilbaum 5. Gehe zu 1. 6. Ausgabe: nicht gefunden! Pseudocode s. Skript bzw. Folien 23

Implementierung Worst Case Analyse von von INSERT(r,q) BinarySearch in binären Suchbäumen Einfügen eines Knotens q in den Baum mit Wurzel r 1. Suche nach q.key Suche endet mit der Position eines leeren Unterbaums 2. Einfügen von q an diese Position Pseudocode s. Skript bzw. Folien 24

Worst Implementierung Case Analyse von von DELETE(r,q) BinarySearch in binären Suchbäumen Entfernt Knoten q im Baum mit Wurzel r 1. Suche nach q.key Suche endet an Knoten v 2. Falls v NULL, dann 3. Falls v keine Kinder besitzt, dann: streiche v 4. Falls v genau ein Kind hat: ändere 2 Zeiger ( herausschneiden ) 5. Falls v zwei Kinder hat, dann hat y:=successor(v) kein linkes Kind (warum??): Herausschneiden bzw. Entfernen von y und Ersetzen von q durch y. Pseudocode s. Skript bzw. Folien 25

Beispiel für DELETE(r,q) 15 5 16 3 12 20 10 13 18 23 Fall 1: q ist Blatt 6 7 26

Beispiel für DELETE(r,q) 15 Fall 2: q hat genau ein Kind 5 16 3 12 20 10 13 18 23 6 7 27

Beispiel für DELETE(r,q) Fall 3: q hat genau 2 Kinder 5 15 16 3 12 20 10 13 18 23 Successor(q): 6 7 28

Beispiel für DELETE(r,q) Fall 3: q hat genau 2 Kinder 5 15 16 3 12 20 10 13 18 23 Successor(q): 6 7 29

Beispiel für DELETE(r,q) ff Fall 3: q hat genau 2 Kinder 56 15 16 3 12 20 10 13 18 23 7 30

Successor-Suche 5 15 16 Successor(5) = 6 Successor(12) =13 Successor(13) =15 3 12 20 10 13 18 23 6 7 31

Implementierung von SUCCESSOR(r,p) Gibt den Nachfolger von Knoten p in der Inorder- Durchmusterungsreihenfolge aus 1. Falls p rechtes Kind hat: Return Minimum(p.right) 2. Sonst: Falls p linkes Kind ist: Return(p.parent) 3. Sonst: wandere solange nach oben bis der aktuelle Knoten zum ersten Mal linkes Kind ist; dann: Return(p.parent) 4. oder die Wurzel erreicht ist; dann: existiert kein Nachfolger. Pseudocode s. Skript bzw. Folien 32

Analyse der Operationen 1. Alle Operationen benötigen eine Laufzeit von O(h(T)) für binäre Suchbäume, wobei h(t) die Höhe des gegebenen Suchbaumes T ist. Frage: Wie hoch kann h(t) für einen binären Suchbaum mit n Knoten sein? 33

Abhängigkeit der Höhe von Worst Case Analyse von BinarySearch der Einfügereihenfolge Einfügereihenfolge: 1,3,4,6,8,9 1 Baum ist zu linearer Liste degeneriert Problem: Suchzeit ist linear, da h(t)=n-1 Einfügereihenfolge: 6,8,3,4,1,9 3 4 6 6 3 8 8 1 4 9 9 34

Diskussion Ein binärer Suchbaum T kann im Extremfall zu einer linearen Liste ausarten (z.b. Einfügereihenfolge sortiert). Dann dauert die erfolglose Suche Θ(h(T))=Θ(n) Der andere Extremfall sind vollständig balancierte Bäume (d.h. alle Ebenen bis auf evtl. die unterste sind voll besetzt); diese haben die Höhe h(t)=θ(log n). Hier dauert die erfolglose Suche Θ(h(T))=Θ(log(n)) Wir werden sehen: für dieses gute Zeitverhalten genügen auch hinreichend balancierte Bäume 35

Durchschnittliche Suchpfadlänge Man kann zeigen: Die erwartete Suchpfadlänge (über alle möglichen Permutationen von n Einfügeoperationen) ist I(n)=2 ln n - O(1) = 1.38629 log n - O(1) D.h. für große n ist die durchschnittliche Suchpfadlänge nur ca. 38% länger als im Idealfall. Allerdings ist diese Annahme, dass die Daten in einer zufälligen Reihenfolge eingegeben werden in vielen Anwendungen nicht gerechtfertigt. Lösung: Balancierte Suchbäume, s. nächste VO