Algorithmen I - Tutorium 28 Nr. 2

Ähnliche Dokumente
1. Übung Algorithmen I

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Algorithmen I - Tutorium 28 Nr. 12

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

Sortieren & Co. KIT Institut für Theoretische Informatik

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

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

Vorlesung Datenstrukturen

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

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Grundlagen: Algorithmen und Datenstrukturen

5. Übungsblatt zu Algorithmen I im SoSe 2016

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

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

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Präsenzübung Datenstrukturen und Algorithmen SS 2014

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

Algorithmen II Vorlesung am

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

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

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

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

Algorithmen und Datenstrukturen Kapitel 2: Korrektheit von Algorithmen und Laufzeitanalyse rekursiver Algorithmen (mittels Rekurrenzgleichungen)

Übung Algorithmen I

Datenstrukturen. Mariano Zelke. Sommersemester 2012

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

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

Heapsort. 1. Erstelle aus dem gegebenen Array einen Max-Heap (DownHeap) 2. Tausche erstes und letztes Element des Arrays

Übung zur Vorlesung Diskrete Strukturen I

2. Übung Algorithmen I

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

Algorithmen und Datenstrukturen Tutorium I

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

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Ordnen Sie die folgenden Funktionen nach ihrer asymptotischer Komplexität in aufsteigender Reihenfolge: i=1 4i + n = 4 n. i=1 i + 3n = 4 ( n(n+1)

Algorithmische Methoden zur Netzwerkanalyse

Übung Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen

Übung zur Vorlesung Berechenbarkeit und Komplexität

Programmieren und Problemlösen

Klausur Algorithmen und Datenstrukturen

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

Übung Algorithmen und Datenstrukturen

Algorithm Engineering was hat das mit der Praxis zu tun?

9. Übung Algorithmen I

2. Effizienz von Algorithmen

Abgabe: (vor der Vorlesung) Aufgabe 3.1 (P) Master-Theorem

Schleifeninvarianten. Dezimal zu Binär

4. Sortieren 4.1 Vorbemerkungen

10. Übung Algorithmen I

Übungsklausur Algorithmen I

Vorlesung Datenstrukturen

3.3 Laufzeit von Programmen

Suchen und Sortieren Sortieren. Mergesort

Klausur Algorithmen und Datenstrukturen

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

Übungsklausur Algorithmen I

Grundlagen: Algorithmen und Datenstrukturen

3. Übungsblatt zu Algorithmen I im SoSe 2017

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen II Vorlesung am

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

Vorlesung Datenstrukturen

Übungen zu Algorithmentechnik WS 09/10

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

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Übungsklausur Algorithmen I

Informatik II. Vorlesung am D-BAUG der ETH Zürich. Felix Friedrich & Hermann Lehner FS 2018

Transkript:

Algorithmen I - Tutorium 28 Nr. 2 11.05.2017: Spaß mit Invarianten (die Zweite), Rekurrenzen / Mastertheorem und Merging Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN MÜLLER-QUADE KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Agenda 1 Übungsblatt 1 Statistik Aufgabe 1c) Aufgabe 2 Aufgabe 3 2 Invarianten (Wdh.) 3 Rekurrenzen 4 Mastertheorem Definition Aufgaben 5 Merging 6 Ende Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 2/21

Statistik Abgaben: 14 in 9 Teams. Höchstpunktzahl: 15. Schnitt: 13, 5. Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 3/21

Aufgabe 1c) Aufgabe Gilt folgende Implikation? Lösung f, g : N N : f (n) o(g(n)) log(f (n)) o(log(g(n))). Nein: f (n) = n, g(n) = n 2. Dann f (n) o(g(n)) aber lim n log(n) log(n 2 ) = lim n log(n) 2log(n) = 1 2 0. Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 4/21

Aufgabe 2 Function f(n : N; m : N) : (N, N) a = 0 : N; b = m : N c = 1 : N Aufgabe while m cn 0 do invariant m = an + b a := c c := c + 1 b := m an return (a, b) Laufzeit und Schleifeninvariante? O(m) im Worst Case wenn n = 1 und. Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 5/21

Aufgabe 3 Aufgabe Gegeben sei ein Array M (mit Elementen aus N) der Länge n. Berechne in O(n) die zwei Indizes 0 i, j < n sodass M[i] = max(m) und M[j] = max(m\m[i]). Lösung Function findmaximumpair(a : Array [0..n 1] of N) : (N, N) a = 0 : N; b = 0 : N for i [0..n 1] do if M[i] M[a] then b := a; a := i return (a, b) Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 6/21

Schleifeninvarianten - power() Function power(a : R; n 0 : N) : R p = a : R; r = 1 : R; n = n 0 : N while n > 0 do if n is odd then n ; r = r p; else n = n 2 ; p = p p; return r Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 7/21

Schleifeninvarianten - power() (Forts.) Function power(a : R; n 0 : N) : R p = a : R; r = 1 : R; n = n 0 : N while n > 0 do invariant p n r = a n 0 if n is odd then n ; r = r p; else n = n 2 ; p = p p; return r Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 8/21

Rekurrenzen Oder wenn mathematische Funktionen auf sich selbst verweisen. Aufgabe Zeige mittels Induktion, dass für { 2 falls n = 1 T (n) = 2T ( n ) + 2 n2 falls n 2 die Ungleichung T (n) 2n 2 gilt. Dabei sei n = 2 k für k N. Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 9/21

Rekurrenzen (Forts.) Oder wenn mathematische Funktionen auf sich selbst verweisen. Lösung Induktionsanfang: n = 1, T (1) = 2 2 1 2 = 2. Induktionsvoraussetzung: T (n) 2n 2. Induktionsschritt: n 2n : T (2n) = 2T ( 2n ) + 2 (2n)2 = 2T (n) + (2n) 2 4n 2 + 4n 2 = 8n 2 = 2(2n) 2 IV Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 10/21

Mastertheorem Das Mastertheorem. Oder: Rekurrenzen lösen leicht gemacht (hier in seiner einfachen Form) für typische Teile- und Herrsche -Algorithmen). Satz (Theorem 2.5) Für a, b, c, d N sei n = b k (k N). Dann { a n = 1 r(n) = cn + dr( n) b sonst Dann Θ(n) d < b r(n) Θ(nlog(n)) d = b Θ(n logb(d) ) d > b. Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 11/21

Aufgabe 1 Bestimme mit Hilfe des Master-Theorems eine scharfe asymptotische Schranke! A(1) := 1, n = 2 k, k N : A(n) = A( n 2 ) + ĉn Lösung: a = 1, b = 2, c = ĉ, d = 1 d<b Θ(n) Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 12/21

Aufgabe 2 Bestimme mit Hilfe des Master-Theorems eine scharfe asymptotische Schranke! B(1) := 1, n = 3 k, k N : B(n) = 4B( n 3 ) + 4n Lösung: a = 1, b = 3, c = 4, d = 4 d>b Θ(n log 3(4) ) = Θ(n 1.26 ) Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 13/21

Aufgabe 3 Bestimme mit Hilfe des Master-Theorems eine scharfe asymptotische Schranke! C(1) := 1, n = 6 k, k N : C(n) = 3C( n 6 ) + n + 7 Lösung: Das Mastertheorem ist nicht ohne weiteres zu verwenden. Schätze ab: n 1 : n n + 7 8n. Definiere: C (n) := 3C( n) + 6 n und C (n) := 3C( n) + 6 8n. Es gilt C (n) C(n) C (n) und a = 1, b = 6, d = 3. Für c = 1 (von C ) d<b C (n) = Θ(n) C(n) = Ω(n). Für c = 8 (von C ) d<b C (n) = Θ(n) C(n) = O(n). C(n) = Θ(n). Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 14/21

Das Merging-Problem Wie erhalte ich aus zwei sortierten Arrays ein sortieres Array? Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 15/21

Der merge-algorithmus procedure merge(a : Array [1..n 1 ] of N 0, B : Array [1..n 2 ] of N 0 ) assert A, B sortiert A[n 1 + 1] :=, B[n 2 + 1] := n = n 1 + n 2 : N 0 C : Array [1..n] of N 0 j A = 1 : N 0, j B = 1 : N 0 for i := 1 to n do C[i] = min(a[j A ], B[j B ]) if A[j A ] < B[j B ] then j A = j A + 1 else j B = j B + 1 return C Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 16/21

Der merge-algorithmus: Laufzeit procedure merge(a : Array [1..n 1 ] of N 0, B : Array [1..n 2 ] of N 0 ) assert A, B sortiert A[n 1 + 1] :=, B[n 2 + 1] := // O(1) n = n 1 + n 2 : N 0 // O(1) C : Array [1..n] of N 0 // O(1) j A = 1 : N 0, j B = 1 : N 0 // O(1) for i := 1 to n do // O(n) C[i] = min(a[j A ], B[j B ]) // O(1) if A[j A ] < B[j B ] then j A = j A + 1 // O(1) else j B = j B + 1 // O(1) return C Laufzeit? Welche Laufzeit hat obiger Algorithmus? Θ(n)! Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 17/21

Der merge-algorithmus: Korrektheit procedure merge(a : Array [1..n 1 ] of N 0, B : Array [1..n 2 ] of N 0 ) assert A, B sortiert A[n 1 + 1] :=, B[n 2 + 1] := n = n 1 + n 2 : N 0 C : Array [1..n] of N 0 j A = 1 : N 0, j B = 1 : N 0 for i := 1 to n do C[i] = min(a[j A ], B[j B ]) if A[j A ] < B[j B ] then j A = j A + 1 else j B = j B + 1 return C Korrektheit? Welche Invarianten zeigen die Korrektheit des obigen Algorithmus? Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 18/21

Der merge-algorithmus: Korrektheit (Forts.) Korrektheit? Welche Invarianten zeigen die Korrektheit des obigen Algorithmus? Invariante I am Ende der for-schleife: C[1..i] enthält genau A[1..j A 1], B[1..j B 1] Invariante II am Ende der for-schleife: B[k] < A[j A ], k [1, j B 1], A[l] < B[j B ], l [1, j A 1] Invariante III am Ende der for-schleife: C[1..i] ist sortiert Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 19/21

Was haben wir heute gemacht? Invarianten Rekurrenzen Mastertheorem Merging Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 20/21

Wahre Helden Viel Erfolg und ein schönes Wochenende! Marc Leinweber Algorithmen I - Tutorium 28 Nr. 2 11.05.2017 21/21