Datenstrukturen, Algorithmen und Programmierung 2

Ähnliche Dokumente
Algorithmik Kap. 2: Laufzeit von Algorithmen

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

WS 2009/10. Diskrete Strukturen

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 (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.

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

Übung 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 Effizienz und Funktionenklassen

Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

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

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Abstrakte Datentypen und Datenstrukturen

F3 Berechenbarkeit und Komplexität

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

Grundlagen: Algorithmen und Datenstrukturen

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

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

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

2. Effizienz von Algorithmen

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

Datenstrukturen und Algorithmen

Kap. 4.7 Skiplisten. 14./15. VO DAP2 SS /16. Juni 2009

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

Theoretische Informatik 1

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

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:

Algorithmik Übung 2 Prof. Dr. Heiner Klocke Winter 11/

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse

Algorithmen & Datenstrukturen Blatt 4

Kap. 4.3: Das Dualitätstheorem der linearen Optimierung

Grundlagen: Algorithmen und Datenstrukturen

Kapitel 4. Folgen Körper der reellen Zahlen. Wir kennen schon den Körper Q der rationalen Zahlen: : a, b Z, b 0}. Q = { a b

Vorlesung Datenstrukturen

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

Informatik I 1. Kapitel. Einführung in Algorithmen und Datenstrukturen. Einführung in Algorithmen. Einführung in Algorithmen.

Algorithmen und Datenstrukturen (für ET/IT)

Kapitel 8. Rekursionsgleichungen. Landau-Symbole. Lösen von Rekursionsgleichungen Allgemeines Iterationsmethode Spezialfälle Erzeugende Funktionen

Datenstrukturen, Algorithmen und Programmierung II

Grundlagen der Programmierung

Einstieg in die Informatik mit Java

1. Übung Algorithmen I

Algorithmen und Datenstrukturen

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

Datenstrukturen, Algorithmen und Programmierung 2

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

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

Motivation Kap. 6: Graphen

Informatik I Komplexität von Algorithmen

Algorithmen und Datenstrukturen 1-1. Seminar -

Programmiertechnik II

Grundlagen: Algorithmen und Datenstrukturen

Hier ist ein einfaches Turingprogramm. Außer dem Leerzeichen ist das Band nur mit. 1 belegt.

Algorithmen und Datenstrukturen

Bioinformatik Für Biophysiker

Komplexität von Algorithmen OOPM, Ralf Lämmel

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen

Dank. Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Probleme über Sprachen. Teil II.

4 Effizienz und Komplexität 3.1 1

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Datenstrukturen und SS Robert Elsässer

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele

Datenstrukturen, Algorithmen und Programmierung II

Studentisches Skript

Kap. 6.6: Kürzeste Wege

2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,..., a n 2, 1, 3 Sortieralg. Für festes n ist ein vergleichsbasierter Sortieralg. charakterisiert

Motivation Binäre Suchbäume

Kapitel 5 KONVERGENZ

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen 1 VL Übungstest WS November 2007

Berechenbarkeitstheorie 19. Vorlesung

Kap. 4.2: Binäre Suchbäume

Randomisierte Algorithmen 2. Erste Beispiele

Algorithmen und Datenstrukturen Tutorium I

Einführung in die Informatik 2

NAME, VORNAME: Studiennummer: Matrikel:

Übung Grundbegriffe der Informatik

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

Überblick. TSP Vergleich der Lösungen. Das Travelling Salesman Problem. Nearest-Neighbor Heuristik für TSP

Kap. 7.1 Heuristiken Kap. 7.2 Approximative Algorithmen und Gütegarantien

Komplexität von Algorithmen Musterlösungen zu ausgewählten Übungsaufgaben

Informatik I Komplexität von Algorithmen

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

Klausur Theoretische Informatik I WS 2004/2005

Überblick. Kap. 1.4: Minimum Weight Perfect Matching. 1.3 Blüten-Schrumpf Algorithmus für Maximum Matching

( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

Algorithmen und Datenstrukturen

Kap. 6.5: Minimale Spannbäume

1. Übung Algorithmentechnik

Teil III. Komplexitätstheorie

Transkript:

Datenstrukturen, Algorithmen und Programmierung 2 Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 2. VO SS 2009 16. April 2009 1

Überblick Asymptotische Schranken Asymptotische Schranken Asymptotische Schranken Asymptotische Schranken WICHTIG!!! 2

Motivation Warum soll ich heute in DAP2 gehen? ANALYSE IST WICHTIG!!! Das überzeugt mich nicht. ANALYSE IST KLAUSUR-RELEVANT! 3

Laufzeitverhalten eines Algorithmus wichtig für: die Vorhersage Wieviel Zeit, wenn sich die Eingabegröße verdoppelt? den Vergleich von Algorithmen Welcher ist besser? die Analyse von Algorithmen Wie gut ist der Algorithmus? 4

Algorithmen-Vergleich Fridolin: f(n)=n+3 Gwendoline: g(n)=2n+1 Harlekin: h(n)=2/3 n 2 Welcher ist der effizienteste? n f(n) g(n) h(n) 1 2 3 4 5 4 5 6 7 8 3 5 7 9 11 0,7 2,7 6 10,7 16,7 6

Algorithmen-Vergleich 20 15 10 f(n)=n+3, g(n)=2n+1, h(n)=2/3 n 2 f(n) g(n) h(n) 5 0 1 2 3 4 5

G kauft sich einen neuen Rechner: 20 15 10 f(n)=n+3, g (n)=n+1/2, h(n)=2/3 n 2 f(n) g (n) h(n) 5 0 1 2 3 4 5

Laufzeitvergleich Effizienz eines Algorithmus darf nicht vom Rechner abhängen! f(n) und g(n) sind ungefähr gleich gut bzgl. Effizienz h(n) ist zwar für kleine n besser als f(n), aber uns interessieren große n f(n) wächst ungefähr gleich wie g(n) f(n) wächst langsamer als h(n) 9

Asymptotische Laufzeit: O-Notation O(g(n)) ist die Menge aller nicht-negativen Funktionen f(n), für die ein c und ein n 0 (beide positiv und unabhängig von n) existieren, so dass für alle n n 0 gilt: f(n) cg(n). 0 cg(n) ist obere Schranke für f(n) für große n 10

20 15 10 f(n)=n+3, g(n)=2n+1, h(n)=2/3 n 2 f(n) g(n) h(n) = statt f(n)=o(n) g(n)=o(n) h(n)=o(n) 5 0 1 2 3 4 5 11

Beweistechnik für O-Notation: Beispiel Wir zeigen: f(n)=n+3=o(n) (wir wählen g(n)=n) Wir müssen also ein c und ein n 0 (beide positiv und unabhängig von n) finden, so dass für alle n n 0 gilt: f(n) cn Es muß gelten: n+3 cn. Dies gilt genau dann, wenn 1+3/n c. Dies ist z.b. erfüllt für n 3 und c=2. Oder auch n 100 und c=1,5. Tipp: Es gibt beliebig viele Möglichkeiten. Wir müssen für den Beweis eine davon angeben. 12

Beweistechnik für OΩΘ-Notation: Beispiel Wir zeigen: h(n)=2/3n 2 O(n) (wir wählen g(n)=n) Wir zeigen, dass kein c und n 0 (positiv und unabhängig von n) existiert, so dass für alle n n 0 gilt: h(n) cn Sonst würde gelten: 2/3n 2 cn für alle n n 0. Dies gilt g.d.w. 2/3n c für alle n n 0. Für n gegen unendlich wird es nie eine konstante Zahl c (unabhängig von n) geben, die dies erfüllt. Dies ist der Widerspruch. 13

20 15 10 f(n)=n+3, g(n)=2n+1, h(n)=2/3 n 2 f(n) g(n) h(n) = statt f(n)=o(g(n)) g(n)=o(f(n)) f(n)=o(h(n)) h(n)=o(f(n)) 5 0 1 2 3 4 5 g(n)=o(h(n)) h(n)=o(g(n)) Beweisen Sie: Es gilt g(n)=o(f(n)) und f(n)=o(h(n)) g(n)=o(h(n))

Asymptotische Laufzeit: Ω O-Notation Ω O(g(n)) ist die Menge aller nicht-negativen Funktionen f(n), für die ein c und ein n 0 (beide positiv und unabhängig von n) existieren, so dass für alle n n 0 gilt: f(n) cg(n). Ω 0 cg(n) ist obere untere Schranke für f(n) für große n 15

Asymptotische Laufzeit: Θ-Notation Θ(g(n)) ist die Menge aller nicht-negativen Funktionen f(n), für die ein c 1 und c 2 und ein n 0 (alle positiv und unabhängig von n) existieren, so dass für alle n n 0 gilt: c 1 g(n) f(n) c 2 g(n). 0 Θ(g(n)) ist die Menge aller Funktionen, die ungefähr gleich stark wachsen wie g(n) 16

Beweistechnik für OΩΘ-Notation: Beispiel Wir zeigen: f(n)=n+3=θ(n) (wir wählen g(n)=n) Wir müssen also je ein c 1,c 2 und ein n 0 (positiv und unabhängig von n) finden, so dass für alle n n 0 gilt: c 1 n f(n) c 2 n Es muß gelten: c 1 n n+3 c 2 n. Dies gilt genau dann, wenn c 1 1+3/n c 2. Dies ist z.b. erfüllt für n 3, c 1 =1, c 2 =2. Oder auch n 100 und c 1 =0,5 und c 2 =1,2. Tipp: Es gibt beliebig viele Möglichkeiten. Wir müssen für den Beweis eine davon angeben.

Tipp: Üben Sie mehr davon! Klausurverdächtig!!! Beweistechnik für OΩΘ-Notation Beispiel: Wir zeigen: WorstCase Laufzeit von InsertionSort ist in Θ(n 2 ). Es muß gelten: c 1 n 2 an 2 +bn+c c 2 n 2. Dies gilt g.d.w. c 1 a+b/n+c/n 2 c 2 für große n. Wir wissen, dass a>0. Sei T= b/n+c/n 2. Wir können n 0 so wählen, dass a > 2 T gilt für alle n n 0. Dann ist z.b. erfüllt für c 1 =a/2 und c 2 =2a. Denn: T < a/2 (gilt für T<0 und T 0) und somit a+t a/2 und a+t 2a. Die c i sind positive Konstanten. 18

Eigenschaften der OΩΘ-Notation Aus der Worst-Case Laufzeit Θ(n 2 ) folgt eine Laufzeit von O(n 2 ) für beliebige Eingaben. Aus der Worst-Case Laufzeit Θ(n 2 ) folgt NICHT eine Laufzeit von Θ(n 2 ) für beliebige Eingaben. Aus der Best-Case Laufzeit Θ(n) folgt eine Laufzeit von Ω(n) für beliebige Eingaben. 19

OΩΘ-Notation in Gleichungen Manchmal sieht man auch die O-Notation als Teilterme in Gleichungen, wie z.b. 2n 2 +3n+1=2n 2 +Θ(n). Dies bedeutet: Es gibt eine Funktion f(n) Θ(n) mit 2n 2 +3n+1=2n 2 +f(n). Man schreibt dies, um zu verdeutlichen, dass die Funktion im wesentlichen mit 2n 2 wächst, zu dem nur ein linear wachsender Anteil hinzukommt. 20

Weitere asymptotische Schranken o(g(n)) ist die Menge aller positiven Funktionen f(n), für die der limes von f(n)/g(n) für n gegen unendlich gegen 0 geht (es sei g(n)>0). Äquivalent hierzu ist: o(g(n)) umfaßt alle Funktionen, die echt schwächer wachsen als g(n) selbst. 21

ω Weitere asymptotische Schranken o(g(n)) ist die Menge aller positiven Funktionen f(n), für die der limes von f(n)/g(n) für n gegen unendlich gegen 0 geht. ω Äquivalent hierzu ist: ω ω o(g(n)) umfaßt alle Funktionen, die echt schwächer stärker wachsen als g(n) selbst. > 22

Eigenschaften der OΩΘ-Notation O(g(n)) = Θ(g(n)) o(g(n)) Θ(g(n)) o(g(n)) = Ω(g(n)) = Θ(g(n)) ω(g(n)) Θ(g(n)) ω(g(n)) = O(g(n)) Ω(g(n)) = Θ(g(n)) f(n)=o(g(n)) g(n)=ω(f(n)) f(n)=o(g(n)) g(n)=ω(f(n)) Tipp: Beweisen Sie diese Aussagen! Übungstest- und Klausurverdächtig!!!