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)

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "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)"

Transkript

1 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 A wird als MaxHeap verwaltet A[1] entspricht der Wurzel des MaxHeaps Schritt 1: Umwandeln eines Feldes A in einen MAxHeap Schritt 2: Vertausche A[1] (größtes Element) mit A[n] Schritt 3: Feld A[1.. n-1] wieder zum MaxHeap machen: Idee: Teilbaume mit Wurzel A[2] bzw. A[3] sind bereits MaxHeaps, d.h. man muss nicht wieder alles sortieren Vorgehen: MaxHeapify: A[1] sickert nach unten am Ende: A[1] enthält wieder größten Wert weiter wie Schritt 2: Vertausche A[1] mit A[n-1] etc MaxHeapify Algorithmus: Laufzeit: O(log n) AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A) 1. heap-größe [A] = länge [A] 2. for i = länge [A] /2 downto 1 3. do MAX-HEAPIFY (A,i) AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A) 1. heap-größe [A] = länge [A] 2. for i = länge [A] /2 downto 1 3. do MAX-HEAPIFY (A,i) Korrektheit? Schleifeninvariante: Zu Beginn jeder Iteration der for-schleife ist jeder Knoten i + 1, i + 2,, n die Wurzel eines Max-Heaps. Korrektheitsbeweis: Initialisierung: Erste Iteration der for-schleife: i= n/2. Jeder Knoten n/2 +1, n/2 +2,..n ist ein Blatt, d.h. Baum besitzt nur die Wurzel, Max-Heap-Eigenschaft ist erfüllt. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 3 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 4

2 Korrektheitsbeweis: (Forts.) Weitere Iterationen: Für Kind-Knoten von i gilt: Index des Kind-Knotens > i, Wir gehen davon aus, dass die Schleifeninvariante gilt, dann gilt: Beide Kind-Knoten von i sind Wurzeln von Max-Heaps. Damit ist die Vorbedingung für den Aufruf von Max-Heapify(A, i) erfüllt. Beispiel: Feld mit 10 Elementen und zugehöriger Binärbaum (a) Schleifenvariable i = 5, Zeile 3 vor Aufruf von Max-Heapify(A, i) Terminierung: i = 0, Schleifeninvariante gilt; damit gilt, dass jeder Knoten 1, 2, 3,..., n eine Wurzel eines Max-Heaps ist. D.h. insbesondere ist der Knoten mit Index 1 die Wurzel eines Max-Heaps und damit ist der ganze Binärbaum ein Max-Heap. (b) Nach Beendigung des Aufrufs, i = 4, Aufruf von Max-Heapify(A, i) AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 5 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 6 Beispiel (Forts.): (c) (e) Iterationen der for-schleife in Build-Max-Heap (f) Max-Heap nach Terminierung von Build-Max-Heap. Laufzeit von Build-Max-Heap Jeder Aufruf von Max-Heapify erfordert O(log 2 n) Schritte Es gibt O(n) Max-Heapify-Aufrufe. D.h. T build-max-heap (n) = O(n log 2 n). Das ist eine obere Schranke für die Laufzeit. Diese Schranke ist korrekt, aber nicht sehr scharf. Man kann zeigen, dass die Laufzeit von Max-Heapify(A, i) von der Höhe des Knotens mit Index i abhängt. Da die Höhe der meisten Knoten klein ist (das kann man beweisen), kann man beweisen (siehe Cormen S. 132), dass gilt: T build-max-heap (n) = O(n). D.h. zur Berechnung eines Max-Heaps aus einem unsortiertem Feld benötigt man Lineare Zeit. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 7 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 8

3 8.1.4 Put it all together: der Heapsort-Algorithmus Eingabe: Feld A[1..n] n = länge(a) Zeile 1: Nach Terminierung von Build-Max-Heap(A): maximales Element ist in A[1] gespeichert. HEAPSORT (A) 1. BUILD-MAX-HEAP (A) 2. for i = länge [A] downto 2 3. do vertausche A [1] A[i] 4. heap-größe [A] = heap-größe [A] -1 5 MAX-HEAPIFY (A,1) HEAPSORT (A) 1. BUILD-MAX-HEAP (A) 2. for i = länge [A] downto 2 3. do vertausche A [1] A[i] 4. heap-größe [A] = heap-größe [A] -1 5 MAX-HEAPIFY (A,1) Beispiel (Forts.) (b) (j): Max-Heaps nach Zeile 5 (k) Ergebnis: Sortiertes Feld Beispiel: (a) Situation in Zeile 2 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 9 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 10 Laufzeit von Heapsort Aufruf von Build-Max-Heap: O(n) n 1 Aufrufe von Max-Heapify: O(log 2 n) Gesamtlaufzeit: T heapsort (n) = O(n log 2 n) Man kann sogar zeigen: Heapsort kann ein Feld der Länge n mit höchstens 2n log 2 (n) + 7/2 n Vergleichen sortieren. Analyse der Speicherplatzanforderungen: Heapsort benötigt nur den Speicherplatz für die zu sortierenden Daten. Lediglich 4 zusätzliche Variablen (Speicherplätze) werden benötigt. Heapsort arbeitet in-place (man nennt das auch in-situ). AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 11 HeapSort in der Programmiersprache C int heapsort( int * data, int n ) // zu sortierendes Feld und seine Länge { const int WIDTH= 8; // Anzahl der Kinder pro Knoten int val, parent, child, w, max, i; int m= (n + (WIDTH - 2)) / WIDTH; // erstes Blatt im Baum int count= 0; // Zähler für Anzahl der Vergleiche while ( 1 ) { if ( m ) { parent= --m; val= data[parent]; else if ( --n ) { val= data[n]; data[n]= data[0]; parent= 0; else break; // Teil 1: Konstruktion des Heaps // zu versickernder Wert // Teil 2: eigentliche Sortierung // zu versickernder Wert vom Heap-Ende // Spitze des Heaps hinter den Heap in // den sortierten Bereich verschieben // Heap ist leer; Sortierung beendet AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 12

4 HeapSort in der Programmiersprache C while ( (child= parent * WIDTH + 1) < n ) // erstes Kind; { // Abbruch am Ende des Heaps w= n - child < WIDTH? n - child : WIDTH; count += w; // Anzahl der vorhandenen Geschwister for ( max= 0, i= 1; i < w; ++i ) // größtes Kind suchen if ( data[child+i] > data[child+max] ) max= i; child += max; if ( data[child] <= val ) // kein Kind mehr größer als der break; // zu versickernde Wert data[parent]= data[child]; // größtes Kind nach oben rücken parent= child; // in der Ebene darunter weitersuchen data[parent]= val; return count; // versickerten Wert eintragen 8.2 Prioritäts-Warteschlange Motivation: Heap-Konzept zur Organisation von Datenstrukturen Ziel: Sehr effiziente Such-Operationen auf speziell vorsortierten Datenstrukturen: sortiert nach Priorität in einer Warteschlange. Ansatz: Um eine solche Warteschlange effizient aufzubauen und zu verwalten, verwendet man häufig eine Heap-Datenstruktur. Besonderheit: In einer Prio-Warteschlange können Elemente verwaltet werden, deren Werte sich dynamisch ändern (z.b. Prio erhöhen) Definition Eine Prioritäts-Warteschlange ist eine Datenstruktur für die Speicherung einer Menge S von Datenelementen, denen jeweils ein Wert, der Schlüssel, zugeordnet ist. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 13 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 14 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 15 Operationen auf Prioritätswarteschlangen: Basis ist ein Max_Heap Insert(S, x): Einfügen eines Datenelementes in die Prioritätswarteschlange Maximum(S): gibt das Element von S mit dem größten Schlüssel zurück Extract_Max: entfernt das Element mit dem größten Schlüssel aus S und gibt das Element aus Increase-Key(S, x,k): erhöht den Wert des Schlüssels von Element x auf den neuen Wert k, k x Anwendung für Prioritätswarteschlangen: u.a. Scheduling von Simulationsjobs (event-driven simulation) Programm mit höchster Priorität wird gestartet (CPU-Scheduling) Business Class Check-In am Flughafen AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 16

5 Implementierung der Operationen in Pseudo-Code: (1) Implementierung der Operation Maximum in O(1) HEAP-MAXIMUM(A) return(a[1]) Beispiel-Baum Implementierung der Operationen in Pseudo-Code: (Forts.) (2) Implementierung der Operation Extract-Max in O(lgn). HEAP-EXTRACT-MAX (A) 1. if n < 1 2. then error Heap-Unterlauf 3. max = A[1] 4. A[1] = A[n] 5. n = n 1 6. MAX-HEAPIFY (A, 1) 7. return max sei heap-größe[a] = n AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 17 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 18 Implementierung der Operationen in Pseudo-Code (Forts.) (3) Implementierung der Operation Increase-Key in O(log 2 n) HEAP-INCREASE-KEY (A, i, schlüssel) 1. if schlüssel < A[i] 2. then error neuer Schlüssel ist kleiner als der aktuelle Schlüssel 3. A[i] = schlüssel 4. while i > 1 und A[Vater(i)] < A[i] 5. do vertausche A[i] A[Vater(i)] 6. i = Vater(i) AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 19 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren Implementierung der Operationen in Pseudo-Code (Forts.) (4) Implementierung der Operation Insert in O(log 2 n). MAX-HEAP-INSERT (A, schlüssel) 1. n = n A [n] = 3. HEAP-INCREASE-Key (A, n, schlüssel) Fazit : Unter Nutzung der Datenstruktur Heap ist es möglich, jede Operation auf einer Prioritätenwarteschlange mit n Elementen in einer Laufzeit von O(log 2 n) durchzuführen. Der Heap ist eine sehr effiziente Datenstruktur für eine Vielzahl von Anwendungen.

6 8.3 Vergleichsbasiertes Sortieren Frage: Kann man eine untere Schranke Ω für das vergleichsbasierte Sortieren angeben? Antwort: ja, man kann zeigen, dass vergleichende Sortierverfahren im schlechtesten Fall Ω(n log n) Vergleiche benötigen. Beweisidee: Seien n Eingabewerte in einem Feld A gegeben Vergleichende Sortierverfahren können als Entscheidungsbäume interpretiert werden. Definition: Ein Entscheidungsbaum ist ein vollständiger Binärbaum, der die Vergleiche zwischen den Elementen repräsentiert. Entscheidungsbaum: Sei n die Anzahl der Eingaben, also a 1,, a n jeder innere Knoten wird mit i:j annotiert, mit i, j n i:j steht für den Vergleich a i a j der linke Teilbaum des Knotens beschreibt die Vergleiche, wenn gilt a i a j der rechte Teilbaum des Knotens beschreibt die Vergleiche, wenn gilt a i > a j jedes Blatt des Entscheidungsbaums wird mit einer Permutation der Eingabewerte annotiert, d.h. der Entscheidungsbaum zählt alle Permutationen auf. Für n Eingaben gilt: es gibt n! Permutationen der Eingaben AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 21 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 22 Beispiel: Entscheidungsbaum für Sortieren mit Einfügen Eingabe: 3-elementiges Feld A= (6, 8, 5) 3! = 6 verschiedene Permutationen der Eingabefolge sind möglich, d.h. Entscheidungsbaum hat mind. 6 Blätter. Sortiertes Feld: A= (5, 6, 8) Zusammenhang: Entscheidungsbaum und Sortieralgorithmus Eine Ausführung des Sortieralgorithmus A entspricht einem Pfad von der Wurzel des Baums bis zu einem erreichbaren Blatt. D.h. durch die Ausführung wird eine sortierte Permutation erzeugt. Notwendige Bedingung für die Korrektheit eines vergleichsbasierten Sortieralgorithmus A ist: der Algorithmus erzeugt alle möglichen n! Permutationen bei n Eingabewerten; der Entscheidungsbaum hat n! Blätter. Jedes Blatt muss über einen Pfad von der Wurzel aus erreichbar sein, der einer Ausführung von A entspricht (erreichbares Blatt). Für ein Blattknoten der Tiefe d sind d Vergleiche zum Sortieren erforderlich. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 23 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 24

7 Aus dem vorher Gesagten folgt: Für vergleichsbasierte Sortieralgorithmen gilt im schlechtesten Fall: Die Höhe seines Entscheidungsbaums = Anzahl der Vergleiche D.h. Eine untere Schranke für die Höhen aller Entscheidungsbäume, in denen jede Permutation als erreichbares Blatt auftritt, ist eine untere Schranke für die Laufzeit jedes vergleichenden Sortieralgorithmus. Satz: Für jeden vergleichenden Sortieralgorithmus sind im Worst-Case Ω(n log n) Vergleichsoperationen erforderlich. Der Omega-Operator Ω bezeichnet eine untere Schranke, es gilt: Ω(g(n))= { f(n): es existieren Konstanten c, n 0, so dass 0 cg(n) f(n) für alle n n 0 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 25 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren Beweis zu bestimmen ist die Höhe eine Entscheidungsbaums, in dem jede Permutation als Blatt auftritt Sei ein Baum, der einem Sortieralgorithmus für n Elemente entspricht, gegeben, mit der Höhe h und mit r erreichbaren Blättern. jede Permutation entspricht einem Blatt, d.h. es gilt: n! r. Da ein Binärbaum der Höhe h nicht mehr als 2 h Blätter hat, gilt: n! r 2 h d.h. Durch Anwendung von Log gilt : h lg(n!) Zudem gilt: lg(n!) = Θ(n lg n) wg Also gilt: h = Ω(n lg n) Korollar: Merge-Sort und Heap-Sort sind asymptotisch optimale vergleichende Sortierverfahren Sortieren in Linearzeit Hier: Beispiel Bucketsort Bucketsort arbeitet nicht vergleichend, so dass die untere Schranke Ω(n log n) nicht gilt. Bucketsort arbeitet in linearer Zeit, wenn die Eingabewerte unabhängig und gleich verteilt über das Intervall [0, 1) vorliegen. Idee Intervall [0, 1) wird in n gleich große Teilintervalle (Buckets) aufgeteilt n Eingabewerte werden auf die Teilintervalle verteilt. Idee (Forts.) Intervall [0, 1) wird in n gleich große Teilintervalle (Buckets) aufgeteilt n Eingabewerte werden auf die Teilintervalle verteilt. Sortieren der Zahlen in jeden Bucket. Auflisten aller Zahlen aller Buckets gibt die sortierte Folge. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 27 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 28

8 Eingabe: Feld A der Länge n, 0 A[i] < 1 für jedes Feldelement A[i] Bucketsort benötigt ein Hilfs-Feld B[0.. n 1] von verketteten Listen BUCKET-SORT (A) 1 n = länge [A] 2 for i = 1 to n do 3 füge A[i] in die Liste B[ na [i] ] ein 4 for i = 0 to n 1 do 5 sortiere die Liste B[i] durch Sortieren durch Einfügen 6 Hänge die Listen B[0], B[1],., B[n 1] in dieser Reihenfolge hintereinander Beispiel: Eingabefeld A[1.. 10] B[0.. 9] nach Ausführung von Zeile 5 Bucket i enthält Zahlen aus dem Intervall [i/10, (i+1)/10) AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 29 Bucketsort: intuitive Erläuterung Gegeben seien zwei Elemente A[i] und A[j], obda: A[i] A[j]. A[i] und A[j] sind entweder im gleichen Bucket eingeordnet oder A[i] befindet sich in einem Bucket mit kleinerem Index als der von A[j]. Fall1: A[i] und A[j] liegen im gleichen Bucket, dann werden sie durch die Anweisungen in den Zeilen 4-5 sortiert. Fall2: A[i] und A[j] liegen in verschiedenen Buckets, dann werden sie durch die Anweisung in der Zeile 6 sortiert. Laufzeitanalyse von Bucketsort: alle Zeilen, außer Zeile 5, erfordern im Worts-Case O(n)-Schritte Zeile 5: Sortieren durch Einfügen, d.h. Bestimmen der Laufzeit von n Aufrufen von Insertion-Sort. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 30 Insertion-Sort erfordert quadratische Laufzeit O(n 2 ). Sei n i die Zufallsvariable, die die Anzahl der Elemente im Bucket B[i] beschreibt. Damit können wir die Laufzeit von Bucketsort beschreiben durch: Bestimmen der Laufzeit im Mittel, gleichverteilte Werte liegen zugrunde. Durch Bilden der Erwartungswerte erhalten wir: AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 31 Man kann zeigen, dass gilt: (siehe Cormen) Damit erhält man als erwartete Laufzeit von Bucketsort: Θ(n) + n * O(2 1/n) = Θ(n) D.h. die erwartete Laufzeit von Bucketsort ist linear. Fazit: Bucketsort ist sehr schnell, benötigt aber zusätzlichen Speicher (out-of-place) und der Wertebereich der zu sortierenden Zahlen muss begrenzt sein. Zudem müssen die Werte unabhängig und gleich verteilt sein. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 32

9

Technische Universität München

Technische Universität München 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

Mehr

Kapitel 8 Fortgeschrittene Sortieralgorithmen

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

Mehr

Algorithmen und Datenstrukturen Heapsort

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

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach

Mehr

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

Mehr

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. 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.

Mehr

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

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

Mehr

2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,..., a n 2, 1, 3 Sortieralg. Für festes n ist ein vergleichsbasierter Sortieralg. charakterisiert

2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,..., a n 2, 1, 3 Sortieralg. Für festes n ist ein vergleichsbasierter Sortieralg. charakterisiert 1 Algorithmen und Datenstrukturen Wintersemester 2014/15 9. Vorlesung Sortieren in Linearzeit Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,...,

Mehr

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

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Heaps. Vorlesung 8: Heapsort (K6) Joost-Pieter Katoen. 7. Mai 2015 Datenstrukturen und Algorithmen Vorlesung 8: (K6) 1 Joost-Pieter Katoen Lehrstuhl für Informatik Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 7. Mai 015 3 Joost-Pieter

Mehr

Kapitel 6 Elementare Sortieralgorithmen

Kapitel 6 Elementare Sortieralgorithmen Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine

Mehr

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). 8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame

Mehr

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Team A blau Martin Herfurth 11043831 Markus Wagner 11043447 5. Februar 2007 1 1 Untere Schranke für Vergleichsbasierte Algorithmen

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Übung Algorithmen und Datenstrukturen

Ü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

Mehr

Kapitel 3: Sortierverfahren Gliederung

Kapitel 3: Sortierverfahren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

Mehr

Motivation Überblick

Motivation Überblick Kap. ff: Untere Laufzeitschranke und Lineare Verfahren Professor Dr. Lehrstuhl für Algorithm Engineering, LS Fakultät für Informatik, TU Dortmund 8. VO DAP SS 009. Mai 009. Übungstest Termin: Di 9. Mai

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Heaps Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 469 Prioritätswarteschlange Problem Häufig ist das Prinzip einer einfachen Warteschlangen-Datenstruktur

Mehr

Untere Schranke für allgemeine Sortierverfahren

Untere Schranke für allgemeine Sortierverfahren Untere Schranke für allgemeine Sortierverfahren Prinzipielle Frage: wie schnell kann ein Algorithmus (im worst case) überhaupt sein? Satz: Zum einer Folge von n Keys mit einem allgemeinen Sortierverfahren

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen A7. Sortieren III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 Untere Schranke Sortierverfahren Sortieren Vergleichsbasierte Verfahren Nicht vergleichsbasierte

Mehr

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Ziel: Kurze Einführung in den Pseudocode zur Beschreibung von Algorithmen Induktionsbeweise als wichtiges Hilfsmittel, um die Korrektheit eines Algorithmus

Mehr

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

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

Mehr

Heapsort, Quicksort, Mergesort. 8. Sortieren II

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:

Mehr

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren . Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen

Mehr

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen 3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem Eingabe: Folge von n natürlichen Zahlen a 1, a 2,, a n, die Folge

Mehr

Untere Schranke für allgemeine Sortierverfahren

Untere Schranke für allgemeine Sortierverfahren Untere Schranke für allgemeine Sortierverfahren Prinzipielle Frage: wie schnell kann ein Algorithmus (im worst case) überhaupt sein? omputational Model hier: RAM und nur Vergleiche auf Elemente Sog. "comparison-based

Mehr

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7. Algorithmen und Datenstrukturen 14. März 2018 A7. III Algorithmen und Datenstrukturen A7. III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 A7.1 Untere Schranke A7.2 Quicksort A7.3 Heapsort

Mehr

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt. Bucketsort Beispiel Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt 1 2 A.78.17 0 1 B.12.17 Sonst: Skalieren ( Aufwand O(n) ) 3.39 2.21.23.26 Idee:

Mehr

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

Mehr

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2 Jan Pöschko 18. Januar 2007 Inhaltsverzeichnis 1 Problemstellung 2 1.1 Definition................................... 2 1.2 Warum Sortieren?.............................. 2 2 Einfache Sortieralgorithmen

Mehr

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

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen

Mehr

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

(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016 (Digital) Sorting October 2, 2016 Algorithms & Datastructures 2 Exercises WS 2016 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz kurz@pervasive.jku.at

Mehr

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik Foliensatz 15 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 16 Untere Schranken für das Vergleichsbasierte Sortieren TU

Mehr

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

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown Kap. Sortieren..5 HeapSort ff..6 Priority Queues Professor Dr. Vorlesung am Do 7.5. entfällt wegen FVV um Uhr Lehrstuhl für Algorithm Engineering, LS Fakultät für nformatik, TU Dortmund 7. VO DAP SS 009

Mehr

Komplexität von Algorithmen:

Komplexität von Algorithmen: Komplexität von Algorithmen: Ansatz: Beschreiben/erfassen der Komplexität über eine Funktion, zur Abschätzung des Rechenaufwandes abhängig von der Größe der Eingabe n Uns interessiert: (1) Wie sieht eine

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Vorstellen des vierten Übungsblatts 2. Vorbereitende Aufgaben für das vierte Übungsblatt

Mehr

Abschnitt 19: Sortierverfahren

Abschnitt 19: Sortierverfahren Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758

Mehr

Kapitel 2: Sortier- und Selektionsverfahren Gliederung

Kapitel 2: Sortier- und Selektionsverfahren Gliederung Gliederung 1. Laufzeit von Algorithmen 2. Sortier- und Selektionsverfahren 3. Paradigmen des Algorithmenentwurfs 4. Ausgewählte Datenstrukturen 5. Algorithmische Geometrie 6. Randomisierte Algorithmen

Mehr

Kapitel 2. Sortieren. Adressenverwaltung (lexikographisch) Treerlisten bei Suchanfragen (Relevanz) Verdeckung (z-koordinate) ...

Kapitel 2. Sortieren. Adressenverwaltung (lexikographisch) Treerlisten bei Suchanfragen (Relevanz) Verdeckung (z-koordinate) ... Kapitel 2 Sortieren Das Sortieren ist eines der grundlegenden Probleme in der Informatik. Es wird geschätzt, dass mehr als ein Viertel aller kommerzieller Rechenzeit auf Sortiervorgänge entfällt. Einige

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 6. Vorlesung Martin Middendorf / Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Merge-Sort Anwendbar für

Mehr

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

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. 2. Grundlagen Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. 1 Beispiel Minimum-Suche Eingabe bei Minimum

Mehr

7 Sortieren in linearer Zeit

7 Sortieren in linearer Zeit lgorithmen und Datenstrukturen Sortieren in linearer Zeit Wie schnell ist Sortieren möglich? isher: verschiedene lgorithmen, welche n Zahlen in O(n log n) Zeit sortieren. Gemeinsamkeit: Sortierung beruht

Mehr

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist. Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Jonathan Heinen, Thomas Ströder, Sabrina von Styp Aufgabe 1 (O-Notation): Beweisen oder widerlegen Sie die folgenden Aussagen: (3 + 3 + 4 = 10 Punkte)

Mehr

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Kapitel 2. Weitere Beispiele Effizienter Algorithmen Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte

Mehr

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

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

Mehr

Vorlesung Datenstrukturen

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

Mehr

Suchen und Sortieren Sortieren. Heaps

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind

Mehr

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

Technische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe

Mehr

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle 119 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Exponentielle Suche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 120 Das Suchproblem Gegeben

Mehr

11. Elementare Datenstrukturen

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

Mehr

Adnan Kadric Kevin Kandler Seminararbeit Sommersemester 2017

Adnan Kadric Kevin Kandler Seminararbeit Sommersemester 2017 Adnan Kadric 56821 Kevin Kandler 57274 Seminararbeit Sommersemester 2017 1 Contents 1 Einleitung 3 1.1 Sortieren in Linearer Zeit.................... 3 1.1.1 Untere Schranke für das Sortieren...........

Mehr

Algorithms & Data Structures 2

Algorithms & Data Structures 2 Algorithms & Data Structures Digital Sorting WS B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz) WIEDERHOLUNG :: UNTERE SCHRANKE FÜR SORTIEREN

Mehr

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Aufgabe (Schreibtischtest, Algorithmenanalyse) Aufgabe (Schreibtischtest, Algorithmenanalyse) Führen Sie einen Schreibtischtest für den Algorithmus Positionsort für das folgende Eingabe-Array durch. Geben Sie nach jedem Durchlauf der for-schleife mit

Mehr

Tutoraufgabe 1 (Sortieralgorithmus):

Tutoraufgabe 1 (Sortieralgorithmus): Prof. aa Dr. Ir. Joost-Pieter Katoen Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung 4 (Abgabe 2..2) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Sortieralgorithmus):

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Algorithmen und Programmieren II Sortieralgorithmen imperativ Teil I Prof. Dr. Margarita Esponda Freie Universität Berlin Sortieralgorithmen Bubble-Sort Insert-Sort Selection-Sort Vergleichsalgorithmen

Mehr

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array Das Suchproblem Gegeben. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.-3,2.2-3,2.3-] Menge von Datensätzen. Beispiele

Mehr

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

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe

Mehr

Kapitel 9 Suchalgorithmen

Kapitel 9 Suchalgorithmen Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr

7. Übung zu Algorithmen I 1. Juni 2016

7. Übung zu Algorithmen I 1. Juni 2016 7. Übung zu Algorithmen I 1. Juni 2016 Lukas Barth lukas.barth@kit.edu (mit Folien von Lisa Kohl) Roadmap Ganzzahliges Sortieren mit reellen Zahlen Schnellere Priority Queues Bucket Queue Radix Heap Organisatorisches

Mehr

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle 122 4. Suchen Lineare Suche, Binäre Suche, Interpolationssuche, Untere Schranken [Ottman/Widmayer, Kap. 3.2, Cormen et al, Kap. 2: Problems 2.1-3,2.2-3,2.3-5] 123 Das Suchproblem Gegeben Menge von Datensätzen.

Mehr

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

Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik Tag 17 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 08.09.2009 Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume:

Mehr

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/07 2 Sortieren Untersuchungen haben gezeigt, dass mehr als ein Viertel der kommerziell verbrauchten Rechenzeit auf Sortiervorgänge entfällt. Sortierproblem Gegeben ist eine Folge F von Datensätzen (engl.:

Mehr

Priority Queues and Heapsort

Priority Queues and Heapsort 19. ovember 2012 Prioritätswarteschlangen und Priority Queues and Ferd van denhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software ngineering 19. ovember 2012 D/FHTBM Priority Queues and 19.

Mehr

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

Informatik II Vorlesung am D-BAUG der ETH Zürich Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

10. Sortieren III. Untere Schranken für das vergleichsbasierte Sortieren, Radix- und Bucketsort

10. Sortieren III. Untere Schranken für das vergleichsbasierte Sortieren, Radix- und Bucketsort 280 10. Sortieren III Untere Schranken für das vergleichsbasierte Sortieren, Radix- und Bucketsort 281 10.1 Untere Grenzen für Vergleichbasiertes Sortieren [Ottman/Widmayer, Kap. 2.8, Cormen et al, Kap.

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

NAME, VORNAME: Studiennummer: Matrikel:

NAME, VORNAME: Studiennummer: Matrikel: TU Ilmenau, Fakultat IA Institut für Theoretische Informatik FG Komplexitätstheorie und Effiziente Algorithmen Prof. Dr. (USA) M. Dietzfelbinger Klausur Algorithmen und Datenstrukturen SS08, Ing.-Inf.

Mehr

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

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18 EINI LogWing/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 17/18 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

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

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung

Mehr

, i =, i 2 = 1 2. f (n)

, i =, i 2 = 1 2. f (n) Laufzeitanalyse Einige Formeln: n c i = cn+1 n n 1 c 1, für c 1 n(n + 1), i =, i = 1 i=0 i=0 3 n3 + 1 n + 1 6 n i=0 O-Notation: f = O(g) c > 0 n 0 > 0 n n 0 : f (n) c g(n) f = Ω(g) g = O( f ) f = Θ(g)

Mehr

13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

13 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 13 (2-4)-Bäume (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 2. Die Ordnung (maximale Anzahl der Söhne eines Knotens) ist gleich 4 3. Innere Knoten haben 2 Söhne

Mehr

in eine Folge ai, so daß bezgl. einer Ordnung gilt: a a, j < n

in eine Folge ai, so daß bezgl. einer Ordnung gilt: a a, j < n 6. Sortieren Umordnen von Objekten a in eine Folge ai,..., ai n, so daß bezgl. einer Ordnung gilt: a a, j < n Begriffe: ij i j + ) Stabilität : Ein Sortierverfahren heißt stabil, falls die relative Reihenfolge

Mehr

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) : 2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden! Albert-Ludwigs-Universität Institut für Informatik Prof. Dr. F. Kuhn Informatik II: Algorithmen & Datenstrukturen Montag, 29. August, 2014, 14:00 17:00 Name:...........................................................

Mehr

Programmiertechnik II

Programmiertechnik II 2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität

Mehr

(08 - Einfache Sortierverfahren)

(08 - Einfache Sortierverfahren) Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Dr. Susanne Albers Sortieren Motivation, Einführung Datenbestände müssen sehr oft sortiert werden, etwa um

Mehr

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik Humboldt-Universität zu Berlin Berlin, den 15.06.2015 Institut für Informatik Prof. Dr. Ulf Leser Übungen zur Vorlesung M. Bux, B. Grußien, J. Sürmeli, S. Wandelt Algorithmen und Datenstrukturen Übungsblatt

Mehr

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert 4.3.6 QuickSort QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert QuickSort teilt das gegebene Array anhand

Mehr

Algo-Animation. Konstruktion der Partition: eigentliche Kunst / Arbeit bei Quicksort. Resultat: Partition A=A 1 WA 2 A 1 W A 2.

Algo-Animation. Konstruktion der Partition: eigentliche Kunst / Arbeit bei Quicksort. Resultat: Partition A=A 1 WA 2 A 1 W A 2. Algo-Animation Konstruktion der Partition: eigentliche Kunst / Arbeit bei Quicksort 1. Wahl eines Elementes W im Array (heißt Pivot-Element) 2. Suchen eines i von links mit A[i]>W 3. Suchen eines j von

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

4. Sortieren 4.1 Vorbemerkungen

4. Sortieren 4.1 Vorbemerkungen . Seite 1/21 4. Sortieren 4.1 Vorbemerkungen allgemeines Sortierproblem spezielle Sortierprobleme Ordne a 1,..., a n so um, dass Elemente in aufsteigender Reihenfolge stehen. Die a i stammen aus vollständig

Mehr

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

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2016/17 13. Vorlesung Binäre Suchbäume Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Dynamische Menge verwaltet Elemente einer sich ändernden Menge

Mehr

Informatik B Sommersemester Musterlösung zur Klausur vom

Informatik B Sommersemester Musterlösung zur Klausur vom Informatik B Sommersemester 007 Musterlösung zur Klausur vom 0.07.007 Aufgabe : Graphen und Graphalgorithmen + + + () Punkte Für eine beliebige positive, ganze Zahl n definieren wir einen Graphen G n =

Mehr

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

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4.8-4.11: Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.6 AVL-Bäume 4.8 Rot-Schwarz-Bäume Idee: Verwende Farben, um den Baum vertikal zu

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

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

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 1 für die Übung

Mehr

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

Wiederholung. Datenstrukturen und. Bäume. Wiederholung. Suchen in linearen Feldern VO Wiederholung Datenstrukturen und Algorithmen VO 708.031 Suchen in linearen Feldern Ohne Vorsortierung: Sequentielle Suche Speicherung nach Zugriffswahrscheinlichkeit Selbstanordnende Felder Mit Vorsortierung:

Mehr

3. Musterlösung. Problem 1: Heapsort

3. Musterlösung. Problem 1: Heapsort Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 05/06 ITI Wagner 3. Musterlösung Problem : Heapsort ** 2 3 4 5 Algorithmus : Heapsort (A) Eingabe : Array A der Länge n Ausgabe : Aufsteigend

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 11. Übung Verkettete Listen, Sortieren Insertionsort, Mergesort, Radixsort, Quicksort Clemens Lang Übungen zu AuD 19. Januar 2010 Clemens Lang (Übungen zu AuD) Algorithmen

Mehr

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!! Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund Überblick Einführung in das Sortierproblem Insertion-Sort Selection-Sort Merge-Sort 4. VO

Mehr

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen. Aufgabe 8 Betrachten Sie den folgenden Algorithmus namens Bubble-Sort. Bubble-Sort(A[1..n]): 1 for i 1 to length(a) 1 2 do for j length(a) downto i + 1 3 do if A[j 1] > A[j] 4 then A[j 1] A[j] 1 Arbeitsweise

Mehr