Erinnerung VL
|
|
|
- Karsten Gerhardt
- vor 9 Jahren
- Abrufe
Transkript
1 Erinnerung VL 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
2 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
3 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
4 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
5 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 Laufzeit: O(log n) für alle Operationen ausser merge und buildheap, die O(n) brauchen. KIT Institut für Theoretische Informatik 5
6 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
7 Prioritätslisten: Mehr ganzzahlige Schlüssel (stay tuned) extern: Geht gut (nichtadressierbar) parallel: Semantik? KIT Institut für Theoretische Informatik 7
8 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
9 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
10 Sortierte Folgen KIT Institut für Theoretische Informatik 10
11 Sortierte Folgen: e 1,...,e n mit e 1 e n kennzeichnende Funktion: M.locate(k):= addressof min{e M : e k} Navigations Datenstruktur Annahme: Dummy-Element mit Schlüssel Achtung: In Abbildungen sieht wie 00 aus KIT Institut für Theoretische Informatik 11
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 Ü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
13 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
14 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
15 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
16 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 KIT Institut für Theoretische Informatik 16
17 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 KIT Institut für Theoretische Informatik 17
18 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
19 Sortierte Folgen Anwendungen Best-First Heuristiken Alg. Geometrie: Sweepline-Datenstrukturen Datenbankindex... KIT Institut für Theoretische Informatik 19
20 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
Sortierte Folgen 250
Sortierte Folgen 250 Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme:
Denition: Rang eines Elements e einer Folge s = Position von e in sort(s) (angefangen bei 1). Frage: warum ist r nicht notwendig eindeutig?
207 Auswahl (Selection) Denition: Rang eines Elements e einer Folge s = Position von e in sort(s) (angefangen bei 1). Frage: warum ist r nicht notwendig eindeutig? // return an element of s with rank k
7. Übung zu Algorithmen I 1. Juni 2016
7. Übung zu Algorithmen I 1. Juni 2016 Lukas Barth [email protected] (mit Folien von Lisa Kohl) Roadmap Ganzzahliges Sortieren mit reellen Zahlen Schnellere Priority Queues Bucket Queue Radix Heap Organisatorisches
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Prioritätswarteschlangen Maike Buchin 18. und 23.5.2017 Prioritätswarteschlange Häufiges Szenario: dynamische Menge von Objekten mit Prioritäten, z.b. Aufgaben, Prozesse, in der
Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510
Konvexe Hülle Definition konvexe Menge: Für je zwei beliebige Punkte, die zur Menge gehören, liegt auch stets deren Verbindungsstrecke ganz in der Menge. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links),
Sortieren & Co. KIT Institut für Theoretische Informatik
Sortieren & Co KIT Institut für Theoretische Informatik 1 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e n mit s ist Permutation von s e e 1 n für eine Totalordnung ` ' KIT Institut
Algorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen
Suchbäume balancieren
Suchbäume balancieren Perfekte Balance: schwer aufrechtzuerhalten Flexible Höhe O(log n): balancierte binäre Suchbäume. Nicht hier (Variantenzoo). Flexibler Knotengrad: (a,b)-bäume. Grad zwischen a und
Suchen und Sortieren Sortieren. Heaps
Suchen und Heaps (Folie 156, Seite 56 im Skript) Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die letzte Ebene vollständig besetzt ist,
1. Übungsblatt zu Algorithmen II im WS 2011/2012
Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders Moritz Kobitzsch, Dennis Schieferdecker. Übungsblatt zu Algorithmen II im WS 0/0 http://algo.iti.kit.edu/algorithmenii.php
10. Übung Algorithmen I
INSTITUT FÜR THEORETISCHE INFORMATIK 1 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft Institut für Theoretische www.kit.edu Informatik Bäume
Übungsklausur Algorithmen I
Universität Karlsruhe, Institut für Theoretische Informatik Prof. Dr. P. Sanders 26.5.2010 svorschlag Übungsklausur Algorithmen I Hiermit bestätige ich, dass ich die Klausur selbständig bearbeitet habe:
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:
Karlsruher Institut für Technologie. Klausur Algorithmen I
Klausur-ID: Vorname: Matrikelnummer: Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Jörn Müller-Quade 11. April 2018 Klausur Algorithmen I Aufgabe 1. Kleinaufgaben 15 Punkte
Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
Sortieren II / HeapSort Heaps
Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: [email protected] Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php
Übungsklausur Algorithmen I
Jun.-Prof. Hofheinz, Jun.-Prof. Meyerhenke (ITI, KIT) 08.06.2015 Übungsklausur Algorithmen I Aufgabe 1. (Algorithm Engineering) Nennen Sie zwei Konzepte, die Algorithm Engineering im Gegensatz zu theoretischer
Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig
Grundlagen Algorithmen und Datenstrukturen TUM Sommersemester 2011 (2) Dozent: Hanjo Täubig Janosch Maier 3. August 2011 Inhaltsverzeichnis 1 Sortieren 3 1.1 Externes Sortieren..........................
Auswählen nach Rang (Selektion)
Auswählen nach Rang (Selektion) Geg.: Folge X von n Schlüsseln, eine Zahl k mit k n Ges.: ein k-kleinster Schlüssel von X, also den Schlüssel x k für X sortiert als x x 2 L x n trivial lösbar in Zeit O(kn)
Grundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 00
Datenstrukturen und Algorithmen Beispiellösung zu Heimübungsblatt 7. Abbildung 1: Das Array A als Baum (vgl. Foliensatz 16, Folie 3)
Aufgabe 3 a) Wir verwenden zur Lösung den Algorithmus Build-Heap 1, dieser verwendet die Funktion Heapify. Unser Array A ist gegeben durch [7, 10,, 5, 5,, 3, 3, 17]. 10 5 5 3 17 7 Abbildung 1: Das Array
14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum
Heapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays
Heapsort Beispiel für einen eleganten Algorithmus, der auf einer effizienten Datenstruktur (dem Heap) beruht [Williams, 1964] Daten liegen in einem Array der Länge n vor 1. Erstelle aus dem gegebenen Array
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 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit
Heapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
Algorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
4.2 Fibonacci-Heaps Aufbau Potenzialfunktion. Knoten v hat folgende Felder:
4.2 Fibonacci-Heaps 4.2.1 Aufbau Knoten v hat folgende Felder: Vaterzeiger p(v) Zeiger auf linkes Geschwister: prev(v) Zeiger auf rechtes Geschwister: next(v) Kindzeiger: child(v) Schlüssel: key: aus U
Algorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 01/13 6. Vorlesung Prioritäten setzen Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Guten Morgen! Tipps für unseren ersten Test am 0. November: Lesen
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere
Algorithmen II. Peter Sanders. Übungen: Moritz Kobitzsch und Dennis Schieferdecker. Institut für Theoretische Informatik, Algorithmik II.
Sanders: Algorithmen II - 25. November 2011 Algorithmen II Peter Sanders Übungen: Moritz Kobitzsch und Dennis Schieferdecker Institut für Theoretische Informatik, Algorithmik II Web: http://algo2.iti.kit.edu/algorithmenii_ws11.php
Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch
Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch verschiedene Datenstrukturen: lineare Datenstrukturen: Array,
Suchen und Sortieren Sortieren. Heaps
Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Sortierte Folgen Maike Buchin 30.5., 1.6., 13.6.2017 Sortierte Folgen Häufiges Szenario: in einer Menge von Objekten mit Schlüsseln (aus geordnetem Universum) sollen Elemente
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen B4. Priority Queues und Heaps Marcel Lüthi and Gabriele Röger Universität Basel 28. März 2018 Einführung Kollektion von Elementen Grundlegende Operationen sind Einfügen
Sanders / van Stee: Algorithmentechnik November 23, Sortieren & Co
Sanders / van Stee: Algorithmentechnik November 23, 2007 1 5 Sortieren & Co Sanders / van Stee: Algorithmentechnik November 23, 2007 2 Formaler Gegeben: Elementfolge s = e 1,...,e n Gesucht: s = e 1,...,e
Verkettete Listen. KIT Institut für Theoretische Informatik 1
Verkettete Listen KIT Institut für Theoretische Informatik 1 Listenglieder (Items) Class Handle = Pointer to Item Class Item of Element // one link in a doubly linked list e : Element e next : Handle //
Algorithmen I - Tutorium 28 Nr. 2
Algorithmen I - Tutorium 28 Nr. 2 11.05.2017: Spaß mit Invarianten (die Zweite), Rekurrenzen / Mastertheorem und Merging Marc Leinweber [email protected] INSTITUT FÜR THEORETISCHE INFORMATIK
8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.
8. A & D - Heapsort Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können. Genauer werden wir immer wieder benötigte Operationen durch Datenstrukturen unterstützen.
Algorithmen & Komplexität
Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik [email protected] Breitensuche, Tiefensuche Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu
Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume
Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen
Kapitel 8 Fortgeschrittene Sortieralgorithmen
Kapitel 8 Fortgeschrittene Sortieralgorithmen Zur Erinnerung: in Kapitel 6 Elementare Sortierverfahren Sortierverfahren, die auf Vergleichen von Werten basieren. Aufwand zum Sortieren von Feldern von n
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)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
1. Übung Algorithmen I
Timo Bingmann, Christian Schulz INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Timo Universität Bingmann, des LandesChristian Baden-Württemberg Schulz und nationales Forschungszentrum in der
3. Suchen. Das Suchproblem. Suche in Array. Lineare Suche. 1 n. i = n Gegeben Menge von Datensätzen.
Das Suchproblem Gegeben Menge von Datensätzen. 3. Suchen Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle Jeder Datensatz hat einen Schlüssel k. Schlüssel sind vergleichbar: eindeutige Antwort auf
Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:
HeapSort Allgemeines Sortieralgorithmen gehören zu den am häufigsten angewendeten Algorithmen in der Datenverarbeitung. Man hatte daher bereits früh ein großes Interesse an der Entwicklung möglichst effizienter
11. Elementare Datenstrukturen
11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische
Algorithmen I. Sascha Witt Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=799
Algorithmen I Sascha Witt 10.05.2017 Institut für Theoretische Informatik Web: https://crypto.iti.kit.edu/index.php?id=799 (Folien von Peter Sanders) KIT Institut für Theoretische Informatik 1 Erinnerung
Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing
Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing [email protected] www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe
