Algorithm Engineering was hat das mit der Praxis zu tun?

Ähnliche Dokumente
Grundlagen: Algorithmen und Datenstrukturen

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

Vorlesung Datenstrukturen

1. Übung Algorithmen I

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. Effizienz von Algorithmen

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

3.3 Laufzeit von Programmen

Algorithmen und Datenstrukturen

Das Suchproblem 4. Suchen Das Auswahlproblem Suche in Array

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

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

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

Algorithmen und Datenstrukturen 1 Kapitel 5

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

Asymptotik und Laufzeitanalyse

Algorithmen I. Prof. Jörn Müller-Quade. Übungen: Björn Kaidel, Sebastian Schlag und Sascha Witt

Übungsklausur Algorithmen I

1 Minimumssuche k = n Maximumssuche n. Median

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Prof. Dr. Margarita Esponda

Übungsklausur Algorithmen I

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

Übung Algorithmen und Datenstrukturen

WS 2009/10. Diskrete Strukturen

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

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

Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

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

1 Random Access Maschine

Datenstrukturen, Algorithmen und Programmierung 2

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

Algorithmen und Datenstrukturen 1-1. Seminar -

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

Isomorphismus. Definition Gruppen-Isomorphismus. Seien (G, +) und (G, ) Gruppen. Die Abbildung f : G G heißt Gruppen-Isomorphismus, falls gilt

Übung Algorithmen und Datenstrukturen

Notation für das asymptotische Verhalten von Funktionen

Programmiertechnik II

Exponentiation: das Problem Gegeben: (multiplikative) Halbgruppe (H, ), Element a H, n N Aufgabe: berechne das Element

Komplexität von Algorithmen:

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

Abschnitt: Algorithmendesign und Laufzeitanalyse

Übung Algorithmen I

Übung zur Vorlesung Berechenbarkeit und Komplexität

Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)

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

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)

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

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 9, Donnerstag 18.

Divide & Conquer. Problem in Teilprobleme aufteilen Teilprobleme rekursiv lösen Lösung aus Teillösungen zusammensetzen

Algorithmen und Datenstrukturen

Vorlesung 3: Graphenalgorithmen. Markus Püschel David Steurer Peter Widmayer. PDF download goo.gl/ym3spq

Algorithmen und Datenstrukturen

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

1. Asymptotische Notationen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. String Matching 5. Ausgewählte Datenstrukturen

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

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

Informatik I Komplexität von Algorithmen

Informatik I Komplexität von Algorithmen

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

Grundlagen: Algorithmen und Datenstrukturen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

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

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

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

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

Abschnitt 11: Korrektheit von imperativen Programmen

Denition: Rang eines Elements e einer Folge s = Position von e in sort(s) (angefangen bei 1). Frage: warum ist r nicht notwendig eindeutig?

Control Beispiel. Control wird als kombinatorische Schaltung realisiert. Hierzu die Wahrheitstabelle: Control

Informatik II. Algorithmen und Datenstrukturen. Vorläufige Version 1 c 2002 Peter Thiemann

Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I Grundlagen

Effizienz von Algorithmen

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

Algebraische und arithmetische Algorithmen

Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

2 Wachstumsverhalten von Funktionen

Algorithmische Methoden zur Netzwerkanalyse

Transkript:

Algorithm Engineering was hat das mit der Praxis zu tun? design analyze Algorithmics implement experiment 33

Algorithmentheorie (Karikatur) models design Theory Practice analysis perf. guarantees deduction implementation applications 34

Algorithmik als Algorithm Engineering Algorithm Engineering Analyse Deduktion Leistungs garantien realistische Modelle 1 Entwurf 2 falsifizierbare 3 Hypothesen 5 Induktion 4 Implementierung Algorithmen bibliotheken 6 reale Eingaben Experimente 7 Anwendungen 35

Zurück zur Langzahlmultiplikation Zierngröÿe Hardware-Fähigkeiten z. B. 32 Bit Schulmultiplikation für kleine Eingaben Assembler, SIMD,... 0.4 0.3 Karatsuba, n = 2048 Karatsuba, n = 4096 0.2 0.1 4 8 16 32 64 128 256 512 1024 recursion threshold 36

Skalierung 10 school method Karatsuba4 Karatsuba32 Asymptotik setzt sich durch Konstante Faktoren oft Implementierungsdetail time [sec] 1 0.1 0.01 0.001 0.0001 1e-05 2 4 2 6 2 8 2 10 n 2 12 2 14 37

Blick über den Tellerrand Bessere Potenzen durch Aufspalten in mehr Teile Schnelle Fourier Transformation O(n) Multiplikationen von O(log n)-bit Zahlen [Schönhage-Strassen 1971]: Bitkomplexität O(n log n log log n) [Fürer 2007]: Bitkomplexität 2 O(log n) n log n Praxis: Karatsuba-Multiplikation ist nützlich für Zahlenlängen aus der Kryptographie GnuPG, OpenSSL verwenden Karatsuba (ab best. Bitlänge) { Iterierter Logarithmus: log 0 falls n 1 n = 1 + log log n sonst 38

Einführendes 39

Überblick Algorithmenanalyse Maschinenmodell Pseudocode Codeannotationen Mehr Algorithmenanalyse Graphen 40

(Asymptotische) Algorithmenanalyse Gegeben: Ein Programm Gesucht: Laufzeit T (I ) (# Takte), eigentlich für alle Eingaben I (!) (oder auch Speicherverbrauch, Energieverbrauch,... ) Erste Vereinfachung: Worst case: T (n) = max I =n T (I ) (Später mehr: average case, best case, die Rolle des Zufalls, mehr Parameter) T(n) Instanzen mit I =n 41

Zweite Vereinfachung: Asymptotik O(f (n)) = {g(n) : c > 0 : n 0 N + : n n 0 : g(n) c f (n)} höchstens Ω(f (n)) = {g(n) : c > 0 : n 0 N + : n n 0 : g(n) c f (n)} mindestens Θ(f (n)) = O(f (n)) Ω(f (n)) genau o(f (n)) = {g(n) : c > 0 : n 0 N + : n n 0 : g(n) c f (n)} weniger ω(f (n)) = {g(n) : c > 0 : n 0 N + : n n 0 : g(n) c f (n)} mehr 42

O-Kalkül Rechenregeln Schludrigkeit: implizite Mengenklammern. Lese `f (n) = E' als `{f (n)} E' u. s. w. k i=0 cf (n) Θ(f (n)) für jede positive Konstante c a i n i O(n k ) f (n) + g(n) Ω(f (n)), f (n) + g(n) O(f (n)) falls g(n) = O(f (n)), O(f (n)) O(g(n)) = O(f (n) g(n)). 43

Maschinenmodell: RAM (Random Access Machine) S 1 2 Program Control... R 1 load 2... store k Θ(log Space) <>= + */&v~ Moderne (RISC) Adaption des von Neumann-Modells [von Neumann 1945] 44

Register S 1 2 Program Control... R 1 load 2... store k Θ(log Space) <>= + */&v~ k (irgendeine Konstante) Speicher R 1,...,R k für (kleine) ganze Zahlen 45

Hauptspeicher S 1 2 Program Control... R 1 load 2... store k Θ(log Space) <>= + */&v~ Unbegrenzter Vorrat an Speicherzellen S[1], S[2]... für (kleine) ganze Zahlen 46

Speicherzugri S 1 2 Program Control... R 1 load 2... <>= + */&v~ store k Θ(log Speicher) R i := S[R j ] lädt Inhalt von Speicherzelle S[R j ] in Register R i. S[R j ]:= R i speichert Register R i in Speicherzelle S[R j ]. 47

Rechnen S 1 2 Program Control... R 1 load 2... store k Θ(log Space) <>= + */&v~ R i := R j R l Registerarithmetik. ` ' ist Platzhalter für eine Vielzahl von Operationen Arithmetik, Vergleich, Logik 48

Bedingte Sprünge S 1 2 Program Control... R 1 load 2... store k Θ(log Space) <>= + */&v~ JZ j, R i Setze Programmausführung an Stelle j fort falls R i = 0 49

Kleine ganze Zahlen? Alternativen: Konstant viele Bits (64?): theoretisch unbefriedigend, weil nur endlich viel Speicher adressierbar endlicher Automat Beliebige Genauigkeit: viel zu optimistisch für vernünftige Komplexitätstheorie. Beispiel: n-maliges Quadrieren führt zu einer Zahl mit 2 n Bits. OK für Berechenbarkeit Genug um alle benutzten Speicherstellen zu adressieren: bester Kompromiss. 50

Algorithmenanalyse im RAM-Modell Zeit: Ausgeführte Befehle zählen, d. h. Annahme 1 Takt pro Befehl. Nur durch späteres O( ) gerechtfertigt! Ignoriert Cache, Pipeline, Parallelismus... Platz: Etwas unklar: letzte belegte Speicherzelle? Anzahl benutzter Speicherzellen? Abhängigkeit von Speicherverwaltungsalgorithmen? Hier: Es kommt eigentlich nie drauf an. 51

Mehr Maschinenmodell Cache: schneller Zwischenspeicher begrenzte Gröÿe kürzlich/häug zugegriene Daten sind eher im Cache blockweiser Zugri Zugri auf konsekutive Speicherbereiche sind schnell Parallelverarbeitung: Mehrere Prozessoren unabhängige Aufgaben identizieren mehr in TI, Algorithmen II, Programmierparadigmen,... 52

Mehr Maschinenmodell S 1 2 Caches Program Control... R 1 2... k Netzwerk 53

Pseudocode just in time Beispiel: Class Complex(x, y : Number) of Number Number r:= x Number i:= y Function abs : Number return r 2 + i 2 Function add(c : Complex) : Complex return Complex(r + c.r,i + c.i) 54

Design by Contract / Schleifeninvarianten assert: Aussage über Zustand der Programmausführung Vorbedingung: Bedingung für korrektes Funktionieren einer Prozedur Nachbedingung: Leistungsgarantie einer Prozedur, falls Vorbedingung erfüllt Invariante: Aussage, die an vielen Stellen im Programm gilt Schleifeninvariante: gilt vor / nach jeder Ausführung des Schleifenkörpers Datenstrukturinvariante: gilt vor / nach jedem Aufruf einer Operation auf abstraktem Datentyp Hier: Invarianten als zentrales Werkzeug für Algorithmenentwurf und Korrektheitsbeweis. 55

Beispiel (Ein anderes als im Buch) 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, p):= (n/2, p p) return r 56

Beispiel (Ein anderes als im Buch) Function power(a : R; n 0 : N) : R assert n 0 0 and (a = 0 n 0 = 0) // Vorbedingung p=a : R; r=1 : R; n=n 0 : N // p n r = a n 0 while n > 0 do invariant p n r = a n 0 // Schleifeninvariante (*) if n is odd then n ; r:= r p else (n, p):= (n/2, p p) assert r = a n 0 // (*) n = 0 Nachbedingung return r 57

Rechenbeispiel: 2 5 p=a = 2 : R; r=1 : R; n=n 0 = 5 : N // 2 5 1 = 2 5 while n > 0 do if n is odd then n ; r:= r p else (n, p):= (n/2, p p) Iteration p r n p n r 0 2 1 5 32 1 2 2 4 32 2 4 2 2 32 3 16 2 1 32 4 32 32 0 32 58

Beispiel Function power(a : R; n 0 : N) : R assert n 0 0 and (a = 0 n 0 = 0) // Vorbedingung p=a : R; r=1 : R; n=n 0 : N // p n r = a n 0 while n > 0 do invariant p n r = a n 0 // Schleifeninvariante (*) if n is odd then n ; r:= r p else (n, p):= (n/2, p p) assert r = a n 0 // (*) n = 0 Nachbedingung return r neues n {}}{ Fall n ungerade: Invariante erhalten wegen p n r = p n 1 pr }{{} neues r 59

Beispiel Function power(a : R; n 0 : N) : R assert n 0 0 and (a = 0 n 0 = 0) // Vorbedingung p=a : R; r=1 : R; n=n 0 : N // p n r = a n 0 while n > 0 do invariant p n r = a n 0 // Schleifeninvariante (*) if n is odd then n ; r:= r p else (n, p):= (n/2, p p) assert r = a n 0 // (*) n = 0 Nachbedingung return r Fall n gerade: Invariante erhalten wegen p n = (p p) }{{} neues p neues n {}}{ n/2 60

Programmanalyse Die fundamentalistische Sicht: Ausgeführte RAM-Befehle zählen einfache Übersetzungsregeln {}}{ Pseudo-Code Maschinenbefehle Idee: O( )-Notation vereinfacht die direkte Analyse des Pseudocodes. T (I ; I ) = T (I ) + T (I ). T (if C then I else I ) O(T (C) + max(t (I ), T (I ))). T (repeat I until C) O( i T (i-te Iteration)) Rekursion Rekurrenzrelationen 61

Schleifenanalyse Summen ausrechnen Das lernen Sie in Mathe Beispiel: Schulmultiplikation 62

Eine Rekurrenz für Teile und Herrsche Für positive Konstanten a, b, c, d, sei n = b k für ein k N. { a falls n = 1 Basisfall r(n) = cn + dr(n/b) falls n > 1 teile und herrsche. n cn 1 2 d n/b n/b... n/b............ 1 1 1 1... 1 1 a a a a... a a... 1 2 k 63

Master Theorem (Einfache Form) Für positive Konstanten a, b, c, d, sei n = b k für ein k N. { a falls n = 1 Basisfall r(n) = cn + dr(n/b) falls n > 1 teile und herrsche. Es gilt Θ(n) falls d < b r(n) = Θ(n log n) falls d = b Θ ( n log d) b falls d > b. 64

Beweisskizze Auf Ebene i haben wir d i Probleme @ n/b i = b k i ( d i c n d = b i cn b ) i ad k 65

Beweisskizze Fall d < b geometrisch schrumpfende Reihe erste Rekursionsebene kostet konstanten Teil der Arbeit ( ) r(n) = a }{{ d k k 1 i d } + cn Θ(n) b i=0 o(n) }{{} O(1) d=2, b=4 66

Beweisskizze Fall d = b gleich viel Arbeit auf allen k = log b (n) Ebenen. r(n) = an + cn log b n Θ(n log n) d=b=2 67

Beweisskizze Fall d > b geometrisch wachsende Reihe letzte Rekursionsebene kostet konstanten Teil der Arbeit ( ) i d ) r(n) = ad k + cn Θ(n log d b b k 1 i=0 beachte: d k = 2 k log d = 2 k log b log d log b = b k log d log b = b k log b d = n log b d d=3, b=2 68