Übung Algorithmen und Datenstrukturen

Ähnliche Dokumente
Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Einfache binäre Suchbäume können entarten, so dass sich die Tiefen ihrer Blattknoten stark unterscheiden

Datenstrukturen und Algorithmen SS07

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

18. Natürliche Suchbäume

Datenstrukturen Teil 3. Traversierung und AVL- Bäume. Traversierung. Traversierung. Traversierung

Übung Datenstrukturen. Bäume

9. Natürliche Suchbäume

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Vorlesung Datenstrukturen

1 AVL-Bäume. 1.1 Aufgabentyp. 1.2 Überblick. 1.3 Grundidee

13. Binäre Suchbäume

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

Christian Rieck, Arne Schmidt

13. Bäume: effektives Suchen und Sortieren

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

13. Bäume: effektives Suchen und Sortieren

Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

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

Algorithmen und Datenstrukturen 1-5. Seminar -

Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Algorithmen I. Tutorium 1-6. Sitzung. Dennis Felsing

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Anwendungsbeispiel MinHeap

Trees. November 14, Algorithms & Datastructures 2 Exercises WT 2017

Trees. November 13, Algorithms & Datastructures 2 Exercises WT 2017

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

Lineare Liste. struct list_element { float f; /* weitere Elemente */ struct list_element *next; /* Zeiger auf Nachfolger-Element */ }; Peter Sobe

Übung Algorithmen und Datenstrukturen

Fast Searching / Balanced trees

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B7.1 Einführung. B Bäume. B7.3 Rot-Schwarz Bäume.

Kapiteltests zum Leitprogramm Binäre Suchbäume

Informatik II, SS 2014

Informatik II, SS 2016

Informatik II, SS 2014

Aufgaben, Hilfestellungen und Musterlösungen zum Modul 5 Druckversion

Programmiertechnik II

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Definition 14 Rot-Schwarz-Bäume sind externe Binärbäume (jeder Knoten hat 0 oder 2 Kinder) mit roten und schwarzen Kanten, so dass gilt:

class PrintNode(object): def init ( self, param ):... def visit( self, treenode ): print treenode.getitem()

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

Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

18. Natürliche Suchbäume

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Entartete Suchbäume. Beispiel: Balancieren von Suchbaum. Wintersemester 2012/13

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Informatik II Bäume zum effizienten Information Retrieval

Datenstrukturen und Algorithmen SS17 Lösung - Übung 5

AVL-Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. AVL-Bäume 1/38

ADS 1: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I AVL-Bäume

Datenstrukturen. einfach verkettete Liste

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

Datenstrukturen und Algorithmen (SS 2013)

Binäre Suchbäume. Organisatorisches. VL-10: Binäre Suchbäume. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger.

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

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

Motivation 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

Datenstrukturen & Algorithmen

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

5 Bäume. 5.1 Suchbäume. ein geordneter binärer Wurzelbaum. geordnete Schlüsselwertmenge. heißt (schwach) sortiert, g.d.w. gilt:

Copyright, Page 1 of 8 AVL-Baum

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

Suchbäume. Suchbäume. Einfügen in Binären Suchbäumen. Suchen in Binären Suchbäumen. Prinzip Suchbaum. Algorithmen und Datenstrukturen

Suchstrukturen. Übersicht. 8 Suchstrukturen. Allgemeines. H. Täubig (TUM) GAD SS

Algorithmen und Datenstrukturen. Kapitel 4: Suchverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen

Bäume, Anwendung und Begriffe

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen

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

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

2.7 Bucket-Sort Bucket-Sort ist ein nicht-vergleichsbasiertes Sortierverfahren. Hier können z.b. n Schlüssel aus

Suchbäume mit inneren Knoten verschiedener Knotengrade.

10. Wiederholung Natürliche Suchbäume und Heaps

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

Balancierte Bäume. Minimale Knotenanzahl von AVL-Bäumen. AVL-Bäume. Definition für "balanciert":

Informatik II Prüfungsvorbereitungskurs

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Leitprogramm der Informatik Binäre Suchbäume

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B4.1 Definitionen und Eigenschaften. B4.2 Traversierung. B4.

Grundlagen der Programmierung

Übung Algorithmen und Datenstrukturen

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

NAME, VORNAME: Studiennummer: Matrikel:

Transkript:

Übung Algorithmen und Datenstrukturen Sommersemester 216 Patrick Schäfer, Humboldt-Universität zu Berlin

Agenda Vorstellung des 6. Übungsblatts. Hashing Binäre Suchbäume AVL-Bäume 2

Aufgabe: Hashing mit offener Adressierung Anmerkung: (-1) mod 1 = (1-1) mod 1 = 9 3

Binäre Suchbäume Knoten beinhaltet Schlüssel ( label ) hat Verweis auf linkes ( leftchild() ) und rechtes Kind ( rightchild() ) class Tree { String label; Tree leftchild; Tree rightchild; } rightchild label leftchild Sortierung/Sucheigenschaft Schlüssel des linken Teilbaums eines Knotens sind kleiner als Schlüssel des Knotens selbst Schlüssel des rechten Teilbaums eines Knotens sind größer als Schlüssel des Knotens selbst Gleiche Schlüssel entweder links oder rechts 1 6 15 1 8 13 19 14 4

Symmetrischer Vorgänger Der symmetrische Vorgänger ist der Knoten mit dem größten Schlüsselwert kleiner als v. Er kann gefunden werden, ohne einen einzigen Vergleich der Schlüsselwerte durchzuführen. v 5

Symmetrischer Vorgänger: iterativ und rekursiv Algorithmus SymmPredecessor (v) Input: Node v (1) if (v.leftchild()!= null) then (2) return treemaximum(v.leftchild()); (3) endif (4) return null Algorithmus treemaximum(v) Input: Node v (1) while(v.rightchild()!= null) do (2) v = v.rightchild(); (3) endwhile (4) return label(v) Algorithmus treemaximum(v) Input: Node v (1) if (v. rightchild()!= null) then (2) return treemaxmimum(v. rightchild()); (3) endif (4) return label(v) 6

Baumtraversierung Häufig müssen alle Knoten eines Baumes besucht werden, um bestimmte Operationen auf ihnen durchführen zu können. Traversierungsarten Methoden unterscheiden sich in der Reihenfolge, in der Knoten besucht werden. Preorder: Wurzel, Linker TB, Rechter TB: A, B, C, D Inorder: Linker TB, Wurzel, Rechter TB: Postorder: Linker TB, Rechter TB, Wurzel: C, B, A, D C, B, D, A B A D Komplexität: O( V ) C 7

Baumtraversierung Gegeben Sei der nachfolgende Baum. Geben Sie die Schlüssel in Inorder- und Preorder-Reihenfolge an. 3 22 55 2 44 66 33 Inorder-Traversierung eines Binären Suchbaums liefert die Schlüssel in aufsteigender (sortierter) Reihenfolge! 8

Baumtraversierung Inorder-/Preorder-/Postorder-Traversierung können elegant rekursiv ausgedrückt werden. Algorithmus preorder(v) Input: Node v (1) if (v!= null) then (2) printlabel(v); (3) preorder(v. leftchild ()); (4) preorder(v. rightchild()); (5) endif Algorithmus inorder(v) Input: Node v (1) if (v!= null) then (2) inorder(v. leftchild()); (3) printlabel(v); (4) inorder(v. rightchild()); (5) endif Algorithmus postorder(v) Input: Node v (1) if (v!= null) then (2) postorder(v. leftchild()); (3) postorder(v. rightchild()); (4) printlabel(v); (5) endif 9

Preorder-Traversierung: Iterativ & Rekursiv Zum Vergleich ist der iterative Algorithmus der Preorder-Traversierung deutlich schlechter lesbar. Algorithmus preorder(v) Input: Node v (1) if (v == null) then return endif; (2) Stack<Node> stack; (3) stack.push(v) (4) while (NOT stack.empty()) do (5) v = stack.pop(); (6) print label(v); (7) if (v.rightchild()!= null) then stack.push(v.rightchild()) endif (8) if (v.leftchild()!= null) then stack.push(v.leftchild()) endif (9) end while (1) return list; Algorithmus preorder(v) Input: Node v (1) if (v!= null) then (2) print label(v); (3) preorder(v. leftchild ()); (4) preorder(v. rightchild()); (5) endif 1

AVL-Bäume Problem: Komplexität von Such-/Einfüge-/Lösch-Operationen abhängig von der Höhe des binären Suchbaums - maximal O( V ). Lösung: Balancierte Suchbäume wie AVL-Baum garantieren logarithmische Höhe und damit Komplexität O(log V ). AVL-Baum: In jedem Knoten unterscheidet sich die Höhe der beiden Teilbäume um höchstens Eins. Rebalancierung (Rotation) beim Einfügen und Löschen. Definition: Sei u Knoten in binärem Baum. bal(u) : Differenz zwischen Höhe des rechten Teilbaums von u und Höhe des linkes Teilbaums von u Ein binärer Baum heißt AVL-Baum, falls für alle Knoten u gilt: bal(u) 1 6 1 1 15 1 1 8 13 1 19 14 11

Rebalancierung von AVL-Bäumen Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe 4 Rotationsoperationen auf AVL-Bäumen: 1. bal(u) = 2, bal(v) = 1: Einfachrotation Links(u) u +2 v +1 v u h h+1 h+2 h h+1 h+2 12

Rebalancierung von AVL-Bäumen Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe 4 Rotationsoperationen auf AVL-Bäumen: 1. bal(u) = 2, bal(v) = 1: Einfachrotation Links(u) 2. bal(u) = -2, bal(v) = -1: Einfachrotation Rechts(u) u -2 v v -1 u h h+1 h+2 h h+1 h+2 13

Rebalancierung von AVL-Bäumen Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe 4 Rotationsoperationen auf AVL-Bäumen: 1. bal(u) = 2, bal(v) = 1: Einfachrotation Links(u) 2. bal(u) = -2, bal(v) = -1: Einfachrotation Rechts(u) 3. bal(u) = 2, bal(v) = -1: Doppelrotation Rechts(v) + Links(u) u +2 w -1 v u v h h+1 h+2 w h h+1 h+2 14

Rebalancierung von AVL-Bäumen Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe 4 Rotationsoperationen auf AVL-Bäumen: 1. bal(u) = 2, bal(v) = 1: Einfachrotation Links(u) 2. bal(u) = -2, bal(v) = -1: Einfachrotation Rechts(u) 3. bal(u) = 2, bal(v) = -1: Doppelrotation Rechts(v) + Links(u) 4. bal(u) = -2, bal(v) = 1: Doppelrotation Links(v) + Rechts(u) u -2 w 1 v v u h h+1 w h h+1 h+2 h+2 15

Rebalancierung von AVL-Bäumen Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe 4 Rotationsoperationen auf AVL-Bäumen: 1. bal(u) = 2, bal(v) = 1: Einfachrotation Links(u) 2. bal(u) = -2, bal(v) = -1: Einfachrotation Rechts(u) 3. bal(u) = 2, bal(v) = -1: Doppelrotation Rechts(v) + Links(u) 4. bal(u) = -2, bal(v) = 1: Doppelrotation Links(v) + Rechts(u) Komplexität: Rotationen sind lokale Operationen, die nur Umsetzen einiger Zeiger erfordern, und in Zeit O(1) erfolgen. Aufgabe: Sei T ein leerer AVL-Baum. Fügen Sie nacheinander die Elemente 3, 2, 22, 55, 66, 44, 33 ein 16

Aufgabe zu AVL-Bäumen Sei T folgender AVL-Baum: 3 1 22-1 55-1 2 44-1 66 33 Fügen Sie nacheinander die Schlüssel 39, 42 in T ein und zeichnen Sie den jeweiligen AVL-Baum nach jeder insert- Operation. 17

Einfügen von 39 bal(44) = -2, bal(33) = 1: Doppelrotation Links(33) + Rechts(44) 3 1 3 22-1 55-1 22 55 2 44-1 66 33 2 44 66 39 33 3 2 3 1 22-1 55-2 22-1 55-1 2 44-2 66 2 39 66 33 1 33 44 39 18

Einfügen von 42 bal(55) = -2, bal(39) = 1: Doppelrotation Links(39) + Rechts(55) 3 1 3 22-1 55-1 22 55 2 39 66 2 44 66 33 44 39 33 42 3 2 3 1 22-1 55-2 22-1 44 2 39 1 66 2 39 55 1 33 44-1 33 42 66 42 19