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)

Ü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

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

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

Grundlagen: Algorithmen und Datenstrukturen

Übung Algorithmen I

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

Asymptotische Laufzeitanalyse: Beispiel

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

Kapitel 6 Elementare Sortieralgorithmen

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.

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

Algorithmen und Datenstrukturen II

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.

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

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

Ü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

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1-1. Seminar -

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

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

Algorithmentheorie Randomisierung. Robert Elsässer

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

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

Ü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