Algorithmik Kap. 2: Laufzeit von Algorithmen

Ähnliche Dokumente
Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

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

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

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

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

Datenstrukturen und SS Robert Elsässer

Algorithmen und Datenstrukturen

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

Kapitel 1: Motivation / Grundlagen Gliederung

Algorithmen und Datenstrukturen (für ET/IT)

Datenstrukturen und Algorithmen

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

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse

WS 2009/10. Diskrete Strukturen

Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

Suchen und Sortieren

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

Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen -

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

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

Datenstrukturen und Algorithmen

ADS: Algorithmen und Datenstrukturen

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

Informatik I Komplexität von Algorithmen

1. Grundlagen Sortieren Vertauschen Selektion Einfügen Quicksort Suchen...

4 Effizienz und Komplexität 3.1 1

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

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

Algorithmen und Datenstrukturen 1-1. Seminar -

Ausgewählte Algorithmen: Sortieren von Listen

Algorithmik - Kompaktkurs

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

Sortieren Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

Effizienz von Algorithmen

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

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007

16. All Pairs Shortest Path (ASPS)

Randomisierte Algorithmen 2. Erste Beispiele

7. Sortieren Lernziele. 7. Sortieren

Punktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

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

Einstieg in die Informatik mit Java

Datenstrukturen. Sommersemester Kapitel 1: Motivation / Grundlagen. Steffen Lange

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Inhaltsverzeichnis. I Grundlegende Konzepte 1. xiii

Techniken der Programmentwicklung

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Lösungsvorschlag 1. Vorlesung Algorithmentechnik im WS 09/10

Übung Algorithmen I

Quicksort ist ein Divide-and-Conquer-Verfahren.

Programmiertechnik II

Vorlesung Algorithmische Geometrie Konvexe Hülle im R 3

Lösungen und Lösungshinweise zum Buch Weicker & Weicker:»Algorithmen und Datenstrukturen«

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Beispiellösung zur Prüfung Datenstrukturen und Algorithmen D-INFK

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Vorkurs Informatik WiSe 15/16

Probeklausur der Tutoren

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

Effiziente Algorithmen

Sortierverfahren für Felder (Listen)

JAVA - Suchen - Sortieren

Algorithmen und Datenstrukturen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

1. Übung Algorithmentechnik

Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Komplexität von Algorithmen

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

ADS Study Guide. 2. Juli Paradigmen Greedy Divide-and-Conquer Dynamic Programming... 3

Laufzeit und Komplexität

Datenstrukturen, Algorithmen und Programmierung II

Der Primzahlsatz. Es gibt eine Konstante A, so daß f(x) g(x) Ah(x) für alle genügend großen x.

Skript zur Vorlesung Datenstrukturen. Prof. Dr. Georg Schnitger

Abschnitt: Algorithmendesign und Laufzeitanalyse

Algorithmische Methoden zur Netzwerkanalyse

Erster Sortier-Algorithmus: Bubblesort

Prof. Dr. Margarita Esponda

ADS: Algorithmen und Datenstrukturen

Informatik II. Bernhard Seeger. Fachbereich Mathematik und Informatik. Universität Marburg

Algorithmen und Datenstrukturen

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

Kapitel 6 Elementare Sortieralgorithmen

Algorithmen und Datenstrukturen

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

Transkript:

1. Motivation 1.1 Fallstudie: Sortieralgorithmen 1.2 Fallstudie: Selektionsalgorithmen 2. Laufzeit von Algorithmen 2.1 Grundlagen 2.2 3. Paradigmen des Algorithmenentwurfs 3.1 Dynamisches Programmieren 3.2 Divide & Conquer Algorithmen 3.3 Greedy-Algorithmen 4. Ausgewählte Datenstrukturen 5. Anwendungsgebiet: Algorithmische Geometrie 6. Randomisierte Algorithmen 5/1 relevante Aspekt Beurteilung der Laufzeit einzelner Algorithmen Vergleich unterschiedlicher Algorithmen (/* zur Lösung desselben Problems */) Sortieralgorithmus BubbleSort InsertionSort HeapSort Wc-time(A,n) 1/2(n(n-1)) 1/2(n(n-1)) 3(n-1) log (n) 5/2

relevante Aspekt Beurteilung der Laufzeit einzelner Algorithmen Vergleich unterschiedlicher Algorithmen (/* zur Lösung desselben Problems */) Sortieralgorithmus BubbleSort InsertionSort HeapSort Wc-time(A,n) 1/2(n(n-1)) 1/2(n(n-1)) 3(n-1) log (n) Normalisierung n 2 n 2 n log(n) 5/3 Begriff: obere Schranke g(n) ist eine obere Schranke für f(n) gdw. es gibt c > 0 und n o 0, so daß für alle n n 0 gilt: f(n) c*g(n) f(n) wächst asymptotisch höchstens so schnell wie g(n) f(n) O(g(n)) 5/4

Beispiele: obere Schranke einige obere Schranken für f(n) g(n) = n 3 g(n) = n 4 g(n) = n 5... 5/5 Begriff: untere Schranke g(n) ist eine untere Schranke für f(n) gdw. es gibt c > 0 und n o 0, so daß für alle n n 0 gilt: g(n) c*f(n) f(n) wächst asymptotisch mindestens so schnell wie g(n) f(n) Ω(g(n)) Beobachtung: wenn f(n) Ω(g(n)), so g(n) O(f(n)) 5/6

Beispiele: untere Schranke einige untere Schranken für f(n) g(n) = n 3 g(n) = n 2 g(n) = n... 5/7 Begriff: obere und untere Schranke g(n) ist obere und untere Schranke für f(n) gdw. f(n) O(g(n)) und f(n) Ω(g(n)) f(n) wächst asymptotisch genau so schnell wie g(n) f(n) Θ(g(n)) 5/8

Beispiele: obere und untere Schranke g(n) = n 3 ist gleichzeitig obere und untere Schranke für f(n) es sei f(n) = 4n - 1 g(n) = n ist gleichzeitig obere und untere Schranke für f(n) 5/9 Begriff: echte obere Schranke g(n) ist eine echte obere Schranke für f(n) gdw. für jedes c > 0 gibt es n o 0, so daß für alle n n 0 gilt: f(n) c*g(n) mit anderen Worten: lim n f(n)/g(n) = 0 f(n) wächst asymptotisch langsamer als g(n) f(n) o(g(n)) 5/10

Beispiele: echte obere Schranke einige echte obere Schranken für f(n) g(n) = n 3 log(n) g(n) = n 4 g(n) = n 5... 5/11 Begriff: echte untere Schranke g(n) ist eine echte untere Schranke für f(n) gdw. für jedes c > 0 gibt es n o 0, so daß für alle n n 0 gilt: g(n) c*f(n) mit anderen Worten: lim n g(n)/f(n) = 0 f(n) wächst asymptotisch schneller als g(n) f(n) ω(g(n)) 5/12

Beispiele: echte untere Schranke einige echte untere Schranken für f(n) g(n) = n 2 log(n) g(n) = n 2 g(n) = n... 5/13 Arbeitszeit eines Rechners mit 10 6 Op/sec wc-time(a,n) n = 10 n = 20 n = 30 n = 40 n = 50 Θ(n) 0,00001 s 0,00002 s 0,00003 s 0,00004 s 0,00005 s Θ(n 2 ) 0,0001 s 0,0004 s 0,0009 s 0,0016 s 0,0025 s Θ(n 3 ) 0,001 s 0,008 s 0,027 s 0,064 s 0,125 s Θ(n 5 ) 0,1 s 3,2 s 24,3 s 1,7 min 5,2 min Θ(2 n ) 0,001 s 1,0 s 17,9 min 12,7 Tage 35,7 Jahre Θ(3 n ) 0.059 s 58 min 6.5 Jahre 3855 Jahrhunderte 2*10 8 Jahrhunderte 5/14

Problemgröße, die in einer Stunde bewältigt werden kann wc-time(a,n) heute 100-fache Geschwindigkeit 1000-fache Geschwindigkeit Θ(n) N 1 100 N 1 1000 N 1 Θ(n 2 ) N 2 10 N 2 31,6 N 2 Θ(n 3 ) N 3 4,6 N 3 10 N 3 Θ(n 5 ) N 4 2,5 N 4 3,9 N 5 Θ(2 n ) N 5 N 5 + 6,6 N 5 + 9,9 Θ(3 n ) N 6 N 6 + 4,2 N 6 + 6,3 5/15 Grenzen der asymptotischen Notation es seien A und A Algorithmen für dasselbe Problem und es gelte wc-time(a,n) = 10n 3 und wc-time(a,n) = 10000n 2 offenbar gilt: wc-time(a,n) Θ(n 3 ) und wc-time(a,n) Θ(n 2 ) aber wc-time(a,n) < wc-time(a,n) für alle n < 1000... wenn nur Eingaben x mit x < 1000 interessant sind, so sollte Algorithmus A anstelle von Algorithmus A verwendet werden 5/16