Algorithmen und Datenstrukturen

Ähnliche Dokumente
Suchen und Sortieren Sortieren. Mergesort

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.

Abschnitt: Algorithmendesign und Laufzeitanalyse

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

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

Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Sortieren & Co. KIT Institut für Theoretische Informatik

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

Algorithmen I - Tutorium 28 Nr. 2

Übung Algorithmen und Datenstrukturen

Heapsort, Quicksort, Mergesort. 8. Sortieren II

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

Kap. 3: Sortieren (3)

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1

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

Grundlagen: Algorithmen und Datenstrukturen

Übung Algorithmen I

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Asymptotische Laufzeitanalyse: Beispiel

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

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

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Kapitel 6 Elementare Sortieralgorithmen

Übersicht. Datenstrukturen und Algorithmen. Divide-and-Conquer. Übersicht. Vorlesung 9: Quicksort (K7)

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

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Divide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen

Übung zur Vorlesung Diskrete Strukturen I

Übersicht. Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren. 6 Sortieren.

Informatik II, SS 2016

Algorithmen und Datenstrukturen

Informatik II, SS 2014

Übersicht. Berechnung der Potenz für zwei ganze Zahlen Klausuraufgabe SS 2010! Berechnung der Cosinus-Funktion Klausuraufgabe WS 2010/2011!

INSERTION-SORT: Ja, Es wird immer das erste, kleinste Element an die neue Liste angehängt.

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen

Auswählen nach Rang (Selektion)

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

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

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

Das Divide - and - Conquer Prinzip. Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide and Conquer - Closest-Pair - Segmentschnitt

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

Übung Algorithmen und Datenstrukturen

Übungen zu Algorithmentechnik WS 09/10

Tutoraufgabe 1 (Sortieralgorithmus):

Kap. 3: Sortieren. 4. VO DAP2 SS April 2009

Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50

Datenstrukturen und Algorithmen. Christian Sohler FG Algorithmen & Komplexität

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Informatik II, SS 2018

Übungsklausur Algorithmen I

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

4. Sortieren 4.1 Vorbemerkungen

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

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

6 Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1-1. Seminar -

Range-Search. Operationen: Welche Datenstrukturen sind geeignet? Arrays? Listen? AVL-Bäume? Splay-Bäume?

Proseminar Effiziente Algorithmen

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

Übung: Algorithmen und Datenstrukturen SS 2007

Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT)

Grundlagen Theoretischer Informatik 3 SoSe 2012 in Trier. Henning Fernau Universität Trier

Quicksort ist ein Divide-and-Conquer-Verfahren.

Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen (SS 2013)

Algorithmentheorie Randomisierung. Robert Elsässer

Erinnerung VL vom

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

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

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Datenstrukturen und Algorithmen (SS 2013)

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

Übersicht. Datenstrukturen und Algorithmen. Die Teile-und-Beherrsche-Methode. Übersicht. Vorlesung 3: Rekursionsgleichungen (K4)

Übungsklausur Algorithmen I

16. All Pairs Shortest Path (ASPS)

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp

Algorithmen und Datenstrukturen

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

Datenstrukturen & Algorithmen

Übung Algorithmen und Datenstrukturen

Algorithmen & Komplexität

Algorithmen und Datenstrukturen

Informatik II, SS 2016

Algorithmen & Komplexität

Übungsklausur Algorithmen I

Transkript:

Algorithmen und Datenstrukturen Große Übung #6 Phillip Keldenich, Arne Schmidt 26.02.2017

Heute: Master-Theorem Phillip Keldenich, Arne Schmidt Große Übung 2

Vorbetrachtungen Wir betrachten rekursive Gleichungen der Form T (n) = m T (α i n) + Θ(n k ) D.h. wir haben ein Problem, welches wir in m Teilprobleme unterteilen. Um diese Teilprobleme zu konstruieren und zum Schluss wieder zusammenzuführen benötigen wir Θ(n k ) Zeit. Phillip Keldenich, Arne Schmidt Große Übung 3

Mergesort Als Beispiel dient Mergesort: function Mergesort(A, p, r) if p < r then q p+r 2 Mergesort(A, p, q) Mergesort(A, q + 1, r) Merge(A, p, q, r) end if end function Wir erhalten die folgende Rekursionsgleichung: T (n) = 2T ( n 2 ) + Θ(n) Dass T (n) Θ(n log n) gilt, wurde bereits in der Vorlesung per Induktion gezeigt. Wir wollen die Laufzeit nun anders beweisen. Phillip Keldenich, Arne Schmidt Große Übung 4

Master-Theorem Satz Sei T : N R eine Funktion mit T (n) = m α i R, 0 < α i < 1, m N und k R. Dann ist: Θ(n k ) T (n) Θ(n k log n) T (α i n) + Θ(n k ) mit, für m αk i < 1, für m αk i = 1 Θ(n c ), mit m αc i = 1, für m αk i > 1 Phillip Keldenich, Arne Schmidt Große Übung 5

Mergesort Konkret bei Mergesort: T (n) = 2T ( n 2 ) + Θ(n) Wir haben also m = 2, k = 1 und α 1 = α 2 = 1 2 Da α1 1 + α2 2 = 2 1 2 = 1, folgt nach dem Master-Theorem (Fall 2), dass T (n) Θ(n log n) Phillip Keldenich, Arne Schmidt Große Übung 6

Weitere Beispiele (1) U(n) = 13 U( n 4 ) + 27n3 + 27 U( n 16 ) + 13n Wir sehen: m = 40, k = 3, α 1 = = α 13 = 1 4 und α 14 = = α 40 = 1 16 Wir rechnen 40 α 3 i = 13 ( ) 1 3 ( ) 1 3 + 27 = 13 4 16 64 + 27 256 16 < 1 2 + 1 2 = 1 Also ist U(n) Θ(n 3 ) (Fall 1 des Master-Theorems) Phillip Keldenich, Arne Schmidt Große Übung 7

Weitere Beispiele (2) V (n) = 8 V ( n 4 ) + 18 V (n 6 ) + 7n2 + n log n + 5 Wir sehen: m = 26, k = 2, α 1 = = α 8 = 1 4 und α 9 = = α 26 = 1 6 Wir rechnen 26 α 2 i = 8 ( ) 1 2 + 18 4 ( ) 1 2 = 8 6 16 + 18 36 = 1 Also ist V (n) Θ(n 2 log n) (Fall 2 des Master-Theorems) Phillip Keldenich, Arne Schmidt Große Übung 8

Weitere Beispiele (3) W (n) = 9 W ( n 3 ) + 8n + 486 W (n 9 ) + 21 Wir sehen: m = 495, k = 1, α 1 = = α 9 = 1 3 und α 10 = = α 495 = 1 495 9. Wir rechnen α i = 9 1 3 + 486 1 6 > 1 3. Fall des Master-Theorems. Wir suchen also nach dem c: 495 αi c 1 = 1 9 3 c + 486 1 6 c = 1 9 3 c (1 + 54 1 3 c ) = 1 Also ist W (n) Θ(n 3 ) 1 + 54 1 3 c = 3c 9 c = 3 Phillip Keldenich, Arne Schmidt Große Übung 9

Weitere Beispiele (4) S(n) = 16 S( n 2 ) + n2 + 15n log n Wir sehen: m = 16, k = 2, α 1 = = α 16 = 1 2. Wir rechnen 16 αi 2 = 16 ( 1 2 2) > 1 3. Fall des Master-Theorems. Wir suchen also nach dem c: 16 Also ist S(n) Θ(n 4 ) α c i = 1 16 1 2 c = 1 2c = 16 c = 4 Phillip Keldenich, Arne Schmidt Große Übung 10

Quicksort - Worst Case Betrachten wir nun Quicksort: function Quicksort(A, p, r) if p < r then q Partition(A, p, r) Quicksort(A, p, q 1) Quicksort(A, q + 1, r) end if end function Ist das Master-Theorem direkt anwendbar? Nein! Dafür müsste man wissen, in welchem Verhältnis das Array geteilt wird. Im schlimmsten Fall wäre: T (n) = T (n 1) + Θ(n) Phillip Keldenich, Arne Schmidt Große Übung 11

Quicksort - Best Case Betrachten wir nun Quicksort: function Quicksort(A, p, r) if p < r then q Partition(A, p, r) Quicksort(A, p, q 1) Quicksort(A, q + 1, r) end if end function Im besten Fall wäre: T (n) = 2 T ( n 2 ) + Θ(n) Wie bei Mergesort liefert das Master-Theorem die Laufzeit Θ(n log n) Phillip Keldenich, Arne Schmidt Große Übung 12

Quicksort - Partition Betrachten wir Quicksort genauer: function Partition(A, p, r) x A[r] i p 1 for j p to r 1 do if A[j] x then i i + 1 vertausche A[i] und A[j] end if end for vertausche A[i + 1] und A[r] return i + 1 end function Phillip Keldenich, Arne Schmidt Große Übung 13

Quicksort - Partition Ein Beispiel: A = [5, 7, 4, 9, 1, 3, 8, 2, 6] Aufruf: Partition(A, 1, 9): x = 6, i = 0. Start der for-schleife: j = 1: 5 6 i = 1, tausche A[1] und A[1] j = 2: 7 6 j = 3: 4 6 i = 2, tausche A[2] und A[3] j = 4: 9 6 j = 5: 1 6 i = 3, tausche A[3] und A[5] j = 6: 3 6 i = 4, tausche A[4] und A[6] j = 7: 8 6 j = 8: 2 6 i = 5, tausche A[5] und A[8] Wir erhalten: A = [5, 4, 1, 3, 2, 6, 8, 7, 9] Phillip Keldenich, Arne Schmidt Große Übung 14