Erinnerung VL

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

Erinnerung VL

Sortierte Folgen 250

Algorithmen II. Peter Sanders, Thomas Worsch, Simon Gog. Übungen: Demian Hespe, Yaroslav Akhremtsev

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

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

Grundlagen der Algorithmen und Datenstrukturen Kapitel 6

7. Übung zu Algorithmen I 1. Juni 2016

Übung zu Algorithmen I 31. Mai 2017

Informatik II, SS 2018

Algorithmen I. Sebastian Schlag Institut für Theoretische Informatik Web:

Vorlesung Datenstrukturen

Erinnerung VL

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

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

Informatik II, SS 2014

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

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

Sortieren & Co. KIT Institut für Theoretische Informatik

Algorithmen I - Tutorium 28 Nr. 7

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

Algorithmen und Datenstrukturen (für ET/IT)

Suchbäume balancieren

Erinnerung VL vom

Suchen und Sortieren Sortieren. Heaps

Effiziente Algorithmen und Datenstrukturen I Kapitel 2: Priority Queues

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

Kap. 3: Sortieren (3)

Erinnerung VL

10. Übung Algorithmen I

Übungsklausur Algorithmen I

Erinnerung VL

Übung Algorithmen und Datenstrukturen

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

Algorithmen & Komplexität

Karlsruher Institut für Technologie. Klausur Algorithmen I

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

Sortieren II / HeapSort Heaps

Übungsklausur Algorithmen I

Informatik II, SS 2016

Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig

Auswählen nach Rang (Selektion)

Grundlagen: Algorithmen und Datenstrukturen

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

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

Algorithmen I - Tutorium 28 Nr. 3

Algorithmen und Datenstrukturen

Software Entwicklung 1

Algorithmen I - Tutorium 28 Nr. 6

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

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

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

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 und Datenstrukturen Heapsort

4.2 Fibonacci-Heaps Aufbau Potenzialfunktion. Knoten v hat folgende Felder:

Algorithmen und Datenstrukturen

Formaler. Gegeben: Elementfolge s = e 1,...,e n. s ist Permutation von s e 1 e n für eine lineare Ordnung ` '

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Übung Algorithmen und Datenstrukturen

Algorithmen I - Tutorium 28 Nr. 11

Algorithmen II. Peter Sanders. Übungen: Moritz Kobitzsch und Dennis Schieferdecker. Institut für Theoretische Informatik, Algorithmik II.

5. Vorrangwarteschlangen - Priority Queues

markiert, 0: unmarkiert.)

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

Suchen und Sortieren Sortieren. Heaps

Vorlesung Datenstrukturen

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

Heapsort. Ziel: Sortieren Feld A[1..n]von nschlüsseln in O(n log n)worst case Zeit(so wie Mergesort), aber ohne Zusatzspeicher(so wie Quicksort).

Algorithmen und Datenstrukturen

Proseminar Effiziente Algorithmen

Sanders / van Stee: Algorithmentechnik November 23, Sortieren & Co

Verkettete Listen. KIT Institut für Theoretische Informatik 1

(Priority Queues) Prof. Dr. O. Bittel, HTWG Konstanz Algorithmen und Datenstrukuren Prioritätslisten WS 18/19

Algorithmen I - Tutorium 28 Nr. 2

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

5.5 Prioritätswarteschlangen

Algorithmen & Komplexität

Algorithmen II. Peter Sanders, Thomas Worsch, Simon Gog. Übungen: Demian Hespe, Yaroslav Akhremtsev

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Kapitel 8 Fortgeschrittene Sortieralgorithmen

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)

1. Übung Algorithmen I

3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen.

Technische Universität München

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

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Algorithmen und Datenstrukturen

24. Minimale Spannbäume

Algorithmen und Datenstrukturen

25. Minimale Spannbäume

11. Elementare Datenstrukturen

Algorithmen I. Sascha Witt Institut für Theoretische Informatik Web:

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

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Informatik II, SS 2018

Transkript:

Erinnerung VL 30.05.2016 Radix-Sort, Abschluss Sortieren Prioritätslisten: Warteschlange mit Prioritäten deletemin: kleinstes Element rausnehmen insert: Element einfügen Binäre Heaps als Implementierung von Prioritätslisten Repräsentation als Array, siftdown, siftup, Heapsort Heute: Adressierbare Prioritätslisten, sortierte Folgen KIT Institut für Theoretische Informatik 1

Heapsort Quicksort Mergesort Heapsort Quicksort Mergesort Vergleiche O(n logn) O ( n 2) O(n logn) E[Vergleiche] O(n log n) O(n log n) O(n log n) zusätzl. Platz O(1) O(log n) O(n) Cachezugrie O(n logn) O ( n B logn) O ( n B logn) (B =Blockgröÿe) Kompromiss: z. B. introspektives Quicksort der C++ Standardbibliothek: Quicksort starten. Zu wenig Fortschritt? Umschalten auf Heapsort. KIT Institut für Theoretische Informatik 2

Adressierbare Prioritätslisten Procedure build({e 1,...,e n }) M:= {e 1,...,e n } Function size return M Procedure insert(e) M:= M {e} Function min return min M Function deletemin e:= min M; M:= M \ {e}; return e Function remove(h : Handle) e:= h; M:= M \ {e}; return e Procedure decreasekey(h : Handle, k : Key) assert key(h) k; key(h):= k Procedure merge(m ) M:= M M KIT Institut für Theoretische Informatik 3

Adressierbare Prioritätslisten: Anwendungen Greedy-Algorithmus: while solution not complete do add the best available piece to the solution update piece priorities // e.g., using addressable priority queue Beispiele: Dijkstras Algorithmus für kürzeste Wege Jarník-Prim Algorithmus für minimale Spannbäume Scheduling: Jobs am wenigsten belastete Maschine Hierarchiekonstruktion für Routenplanung Suche nach erfüllenden Belegungen aussagenlog. Formeln? KIT Institut für Theoretische Informatik 4

Adressierbare Binäre Heaps Problem: Elemente bewegen sich. Dadurch werden Elementverweise ungültig. (Ein) Ausweg: Unbewegliche Vermittler-Objekte. Invariante: proxy(e) verweist auf Position von e. Vermittler bei jeder Vertauschung aktualisieren. Rückverweis Element Vermittler 1 3 7 4 6 8 9 1 3 7 4 6 8 9 Laufzeit: O(log n) für alle Operationen ausser merge und buildheap, die O(n) brauchen. KIT Institut für Theoretische Informatik 5

Adressierbare Prioritätslisten Laufzeiten Operation Binary Heap Fibonacci-Heap (Buch) build O(n) O(n) size O(1) O(1) min O(1) O(1) insert O(log n) O(1) deletemin O(log n) O(log n) remove O(log n) O(log n) decreasekey O(log n) O(1) am. merge O(n) O(1) KIT Institut für Theoretische Informatik 6

Prioritätslisten: Mehr ganzzahlige Schlüssel (stay tuned) extern: Geht gut (nichtadressierbar) parallel: Semantik? KIT Institut für Theoretische Informatik 7

Prioritätslisten: Zusammenfassung Häug benötigte Datenstruktur Adressierbarkeit ist nicht selbstverständlich Binäre Heaps sind einfache, relativ eziente Implementierung KIT Institut für Theoretische Informatik 8

Was haben wir jenseits von Prioritätslisten gelernt? implizites Layout von Binärbäumen j j2 j Heapsort (inplace!) KIT Institut für Theoretische Informatik 9

Sortierte Folgen KIT Institut für Theoretische Informatik 10

Sortierte Folgen: e 1,...,e n mit e 1 e n kennzeichnende Funktion: M.locate(k):= addressof min{e M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme: Dummy-Element mit Schlüssel Achtung: In Abbildungen sieht wie 00 aus KIT Institut für Theoretische Informatik 11

Statisch: Sortiertes Feld mit binärer Suche // Find min{i 1..n + 1 : a[i] k} Function locate(a[1..n], k : Element) (l,r):= (0,n + 1) // Assume a[0] =, a[n + 1] = while l + 1 < r do invariant 0 l < r n + 1 and a[l] < k a[r] m:= (r + l)/2 // l < m < r if k a[m] then r:= m else l:= m return r Übung: Müssen die Sentinels / tatsächlich vorhanden sein? Übung: Variante von binärer Suche: bestimme l, r so dass a[l..r 1] = [k,...,k], a[l 1] < k und a[r] > k KIT Institut für Theoretische Informatik 12

Statisch: Sortiertes Feld mit binärer Suche // Find min{i 1..n + 1 : a[i] k} Function locate(a[1..n], k : Element) (l,r):= (0,n + 1) // Assume a[0] =, a[n + 1] = while l + 1 < r do invariant 0 l < r n + 1 and a[l] < k a[r] m:= (r + l)/2 // l < m < r if k a[m] then r:= m else l:= m return r Zeit: O(log n) Beweisidee: r l halbiert sich in jedem Schritt KIT Institut für Theoretische Informatik 13

Binäre Suche Beispiel: k = 15 Function locate(a[1..n],k : Element) // min{i 1..n + 1 : a[i] k} (l,r):= (0,n + 1) // Assume a[0] =, a[n + 1] = while l + 1 < r do invariant 0 l < r n + 1 and a[l] < k a[r] m:= (r + l)/2 // l < m < r if k a[m] then r:= m else l:= m return r Indizes: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Einträge: [, 2, 3, 5, 7, 11, 13, 17, 19, ] [, 2, 3, 5, 7, 11, 13, 17, 19, ] [, 2, 3, 5, 7, 11, 13, 17, 19, ] [, 2, 3, 5, 7, 11, 13, 17, 19, ] KIT Institut für Theoretische Informatik 14

Dynamische Sortierte Folgen Grundoperationen insert, remove, update, locate O(log n) (M.locate(k):= min{e M : e k}) KIT Institut für Theoretische Informatik 15

Mehr Operationen min,...,a,...,b,...,max min: Erstes Listenelement max: Letztes Listenelement Zeit O(1) Zeit O(1) rangesearch(a, b) // O(log n + result ) result:= h:= locate(a) while h e b do result.pushback(h e) Navigations Datenstruktur h:= h next return result 2 3 5 7 11 13 17 19 00 KIT Institut für Theoretische Informatik 16

Noch mehr Operationen (re)build: Navigationsstruktur für sortierte Liste aufbauen O(n) w,...,x.concat( y,...,z ) = w,...,x,y,...,z O(logn) w,...,x,y,...,z.split(y) = ( w,...,x, y,...,z ) O(logn) Zählen: rank, select, rangesize O(log n) Fingersuche: = Abstand zu Fingerinfo zusätzlicher Parameter für insert, remove, locate,... O(log n) log Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 KIT Institut für Theoretische Informatik 17

Abgrenzung Hash-Tabelle: nur insert, remove, nd. Kein locate, rangequery Sortiertes Feld: nur bulk-updates. Aber: Hybrid-Datenstruktur oder log n M geometrisch wachsende statische Datenstrukturen Prioritätsliste: nur insert, deletemin, (decreasekey, remove). Dafür: schnelles merge Sortierte Folgen allgemein: die eierlegende Wollmilchdatenstruktur. Etwas langsamer als speziellere Datenstrukturen KIT Institut für Theoretische Informatik 18

Sortierte Folgen Anwendungen Best-First Heuristiken Alg. Geometrie: Sweepline-Datenstrukturen Datenbankindex... KIT Institut für Theoretische Informatik 19

Anwendungsbeispiel: Best Fit Bin Packing Procedure binpacking(s) B : SortedSequence // used bins sorted by free capacity foreach e s by decreasing element size // sort if b B : free(b) e then B.insert(new bin) locate b B with smallest free(b) e insert e into bin b Zeit: O( s log s ) Qualität: gut. Details: nicht hier KIT Institut für Theoretische Informatik 20