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

Ähnliche Dokumente
Algorithmen und Datenstrukturen Heapsort

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Datenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (für ET/IT)

Vorlesung Datenstrukturen

Sortieren II / HeapSort Heaps

Suchen und Sortieren Sortieren. Heaps

Datenstrukturen & Algorithmen

Informatik II, SS 2018

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

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

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

5.5 Prioritätswarteschlangen

Algorithmen und Datenstrukturen

11. Elementare Datenstrukturen

Kapitel 8 Fortgeschrittene Sortieralgorithmen

Algorithmen und Datenstrukturen

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)

Technische Universität München

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

Programmiertechnik II

Algorithmen und Datenstrukturen 7. Vorlesung

Algorithmen I - Tutorium 28 Nr. 7

Suchen und Sortieren Sortieren. Heaps

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

18. Natürliche Suchbäume

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6

Copyright, Page 1 of 7 Heapsort

Vorlesung Datenstrukturen

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015

Informatik II, SS 2014

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Algorithmen 1 Tutorium

9. Natürliche Suchbäume

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Kap. 3 Sortieren. 7. VO DAP2 SS Mai Vorlesung am Do 7.5. entfällt wegen FVV um 14 Uhr HeapSort ff 3.1.

Heapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays

Manipulation von Mengen

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown

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

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

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

DSAL - 4. Globalübung. Benjamin Kaminski, Tim Quatmann. 15. Mai 2018

7. Sortieren Lernziele. 7. Sortieren

Mergeable Heaps. C. Komusiewicz 7.1 Fibonacci-Heaps: Überblick 117

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

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

Sortieren und Suchen. Kapitel II. Sortieren und Suchen

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen und Algorithmen. Vorlesung 8

Algorithmen I. Tutorium Sitzung. Dennis Felsing

Erinnerung VL

Denition: Rang eines Elements e einer Folge s = Position von e in sort(s) (angefangen bei 1). Frage: warum ist r nicht notwendig eindeutig?

Kap. 3: Sortieren (3)

Algorithmen I. Prof. Jörn Müller-Quade Institut für Theoretische Informatik Web:

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

Übung Algorithmen und Datenstrukturen

Erinnerung VL

Vorlesung Datenstrukturen

Dynamische Datenstrukturen

1. Übungsblatt zu Algorithmen II im WS 2011/2012

(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016

Abstract Data Structures

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

Priority Queues and Heapsort

ADS: Algorithmen und Datenstrukturen

NAME, VORNAME: Studiennummer: Matrikel:

7. Übung zu Algorithmen I 1. Juni 2016

Algorithmen I. Tutorium Sitzung. Dennis Felsing

Algorithmen I - Tutorium 28 Nr. 3

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

3. Musterlösung. Problem 1: Heapsort

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

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

21. Greedy Algorithmen. Aktivitätenauswahl, Fractional Knapsack Problem, Huffman Coding Cormen et al, Kap. 16.1, 16.3

Übung Algorithmen und Datenstrukturen

Informatik II - Übung 12

Übung zu Algorithmen I 31. Mai 2017

Abstract Data Structures

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85

Algorithmen und Programmieren II

Programmieren, Algorithmen und Datenstrukturen II 5. Effizientes Sortieren und Suchen

4. Sortieren 4.1 Vorbemerkungen

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

Software Entwicklung 1

Datenstrukturen und Algorithmen. Vorlesung 6

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

21. Dynamic Programming III

Lösungsvorschlag Hausübung 8

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Grundzüge von Algorithmen und Datenstrukturen, WS 15/16: Lösungshinweise zum 13. Übungsblatt

9 Minimum Spanning Trees

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen.

Transkript:

Algorithmen I Tutorium 1-5. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-16

Heaps 1 Heaps Binäre Heaps Erhalten der Heap-Eigenschaft Erzeugen eines Heaps Heapsort Prioritätswarteschlangen Aufgaben Dennis Felsing Algorithmen I 2/12

Binäre Heaps Definition Ein Binärer Heap ist ein Array, dass sich als Binärbaum darstellen lässt. Bei Min-Heaps gilt als Heap-Eigenschaft A[Parent(i)] A[i], bei Max-Heaps gilt A[Parent(i)] A[i]. Wir arbeiten im folgenden mit Max-Heaps. Dennis Felsing Algorithmen I 3/12

Binäre Heaps Definition Ein Binärer Heap ist ein Array, dass sich als Binärbaum darstellen lässt. Bei Min-Heaps gilt als Heap-Eigenschaft A[Parent(i)] A[i], bei Max-Heaps gilt A[Parent(i)] A[i]. Wir arbeiten im folgenden mit Max-Heaps. Wichtige Operationen Max-Heapify: Stelle Max-Heap-Eigenschaft her (O(log n)) Build-Max-Heap: Erzeuge Max-Heap aus Array (O(n)) Heapsort: Sortiere ein Array (inplace, O(n log n)) Dennis Felsing Algorithmen I 3/12

Binäre Heaps Aufgabe Welcher Zusammenhang besteht zwischen sortierten Arrays und Heaps? Dennis Felsing Algorithmen I 4/12

Binäre Heaps Aufgabe Welcher Zusammenhang besteht zwischen sortierten Arrays und Heaps? Lösung Aufsteigend sortiertes Array Min-Heap Absteigend sortiertes Array Max-Heap Umkehrung gilt nicht! Dennis Felsing Algorithmen I 4/12

Erhalten der Heap-Eigenschaft Situation Die Binärbäume mit Wurzel Left(i) und Right(i) sind Max-Heaps. A[i] kann aber kleiner als seine Kinder sein. Max-Heapify(A, i) 1 l = Left(i) 2 r = Right(i) 3 max = i 4 if l A.heap-size und A[l] > A[max] 5 max = l 6 if r A.heap-size und A[r] > A[max] 7 max = r 8 if max i 9 vertausche A[i] mit A[max] 10 Max-Heapify(A, max) Dennis Felsing Algorithmen I 5/12

Erzeugen eines Heaps Build-Max-Heap(A) 1 A.heap-size = A.length 2 for i = A.length/2 downto 1 3 Max-Heapify(A, i) Beispiel Wende Build-Max-Heap auf das Array A = [4, 1, 3, 2, 16, 9, 10, 14, 8, 7] an. Dennis Felsing Algorithmen I 6/12

Heapsort Heapsort(A) 1 Build-Max-Heap(A) 2 for i = A.length downto 2 3 vertausche A[1] mit A[i] 4 A.heap-size = A.heap-size 1 5 Max-Heapify(A, 1) Beispiel Sortiere das Array A = [4, 1, 3, 2, 16, 9, 10, 14, 8, 7] mit Heapsort. Dennis Felsing Algorithmen I 7/12

Prioritätswarteschlangen Prioritätswarteschlangen (engl. priority queues) lassen sich mit Heaps effizient implementieren. Dazu benötigt man die folgenden Operationen bei einer Max-Priority Queue: Max-Heap-Insert(A, x): Füge x in Heap A ein (O(log n)) Heap-Maximum(A): Gebe das Maximum von A zurück (O(1)) Heap-Extract-Max(A): Entferne das Maximum von A (O(log n)) Heap-Increase-Key(A, x, k): Erhöhe den Schlüssel von x auf k (O(log n)) Dennis Felsing Algorithmen I 8/12

Prioritätswarteschlangen Prioritätswarteschlangen (engl. priority queues) lassen sich mit Heaps effizient implementieren. Dazu benötigt man die folgenden Operationen bei einer Max-Priority Queue: Max-Heap-Insert(A, x): Füge x in Heap A ein (O(log n)) Heap-Maximum(A): Gebe das Maximum von A zurück (O(1)) Heap-Extract-Max(A): Entferne das Maximum von A (O(log n)) Heap-Increase-Key(A, x, k): Erhöhe den Schlüssel von x auf k (O(log n)) Aufgabe Wie lassen sich Queues und Stacks durch eine Priority Queue implementieren? Dennis Felsing Algorithmen I 8/12

Aufgaben Aufgabe Die Operation Heap-Delete(A, i) entfernt ein Element i vom Heap A und erhält dabei die Heap-Eigenschaft. Implementiere Heap-Delete in Pseudocode. Dennis Felsing Algorithmen I 9/12

Aufgabe d-näre Heaps Definition Ein d-närer Heap ist eine Verallgemeinerung des binären Heaps mit d statt 2 Kindern. Aufgaben 1 Wie lässt sich ein d-närer Heap in einem Array repräsentieren? 2 Was ist die Höhe eines d-nären Heaps mit n Elementen? Dennis Felsing Algorithmen I 10/12

Übersicht 1 Heaps Binäre Heaps Erhalten der Heap-Eigenschaft Erzeugen eines Heaps Heapsort Prioritätswarteschlangen Aufgaben Dennis Felsing Algorithmen I 11/12

Dennis Felsing Algorithmen I 12/12