Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

Ähnliche Dokumente
Algorithmen und Datenstrukturen Suchbaum

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Diskrete Strukturen Kapitel 4: Graphentheorie (Bäume)

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Datenstrukturen & Algorithmen

WS 2013/14. Diskrete Strukturen

Algorithmen und Datenstrukturen

Graphen und Bäume. A.1 Graphen

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

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Kapitel 9 Suchalgorithmen

Vorlesung Datenstrukturen

Informatik II Vorlesung am D-BAUG der ETH Zürich

Datenstrukturen. einfach verkettete Liste

In diesem Kapitel behandeln wir erste Algorithmen mit dynamischen Strukturen, wie Bäume und Graphen. 1. Bäume Grundlagen...

Logische Datenstrukturen

Einführung in die Informatik 2

Datenstrukturen und Algorithmen

Tutorium Algorithmen & Datenstrukturen

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

WS 2009/10. Diskrete Strukturen

13. Bäume: effektives Suchen und Sortieren

Einführung in die Informatik I

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Binärbäume: Beispiel

Kapitel 12: Induktive

Verkettete Datenstrukturen: Bäume

Einführung in die Informatik 2

Algorithmen und Datenstrukturen I Bruder-Bäume

Algorithmen und Datenstrukturen 1

Rotation. y T 3. Abbildung 3.10: Rotation nach rechts (analog links) Doppelrotation y

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

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

4.1 Bäume, Datenstrukturen und Algorithmen. Zunächst führen wir Graphen ein. Die einfachste Vorstellung ist, dass ein Graph gegeben ist als

13. Binäre Suchbäume

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Algorithmen und Datenstrukturen 1

Motivation Binäre Suchbäume

Kap. 4.2: Binäre Suchbäume

Relationen und DAGs, starker Zusammenhang

Doppelt verkettete Listen (1)

Software Entwicklung 1

Bäume Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

Informatik II, SS 2016

Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen

Informatik II, SS 2014

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

Kapitel 9 Suchalgorithmen

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

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V9/11

4.3 Bäume. Definition des Baumes. Bäume sind eine sehr wichtige Datenstruktur der Informatik.

Informatik Abitur Bayern 2017 / II - Lösung

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Algorithmen und Datenstrukturen

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Binäre Bäume Darstellung und Traversierung

Algorithmen und Datenstrukturen 1

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

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

Informatik II, SS 2014

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

Technische Universität München

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

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

Grundlagen der Programmierung 2. Bäume

Algorithmen und Datenstrukturen Heapsort

Algorithmen und Datenstrukturen 13

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

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

ADS: Algorithmen und Datenstrukturen

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

Vorlesung Datenstrukturen

Proseminar Kodierverfahren bei Dr. Ulrich Tamm Sommersemester 2003 Thema: Codierung von Bäumen (Prüfer Codes...)

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Studientag zur Algorithmischen Mathematik

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Bäume, Anwendung und Begriffe

Bäume, Suchbäume und Hash-Tabellen

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

Algorithmen und Datenstrukturen I AVL-Bäume

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Algorithmen und Datenstrukturen

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

Informatik I 2. Kapitel. Elementare Datenstrukturen. Datenstrukturen. Datenstrukturen. Rainer Schrader. 28. Mai 2008

Bäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Geordnete Binärbäume

Algorithmische Graphentheorie

Digraphen, DAGs und Wurzelbäume

Transkript:

Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter

Kapitel 7 Fortgeschrittene Datenstrukturen Motivation: Lineare Liste: Suchen eines Elements ist schnell O(log n) Einfügen eines Elements ist langsam O(n) Technische Universität München Verkettete Liste (nicht sortiert): Suchen eines Elements ist langsam O(n) Einfügen eines Elements ist schnell O(1) Ziel: Effiziente Datenstrukturen zur Speichern von Elementen Schnelles Suchen von Elementen: O(log n) Schnelles Einfügen von Elementen: O(log n) AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 2

7.1 Baumstrukturen Bäume sind eine zentrale Datenstruktur: Codebäume, Suchbäume, Syntaxbäume, Entscheidungsbäume, Dateibäume... Ein Baum ist eine verallgemeinerte Listenstruktur. Bäume bestehen aus Knoten unterschiedlichen Typs; die Verbindung zwischen zwei Knoten wird als Kante bezeichnet. Ein Element (Knoten) hat nicht nur einen Nachfolger (wie im Fall der Liste), sondern eine begrenzte Anzahl von Nachfolgern (Söhne). In der Informatik: idr Bäume mit oben liegender Wurzel AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 3

Beispiel: Bäume zur Speicherung von Datenbank-Einträgen AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 4

Oberster Knoten ist die Wurzel des Baums (kein Vorgänger oder Vater) Eine Folge p 0...p k von Knoten, für die gilt: p i+1 ist Sohn von p i, 0 i < k, heißt Pfad mit der Länge k Im Folgenden präzise Definitionen AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 5

Definition Ein Graph ist ein Tupel G = (E, V) mit V: Menge von Knoten (Vertices) E: Menge von Kanten (Edges) (v, w), mit v, w V Ein Graph G = (E, V) heißt gerichtet, wenn seine Kanten (v, w) gerichtete Kanten sind. Für (v, w) E heißt v Vorgänger von w, und w Nachfolger. Wenn (v, w) E eine gerichtete Kante ist, dann ist w adjazent zu v. Definition Ein Baum ist ein zusammenhängender, ungerichteter Graph, der keinen Kreis/Zyklus enthält. AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 6

Beispiel Graph-Datenstruktur Technische Universität München AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 7

Beispiel Graph und Baum-Strukturen Technische Universität München AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 8

Rekursive Definition eines Baumes Gegeben sei eine endliche Menge V von n 0 Knoten. Ein speziell ausgezeichneter Knoten ist die Wurzel. Die übrige Knoten werden in m 0 disjunkte Mengen V 1, V 2,..., V m aufgeteilt. Jedes V k definiert ein Menge von Knoten eines Baums T k = (E k, V k ) T 1, T 2,..., T m werden als die Unterbäume der Wurzel bezeichnet. AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 9

Wald Ein Wald ist eine Menge von n 0 disjunkten Bäumen. Entfernen der Wurzel eines Baums erzeugt einen Wald. Unterbaum A Wurzel T 1 T 2 T m AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 10

Definition Die Anzahl der Unterbäume eines Knoten v definiert den Grad deg(v) des Knoten v. Ein Endknoten oder ein Blatt v ist ein Knoten ohne Nachfahren. Ein Knoten, der kein Endknoten ist, hat den Grad deg(v) > 0. Die Tiefe d(v) des Knoten v ist die Länge des Pfades von der Wurzel zum Knoten v. Die Knoten gleicher Tiefen bilden ein Niveau. Die Höhe h(v) des Knoten v ist die Länge des längsten Pfades von v zu einem Blatt. Die Höhe des Baumes T ist die Höhe der Wurzel h(t) = h(root). AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 11

Beispiel 1 Baum mit 7 Knoten A A ist die Wurzel und hat Unterbäume { B } und { C,D,E,F,G } B C Der Baum { C,D,E,F,G } hat den Knoten C als seine Wurzel. D E F C hat die Unterbäume { D },{ E },{ F,G } C hat den Grad 3, deg(c) = 3 G Die Höhe von C, h(c) = 2 AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 12

AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 13 Beispiel 2 { B }, { D }, { E } und { G } sind Blätter F ist der einzige Knoten mit Grad 1 Der Baum hat die Höhe 3 Knoten D hat Tiefe 2 A B C D F G E A B C D F G E A B C D F G E A B C D F G E A B C D F G E A B C D F G E

Definition Gegeben sei ein Baum (E, V). Für jeden Knoten v V sei eine Ordnung auf den Nachfolgerknoten von v definiert. Dann heißt der Baum geordneter Baum. Definition Ein Binärbaum ist ein geordneter Baum und für alle v V gilt, deg(v) 2. D.h. kein Knoten hat mehr als 2 Nachfolgerknoten. Beim Binärbaum spricht man vom linken Sohn oder rechten Sohn. AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 14

Beispiele für Binärbäume 1 2 6 3 4 7 8 5 9 10 AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 15

Definition Gegeben sei ein Binärbaum (E, V). Der Baum heißt vollständig wenn jedes Niveau die maximale Anzahl an Knoten enthält. D.h. Jeder Knoten hat einen linken und einen rechten Sohn, oder er ist ein Endknoten Gegeben sei ein vollständiger, binärer Baum der Höhe k. Ein solcher Baum hat: 2 k+1 1 Knoten 2 k Blätter AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 16

Sei T = (E, V) ein vollständiger Binärbaum der Höhe k. Satz: T besitzt 2 k+1 1 Knoten und 2 k Blätter. Beweis Technische Universität München AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 17

Beispiel: Vollständiger Binärbaum Gegeben sei der unten abgebildete vollständige Baum mit der Höhe k = 3. Der Baum besitzt: 15 Knoten 8 Blätter 15 13 14 9 10 11 12 1 2 3 4 5 6 7 8 AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 18

7.2 Repräsentation von Bäumen: Darstellung eines Binärbaums mit einfach verketteten Listen: Attribut Schlüssel : bezeichnet den Wert des Elements Pro Knoten: Verweise auf linkes u. rechtes Kind Links Rechts 1 2 6 1 2 3 4 5 6 2 6 3 4 0 0 0 5 0 0 7 8 3 4 7 8 7 8 0 0 9 10 5 9 10 9 10 0 0 0 0 AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 19

Graphische Repräsentation wurzel Zeiger auf die Wurzel des Baums 1 Links Schlüssel Rechts 2 6 3 4 7 8 5 9 10 AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 20

Darstellung eines Baums mit doppelt verketteten Listen: Ein Knoten wird als Element einer Liste dargestellt Jedes Element wird durch Attribute beschrieben: Das Attribut Schlüssel beschreibt den Wert des Knoten x, schlüssel[x], (z.b., Zahl, Name, Adresse,...) Das Attribut wurzel[t] zeigt auf die Wurzel des Baumes Darstellung eines Binärbaums Technische Universität München Das Attribut p ist ein Verweis auf den Vaterknoten (Parent) im Baum, falls gilt: p[x] = NULL, dann ist x die Wurzel des Baumes Das Attribut links verweist auf das linke Kind des Knoten x, links[x] Das Attribut rechts verweist auf das rechte Kind, rechts[x] AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 21

Beispiel: Technische Universität München Vielfältige Varianten sind möglich: Beispielsweise die Verwendung zusätzlicher Zeiger, um auf den Bruder-Knoten (rechts oder links) zu verweisen. AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 22

Repräsentation in C typedef struct bnode { int key; struct bnode* left; struct bnode* right; } bin_node; void insert(bin_node **root, int val){ bin_node *newnode; newnode=(bin_node*)malloc(sizeof(bin_node)); newnode->right=null; newnode->left=null; if ((*root)==null) { *root=newnode; (*root)->key=val; return; } if (val<(*root)->key) insert((&root)->left,val); else insert((&root)->right,val); }//end Technische Universität München void inorder(bin_node *root) { if (root==null) return ; inorder(root->left); printf("%d ",root->key); inorder(root->right); }//end inorder AuD, Kapitel 7 Fortgeschrittene Datenstrukturen, WS10/11, C. Eckert 23