Technische Universität München

Größe: px
Ab Seite anzeigen:

Download "Technische Universität München"

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 1

2 8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) Technische Universität München 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 2

3 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 3

4 8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], Korrektheit? n = länge(a) Technische Universität München 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. 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 4

5 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. 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. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 5

6 Beispiel: Feld mit 10 Elementen und zugehöriger Binärbaum (a) Schleifenvariable i = 5, Zeile 3 vor Aufruf von Max-Heapify(A, i) (b) Nach Beendigung des Aufrufs, i = 4, Aufruf von Max-Heapify(A, i) AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 6

7 Beispiel (Forts.): (c) (e) Iterationen der for-schleife in Build-Max-Heap (f) Max-Heap nach Terminierung von Build-Max-Heap. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 7

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

9 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) Beispiel: (a) Situation in Zeile 2 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 9

10 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 Technische Universität München (k) Ergebnis: Sortiertes Feld AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 10

11 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

12 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 ) { // Teil 1: Konstruktion des Heaps parent= --m; val= data[parent]; // zu versickernder Wert } else if ( --n ) { // Teil 2: eigentliche Sortierung val= data[n]; // zu versickernder Wert vom Heap-Ende data[n]= data[0]; // Spitze des Heaps hinter den Heap in parent= 0; // den sortierten Bereich verschieben } else // Heap ist leer; Sortierung beendet break; AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 12

13 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; // Anzahl der vorhandenen Geschwister Technische Universität München count += w; 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; // versickerten Wert eintragen } return count; } AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 13

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

15 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 15

16 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

17 Implementierung der Operationen in Pseudo-Code: (1) Implementierung der Operation Maximum in O(1) HEAP-MAXIMUM(A) return(a[1]) Technische Universität München Beispiel-Baum AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 17

18 Implementierung der Operationen in Pseudo-Code: (Forts.) (2) Implementierung der Operation Extract-Max in O(lgn). HEAP-EXTRACT-MAX (A) sei heap-größe[a] = n 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 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 18

19 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

20 AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren Technische Universität München 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.

21 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. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 21

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

23 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) AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 23

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

25 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

26 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. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 26

27 8.4 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. AuD, WS10/11, C. Eckert, Kapitel 8 Fortgeschrittene Sortierverfahren 27

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

29 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

30 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

31 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

32 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

33

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ü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

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

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

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

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

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

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

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

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

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

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

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

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

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

Kapitel : Andere dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2013/14. Prof. Dr. Sándor Fekete Kapitel 4.8-4.11: Andere dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2013/14 Prof. Dr. Sándor Fekete 1 4.6 AVL-Bäume 2 4.8 Rot-Schwarz-Bäume Rudolf Bayer Idee: Verwende Farben, um den

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

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

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

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Sortieren und Suchen. Kapitel II. Sortieren und Suchen

Sortieren und Suchen. Kapitel II. Sortieren und Suchen Kapitel II Sortieren und Suchen 43 Inhalt Kapitel II 1 Heapsort Heaps Operationen auf Heaps 2 Prioritätsschlangen 3 Quicksort Randomisiertes Quicksort 4 Vergleichskomplexität 5 Median und Selektion 44

Mehr

Lineare Kongruenzgeneratoren und Quicksort

Lineare Kongruenzgeneratoren und Quicksort Seminar Perlen der theoretischen Informatik Dozenten: Prof. Johannes Köbler und Olaf Beyersdorff Lineare Kongruenzgeneratoren und Quicksort Ausarbeitung zum Vortrag Mia Viktoria Meyer 12. November 2002

Mehr

Komplexität von Algorithmen OOPM, Ralf Lämmel

Komplexität von Algorithmen OOPM, Ralf Lämmel Ganz schön komplex! Komplexität von Algorithmen OOPM, Ralf Lämmel 885 Motivierendes Beispiel Algorithmus Eingabe: ein Zahlen-Feld a der Länge n Ausgabe: Durchschnitt Fragen: sum = 0; i = 0; while (i

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Aufgabe 2 Konstruktion von Binärbäumen Tafelübung

Aufgabe 2 Konstruktion von Binärbäumen Tafelübung Übungen zu Algorithmik I Wintersemester 004/05 Prof. Dr. Herbert Stoyan, Dr.-Ing. Bernd Ludwig Aufgabenblatt 11 (Lösungen) vom 10.01.005 Aufgabe 1 Binärbäume 8 Punkte 1. Alle Antworten können unmittelbar

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten)

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten) Vorlesung Informatik 2 Algorithmen und Datenstrukturen (25 Sortieren vorsortierter Daten) 1 Untere Schranke für allgemeine Sortierverfahren Satz Zum Sortieren einer Folge von n Schlüsseln mit einem allgemeinen

Mehr

14. Rot-Schwarz-Bäume

14. Rot-Schwarz-Bäume Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 10 (27.5.2016) Binäre Suchbäume II Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

Übung Algorithmen und Datenstrukturen

Ü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:

Mehr

Algorithmen und Datenstrukturen I Grundlagen

Algorithmen und Datenstrukturen I Grundlagen Algorithmen und Datenstrukturen I Grundlagen Prof. Dr. Oliver Braun Letzte Änderung: 01.11.2017 14:15 Algorithmen und Datenstrukturen I, Grundlagen 1/24 Algorithmus es gibt keine präzise Definition Handlungsvorschrift

Mehr

Übung Algorithmen I

Übung Algorithmen I Übung Algorithmen I 18.5.16 Lukas Barth lukas.barth@kit.edu (Mit Folien von Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Roadmap Sortieren Kleine Wiederholung Visualisierungen Adaptives

Mehr

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

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: Mengen n Ziel: Aufrechterhalten einer

Mehr

1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung

1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G Studie zum Arbeitsverhalten von Studierenden unter Leitung Organisatorisches Algorithmen und Datenstrukturen Kapitel 3: Divide & Conquer Frank Heitmann heitmann@informatik.uni-hamburg.de 1 Raumwechsel: Gr. 15 (Do 10-12, F-235) ab sofort in G-021. 2 Studie zum

Mehr

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

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

Sortieralgorithmen. Direkte Sortierverfahren & Shellsort, Quicksort, Heapsort. Vorlesung Algorithmen und Datenstrukturen 2 im SS 2004

Sortieralgorithmen. Direkte Sortierverfahren & Shellsort, Quicksort, Heapsort. Vorlesung Algorithmen und Datenstrukturen 2 im SS 2004 Sortieralgorithmen Direkte Sortierverfahren & Shellsort, Quicksort, Heapsort Vorlesung Algorithmen und Datenstrukturen 2 im SS 2004 Prof. Dr. W. P. Kowalk Universität Oldenburg Algorithmen und Datenstrukturen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 2 Sortieren Version vom: 7. Dezember 2016 1 / 94

Mehr

Musterlösungen zu Datenstrukturen und Algorithmen SS 2005 Blatt 2, Aufgabe 3 Wir schreiben zunächst alle Funktionen zur Basis 2.

Musterlösungen zu Datenstrukturen und Algorithmen SS 2005 Blatt 2, Aufgabe 3 Wir schreiben zunächst alle Funktionen zur Basis 2. Prof. Dr. Johannes Blömer Paderborn, den. August 005 Musterlösungen zu Datenstrukturen und Algorithmen SS 005 Blatt, Aufgabe 3 Wir schreiben zunächst alle Funktionen zur Basis. Dann erhalten wir 3 n log(n)

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Prioritätswarteschlangen Mariano Zelke Datenstrukturen 2/28 Der abstrakte Datentyp Prioritätswarteschlange : Füge Elemente (mit Prioritäten) ein und entferne

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch

Mehr

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern Datenstrukturen und Algorithmen 7. Suchen in linearen Feldern VO 708.031 Suchen in linearen Feldern robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische

Mehr

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

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen. Linken von Bäumen: Zwei Bäume desselben Wurzel-Rangs werden unter Einhaltung der Heap-Bedingung verbunden. Sind k 1 und k 2 die Wurzeln der zwei zu linkenden Bäume, so wird ein neuer Baum aufgebaut, dessen

Mehr

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

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/3, Folie 1 2010 Prof. Steffen Lange - HDa/FbI

Mehr

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

Übungsblatt 4. Aufgabe 1. IN8009 Algorithmen und Datenstrukturen Thomas Stibor

Übungsblatt 4. Aufgabe 1. IN8009 Algorithmen und Datenstrukturen Thomas Stibor Aufgabe 1 Zeigen Sie 2n 2 = O(n 3 ), n = Ω(lgn), n 2 /2 2n = Θ(n 2 ). Übungsblatt 4 Zu zeigen: 2n 2 = O(n 3 ). O(g(n)) = {f(n) : es existieren positive Konstanten c und n 0, sodass 0 f(n) cg(n) für alle

Mehr

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

Mergeable Heaps. C. Komusiewicz 7.1 Fibonacci-Heaps: Überblick 117 C. Komusiewicz 7.1 Fibonacci-Heaps: Überblick 117 Mergeable Heaps Erweiterung von Standardheaps, die die folgenden fünf Operationen unterstützen. Make-Heappq liefert neuen, leeren Heap. InsertpH, xq fügt

Mehr