Übersicht. Datenstrukturen und Algorithmen. Laufzeit von Algorithmen. Übersicht. Vorlesung 2: Asymptotische Effizienz (K3) Begründung Grenzwerte

Ähnliche Dokumente
1 for ( int index = 0; index < n; index ++) { 3 if ( E[ index1 ] == K) { x++ }

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

Übung Algorithmen und Datenstrukturen

V. Claus, Juli 2005 Einführung in die Informatik II 45

Übung Algorithmen und Datenstrukturen

Übung Algorithmen & Datenstrukturen

Übung Algorithmen und Datenstrukturen

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.

Übung Algorithmen und Datenstrukturen

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)

WS 2009/10. Diskrete Strukturen

Notation für das asymptotische Verhalten von Funktionen

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)

2 Wachstumsverhalten von Funktionen

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Kapitel 5

Datenstrukturen, Algorithmen und Programmierung 2

VL-04: Rekursionsgleichungen. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger

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

Asymptotik und Laufzeitanalyse

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

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

Übung Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

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

Komplexität von Algorithmen OOPM, Ralf Lämmel

Sortieren II / HeapSort Heaps

es gibt Probleme, die nicht berechenbar sind (z.b. Menge aller Funktionen N N und die Menge aller Sprachen sind überabzählbar)

2. Effizienz von Algorithmen

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen

1. Asymptotische Notationen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. String Matching 5. Ausgewählte 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:

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

HEUTE. Beispiele. O-Notation neue Einführung Ideen und Eigenschaften Aufgaben 47 und 52

Einführung in die Informatik 2

Übungen zu Algorithmentechnik WS 09/10

Datenstrukturen und Algorithmen

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra

Zunächst ein paar einfache "Rechen"-Regeln: Lemma, Teil 1: Für beliebige Funktionen f und g gilt:

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

Algorithmik Kap. 2: Laufzeit von Algorithmen

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Klausur Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I Grundlagen

2 Asymptotische Schranken

Einführung in die Programmierung

Grundlagen: Algorithmen und Datenstrukturen

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

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

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

Informatik I Komplexität von Algorithmen

1,2,3,4,5,... Dabei ist die Reihenfolge wichtig, jede Zahl hat also ihre feste Position. Die Folge 2,1,4,3,... ist eine andere als 1,2,3,4,...

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse

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

Komplexität von Algorithmen

Wann sind Codes eindeutig entschlüsselbar?

Klausur Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 4. Vorlesung

Abschnitt 7: Komplexität von imperativen Programmen

Datenstrukturen & Algorithmen

Datenstrukturen: Mathematische Grundlagen. 26. Juli / 27

1. Übung zur Vorlesung Algorithmentechnik am

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

3.3 Laufzeit von Programmen

Algorithmenbegriff: Berechenbarkeit. Algorithmenanalyse. (Berechnung der Komplexität)

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse

Tutorium 23 Grundbegriffe der Informatik (9. Sitzung)

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11)

1.3 Knuth-Morris-Pratt-Algorithmus

Vorlesung Datenstrukturen

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Theoretische Informatik 1

Minimale Spannbäume. Übersicht. 1 Spannbäume. 2 Minimale Spannbäume. 3 Greedy Algorithmen. 4 Die Algorithmen von Kruskal und Prim

Abschnitt 18: Effizientes Suchen in Mengen

1 Asymptotische Notation

Algorithmen und Datenstrukturen 1-1. Seminar -

Algorithmen für die Speicherhierarchie

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Tutorium I

Kapitel 1. Exakte Suche nach einem Wort. R. Stiebe: Textalgorithmen, WS 2003/04 11

Master-Veranstaltung Funktionale Programmierung. Effizienz. Wintersemester 2007/2008 Kim Kirchbach (Inf6310) Mirco Schenkel (Inf6311)

Effiziente Algorithmen (SS2015)

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

Grundlagen: Algorithmen und Datenstrukturen

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion

Übersicht. Datenstrukturen und Algorithmen. Einführung (II) Einführung (I) Vorlesung 12: Hashing I (K11) Counting Sort. Joost-Pieter Katoen

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Die Topologie von R, C und R n

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

Asymptotische Notationen

1 Minimumssuche k = n Maximumssuche n. Median

Datenstrukturen und Algorithmen

Transkript:

Übersicht Datenstrukturen und Algorithmen Vorlesung 2: (K3) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 10. April 2015 1 Begründung 2 Die Klasse Groß-O Die Klasse Groß-Omega Die Klasse Groß-Theta 3 Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/29 Joost-Pieter Katoen Datenstrukturen und Algorithmen 2/29 Übersicht Laufzeit von Algorithmen 1 Begründung 2 Die Klasse Groß-O Die Klasse Groß-Omega Die Klasse Groß-Theta 3 Betrachte Die Laufzeit eines Algorithmus ist keine Zahl, sondern eine Funktion. Sie gibt die Laufzeit des Algorithmus für jede Eingabelänge an. Worst-Case Laufzeit Die Worst-Case Laufzeit W (n) für Eingabelänge n ist die längste Laufzeit aus allen Eingaben mit Länge n. Best-Case Laufzeit Die Best-Case Laufzeit B(n) für Eingabelänge n ist die kürzeste Laufzeit aus allen Eingaben mit Länge n. Joost-Pieter Katoen Datenstrukturen und Algorithmen 3/29 Joost-Pieter Katoen Datenstrukturen und Algorithmen 4/29

(I) (II) Die exakte Bestimmung der Funktionen A(n), B(n) und W (n) ist üblicherweise sehr schwierig. Außerdem: ist sie von zweifelhaftem Nutzen für Vergleiche: Ist etwa W (n) = 1021n besser als W (n) = 1 2 n2? wollen wir maschinenabhängige Konstanten (z. B. Rechnergeschwindigkeit), Initialisierungsaufwand, usw. ausklammern. Daher: Normalerweise keine exakte sondern asymptotische Betrachtung. Betrachte Wachstum der Laufzeit für n. Kurze Eingaben und konstante Faktoren werden vernachlässigt. Anschaulich: Wir lassen Glieder niedriger Ordnung weg, z. B. : W (n) = 3n 4 + 5n 3 + 10 O(n 4 ) (d. h. n 4 ist dominierender Faktor für n ) So erhalten wir untere/obere Schranken für A(n), B(n) und W (n)! Mathematische Zutat: Asymptotische Ordnung von Funktionen. Joost-Pieter Katoen Datenstrukturen und Algorithmen 5/29 Joost-Pieter Katoen Datenstrukturen und Algorithmen 6/29 Limes inferior und Limes superior Sei (x i ) i N die Folge x 1, x 2,.... Dann: ( ) 1. lim inf x n = lim inf x m n n m n ( ) 2. lim sup x n = lim sup x m n n m n Einige Fakten n 1. Existieren lim inf x n und lim sup x n : lim inf x n n n 2. Existiert lim n x n dann: lim inf n x n = lim sup n lim sup x n. n x n = lim n x n. Übersicht 1 Begründung 2 Die Klasse Groß-O Die Klasse Groß-Omega Die Klasse Groß-Theta 3 Sind f, g differenzierbar, dann gilt lim n = lim g (n) n f (n). L Hôpital Joost-Pieter Katoen Datenstrukturen und Algorithmen 7/29 Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/29

Die Klasse Groß-O (I) Seien f und g Funktionen von IN (Eingabelänge) nach IR 0 (Laufzeit) und c > 0. O(f ) ist die Menge von Funktionen, die nicht schneller als f wachsen. g O(f ) heißt: c ist obere Schranke für. Diese Eigenschaft gilt ab einer Konstanten n 0 ; Werte unter n 0 werden vernachlässigt. Laufzeit O n 0 c Eingabelänge n Die Klasse Groß-O liefert eine obere Schranke für die Komplexität einer Funktion. Kleinste obere Schranken sind von größtem Nutzen! g O(n 2 ) sagt mehr als g O(n 3 ). Joost-Pieter Katoen Datenstrukturen und Algorithmen 9/29 Die Klasse Groß-O (II) Definition (Die Klasse Groß-O) g O(f ) gdw. c > 0, n 0 mit n n 0 : 0 c. Definition (alternativ) g O(f ) gdw. lim sup n Theorem = c 0 mit c. Es seien f, g : IN IR zwei Funktionen. Es sei nur endlich oft = 0. Dann: lim sup n existiert gdw. c > 0, n 0 mit n n 0 : c. Joost-Pieter Katoen Datenstrukturen und Algorithmen 10/29 Die Klasse Groß-O (III) Die Klasse Groß-O (IV) Theorem Es seien f, g : IN IR zwei Funktionen. Es sei nur endlich oft = 0. Dann existiert lim sup n gdw. c > 0, n 0. n n 0 : c. Beweis. = : Sei lim sup n = c <. Für ε 0 es folgt c + ε und 0 bis auf endlich viele Ausnahmen. Ab einem n 0 IN gilt für alle n n 0 also: c + ε ; und damit: (c + ε). = : Gegeben seien nun n 0, c > 0 so dass n n 0 : c. Ab einem n 0 n 0 gilt (wie oben) außerdem 0 für alle n n 0. Damit ist n n 0 : 0 c. Die Folge a n = ist in [0, c], also beschränkt und abgeschlossen. Dann existiert lim sup n a n <. Definition g O(f ) gdw. c > 0, n 0 mit n n 0 : 0 c. Definition (alternativ) g O(f ) gdw. lim sup n Betrachte = 3n 2 + 10n + 6. Dann ist: = c 0 mit c. g O(n), da lim sup n /n =. g O(n 2 ), da 20n 2 für n 1. g O(n 3 ), da 1 10 n3 für n hinreichend groß. Joost-Pieter Katoen Datenstrukturen und Algorithmen 11/29 Joost-Pieter Katoen Datenstrukturen und Algorithmen 12/29

Die Klasse Groß-Omega (I) Die Klasse Groß-Omega (II) Ω(f ) ist die Menge von Funktionen, die nicht langsamer als f wachsen. g Ω(f ) heißt: c ist untere Schranke für. Diese Eigenschaft gilt ab einer Konstanten n 0 ; Werte unter n 0 werden vernachlässigt. Laufzeit Ω n 0 c Eingabelänge n Die Klasse Groß-Omega liefert eine untere Schranke für die Komplexität einer Funktion. Größte untere Schranken sind von größtem Nutzen! g Ω(n 2 ) sagt mehr als g Ω(n). Definition (Die Klasse Groß-Omega) g Ω(f ) gdw. c > 0, n 0 mit n n 0 : c. Definition (alternativ) g Ω(f ) gdw. lim inf n > 0. Betrachte = 3n 2 + 10n + 6. Dann ist: g Ω(n), da lim inf n /n = > 0. g Ω(n 2 ), da lim inf n /n 2 = 3 > 0. g Ω(n 3 ), da 5n 3 für n 2. Joost-Pieter Katoen Datenstrukturen und Algorithmen 13/29 Joost-Pieter Katoen Datenstrukturen und Algorithmen 14/29 Die Klasse Groß-Theta (I) Θ(f ) ist die Menge von Funktionen, die genauso schnell wie f wachsen. g Θ(f ) heißt: c 2 ist obere Schranke und c 1 ist untere Schranke für. Diese Eigenschaft gilt ab einer Konstanten n 0 ; Werte unter n 0 werden vernachlässigt. Laufzeit Θ n 0 c 2 c 1 Eingabelänge n Die Klasse Groß-Theta liefert eine obere und untere Schranke für die Komplexität einer Funktion. Definition (Die Klasse Groß-Theta) g Θ(f ) gdw. c 1, c 2 > 0, n 0 mit n n 0 : c 1 c 2. Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/29 Die Klassen O, Ω und Θ Beziehung zwischen O, Ω und Θ g Θ(f ) gdw. g O(f ) und g Ω(f ). Lemma Funktionen, die nicht schneller als f wachsen. O(f ) g Θ(f ) wenn lim n Θ(f ) Funktionen, die genauso schnell wie f wachsen. Ω(f ) = c für ein 0 < c <. Funktionen, die nicht langsamer als f wachsen. Joost-Pieter Katoen Datenstrukturen und Algorithmen 16/29

Die Klasse Groß-Theta (II) Definition g Θ(f ) gdw. c 1, c 2 > 0, n 0 mit n n 0 : c 1 c 2. Lemma g Θ(f ) wenn lim n = c für ein 0 < c <. Betrachte = 3n 2 + 10n + 6. Dann ist: g Θ(n), da zwar g Ω(n), aber g O(n). g Θ(n 2 ), da lim n /n 2 = 3. g Θ(n 3 ), da zwar g O(n 3 ), aber g Ω(n 3 ). : Fibonacci-Zahlen Wachstum einer Kaninchenpopulation Zu Beginn gibt es ein Paar geschlechtsreifer Kaninchen. Jedes neugeborene Paar wird im zweiten Lebensmonat geschlechtsreif. Jedes geschlechtsreife Paar wirft pro Monat ein weiteres Paar. Sie sterben nie und hören niemals auf. Fib(0) = 0 und Fib(1) = 1 Fib(n+2) = Fib(n+1) + Fib(n) für n 0. n 0 1 2 3 4 5 6 7 8 9... Fib(n) 0 1 1 2 3 5 8 13 21 34... ( ) Fib(n) O(2 n ) und Fib(n) Ω 2 n 2 Joost-Pieter Katoen Datenstrukturen und Algorithmen 17/29 Joost-Pieter Katoen Datenstrukturen und Algorithmen 18/29 Einige elementare Eigenschaften Reflexivität f O(f ), f Ω(f ), f Θ(f ). Die folgenden 3 Aussagen sind alle gültig: (a) log a n Θ(log b n), (b) log b n Θ(log a n), (c) O(log a n) = O(log b n). Transitivität Aus f O(g) und g O(h) folgt f O(h). Aus f Ω(g) und g Ω(h) folgt f Ω(h). Aus f Θ(g) und g Θ(h) folgt f Θ(h). Symmetrie von Θ f Θ(g) gdw. g Θ(f ). Beziehung zwischen O und Ω f O(g) gdw. g Ω(f ). Beweis. Wir beweisen (c). Zu zeigen: c 1, c 2 > 0, so dass log a n c 1 log b n }{{} log a n O(log b n) und log b n c 2 log a n. }{{} log b n O(log a n) Dann: log a n c 1 log b n log a n c 1 log a n log a b log a b c 1 Wähle c 1 log a b. Analog erhalten wir log b a c 2 ; dann wähle c 2 log b a. Die Aussagen (a) und (b) folgen auf ähnliche Weise. Joost-Pieter Katoen Datenstrukturen und Algorithmen 19/29 Joost-Pieter Katoen Datenstrukturen und Algorithmen 20/29

Die Klassen Klein-O, Klein-Omega Übersicht o(f ) ist die Menge von Funktionen, die echt langsamer als f wachsen. Definition g o(f ) gdw. c > 0, n 0 mit n n 0 : 0 < c. ω(f ) ist die Menge von Funktionen, die echt schneller als f wachsen. Definition g ω(f ) gdw. c > 0, n 0 mit n n 0 : c <. Beziehung zwischen o und ω 1 Begründung 2 Die Klasse Groß-O Die Klasse Groß-Omega Die Klasse Groß-Theta 3 f o(g) gdw. g ω(f ). Joost-Pieter Katoen Datenstrukturen und Algorithmen 21/29 Joost-Pieter Katoen Datenstrukturen und Algorithmen 22/29 Unter der eines Problems versteht man den (minimalen) Bedarf an Speicherplatz eines Algorithmus zur Lösung dieses Problems, in Abhängigkeit von der Länge der Eingabe. Nicht nur die Zeitkomplexität, sonder auch der Speicherbedarf ist wichtig! Dilemma: Eine Reduktion der Zeitkomplexität führt oft zur Erhöhung der, und vice versa. Dies werden wir in später in der DSAL Vorlesung öfters feststellen. : von Liedern [Knuth, 1984] Betrachte eine Lied mit n Wörter, d. h. die Eingabelänge ist n. Was ist die benötigte S(n) um ein Lied der Länge n zu singen? Obere und untere Schranken 1. S(n) O(n), da höchstens n verschiedene Wörter gespeichert werden müssen. 2. S(n) Ω(1), da wir mindestens eine Sache über das Lied wissen müssen, um es singen zu können. Kann man die durch Refrains (= Kehrverse) reduzieren? Joost-Pieter Katoen Datenstrukturen und Algorithmen 23/29 Joost-Pieter Katoen Datenstrukturen und Algorithmen 24/29

Refrains Refrain Die Wiederkehr von textlich/musikalisch (wenigstens überwiegend) identischen Zeilen am Schluss einer Strophe oder zwischen den Strophen. Soo.. Bye, bye miss American Pie Drove me Chevy to the levee but the levee was dry Them good old boys were drinking whiskey and rye? Singing this will be the day that I die this will be the day that I die Speichere den Refrain einmal und singe ihn O(n) Mal. [Don McLean] Dann: S(n) O(n), da die Anzahl der Wörter immer noch O(n) ist; z. B. bei Strophelänge = Refrainlänge halbiert sich der Speicherbedarf. Joost-Pieter Katoen Datenstrukturen und Algorithmen 25/29 Die k Weihnachtstage Reduktion der Reduziere S(n) durch eine bestimmte, sich ändernde Liedstruktur, etwa: On the kth day of Xmas, my true love gave to me gift k, gift k 1,..., gift 1 On the (k 1)st day of Xmas, my true love gave to me gift k 1,..., gift 1 On the first day of Xmas, my true love gave to me a bottle of wine Bekanntere Variante: Old MacDonald had a farm. Die benötigte Zeit, um das Lied zu singen ist (betrachte keine Refrains): n = k ( ) k + 1 i = k Θ(k 2 ) 2 i=1 Da n Θ(k 2 ) folgt k O( n), also S(n) ( n). Joost-Pieter Katoen Datenstrukturen und Algorithmen 26/29 100 Bierflaschen Untere Schranke? Eine weitere Vereinfachung Ein (sehr) langweiliges Lied für lange Autofahrten: n bottles of beer on the wall, n bottles of beer You take one down and pass it around n 1 bottles of beer on the ball [Andy Kaufman] S(n) O(log n), da nur der Wert von n von Bedeutung ist. Dafür reichen log n Bits aus. Ein Lied mit S(n) Θ(1) That s the way, uh-huh, uh-huh I like it, uh-huh, huh [KC & the Sunshine Band, 1977] Es geht jedoch noch etwas einfacher, nämlich indem man auf das Zählen verzichtet. Joost-Pieter Katoen Datenstrukturen und Algorithmen 27/29 Joost-Pieter Katoen Datenstrukturen und Algorithmen 28/29

Nächste Vorlesung Nächste Vorlesung Donnerstag 16. April, 10:15 (Aula Hauptgebäude). Bis dann! Joost-Pieter Katoen Datenstrukturen und Algorithmen 29/29