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

Ähnliche Dokumente
Informatik I Komplexität von Algorithmen

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

Informatik I Komplexität von Algorithmen

Informatik I Komplexität von Algorithmen

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.

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

Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

WS 2009/10. Diskrete Strukturen

Übung Algorithmen und Datenstrukturen

Abschnitt 7: Komplexität von imperativen Programmen

Asymptotik und Laufzeitanalyse

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

Programmieren und Problemlösen

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

Algorithmen und Datenstrukturen 1 Kapitel 5

2. Effizienz von Algorithmen

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

Komplexität von Algorithmen

Informatik II, SS 2016

Übung zur Vorlesung Berechenbarkeit und Komplexität

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Leistungsanalyse Autor: Stefan Edelkamp

Datenstrukturen und Algorithmen (SS 2013)

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 3, Donnerstag 7.

Einführung in die Programmierung

A6.1 Logarithmus. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. A6.1 Logarithmus. A6.2 Landau-Notation. A6.

Grundlagen: Algorithmen und Datenstrukturen

G. Zachmann Clausthal University, Germany

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

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

Komplexität von Algorithmen:

Notation für das asymptotische Verhalten von Funktionen

Grundlagen: Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Das O-Tutorial. 1 Definition von O, Ω, Θ, o und ω

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Datenstrukturen. Mariano Zelke. Sommersemester 2012

2 Wachstumsverhalten von Funktionen

Algorithmen und Datenstrukturen I Grundlagen

Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

G. Zachmann Clausthal University, Germany Die wichtigsten Entwurfsverfahren für Algorithmen:

Prof. Dr. Margarita Esponda

Informatik II, SS 2018

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

Informatik II Sortieren

Informatik II Sortieren

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

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

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

Komplexität von Algorithmen OOPM, Ralf Lämmel

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (02 Funktionenklassen) Prof. Dr. Susanne Albers

Übung Algorithmen und Datenstrukturen

8 Komplexitätstheorie

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Theoretische Informatik. Exkurs: Komplexität von Optimierungsproblemen. Optimierungsprobleme. Optimierungsprobleme. Exkurs Optimierungsprobleme

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

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

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)

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

Praktische Informatik I - Algorithmen und Datenstrukturen Wintersemester 2006/ Algorithmen und ihre formalen Eigenschaften, Datenstrukturen

Ziele. Kapitel 10: Komplexität von Algorithmen und Sortierverfahren. Beispiel: Lineare Suche eines Elements in einem Array (1)

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

AlgoDat Fragen zu Vorlesung und Klausur

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

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:

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

3.3 Laufzeit von Programmen

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

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

Algorithmen und Datenstrukturen Tutorium I

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

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

Algorithmen und Datenstrukturen

Prof. Dr. Margarita Esponda

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

Die asymptotische Notation

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

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

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

Übung Algorithmen und Datenstrukturen

Komplexität von Algorithmen

Algorithmen und Datenstrukturen 1-1. Seminar -

Algorithmen und Datenstrukturen Übung #4 BFS/DFS, Wachstum von Funktionen

PRIMES is in P. Ein Vortrag von Holger Szillat.

Übung Algorithmen und Datenstrukturen

Punktlokalisierung. Dr. Martin Nöllenburg Vorlesung Algorithmische Geometrie

Exponentielle Suche 4/26/10. Beweis für. Situation: Idee: suche zunächst "rechten Rand" r, so dass k < Ar Algo: Analyse:

2. Hausübung Algorithmen und Datenstrukturen

Kapitel ADS:II. II. Algorithm Engineering

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)

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT

Transkript:

lausthal Informatik II Komplexität von Algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Leistungsverhalten von Algorithmen Speicherplatzkomplexität: Wird primärer & sekundärer Speicherplatz effizient genutzt? Laufzeitkomplexität: Steht die Laufzeit im akzeptablen / vernünftigen / optimalen Verhältnis zur Aufgabe? Theorie: liefert untere Schranke, die für jeden Algorithmus gilt, der das Problem löst Spezieller Algorithmus liefert obere Schranke für die Lösung des Problems Erforschung von oberen und unteren Schranken: Algorithmik (praktische Informatik) und Komplexitätstheorie (theoretischen Informatik). Zachmann Informatik II SS 2010 Komplexität 2 1

Laufzeit Definition: Die Laufzeit T(x) eines Algorithmus A bei Eingabe x ist definiert als die Anzahl von Basisoperationen, die Algorithmus A zur Berechnung der Lösung bei Eingabe x benötigt Definition der Basisoperationen: siehe "omputational Model" in Kap. 1 Ziel: Laufzeit = Funktion der röße der Eingabe. Zachmann Informatik II SS 2010 Komplexität 3 Laufzeitanalyse Sei P ein gegebenes Programm und x Eingabe für P, x Länge von x, und T P (x) die Laufzeit von P auf x Ziel: beschreibe den Aufwand eines Algorithmus als Funktion der röße des Inputs (kann verschieden gemessen werden): T p (n) = Laufzeit des Programms P für Eingaben der Länge n Der beste Fall (best case): Oft leicht zu bestimmen, kommt in der Praxis jedoch selten vor: Der schlechteste Fall (worst case): Liefert garantierte Schranken, meist relativ leicht zu bestimmen. Oft zu pessimistisch:. Zachmann Informatik II SS 2010 Komplexität 4 2

Bemerkung: Die exakte röße der Eingabe (in Bytes) ist abhängig vom Problem! Das ist aber i.a. kein Problem, da wir fast immer nur am Verhalten der Laufzeit in Relation zur Eingabegröße interessiert sind Außer, die sog. "verborgenen" Konstanten sind sehr groß / unterschiedlich... (später). Zachmann Informatik II SS 2010 Komplexität 5 Kostenmaße Einheitskostenmaß: Annahme, jedes "primitive" Datenelement belegt, unabhängig von seinem Wert, denselben Speicherplatz (z.b. 4 Bytes) Damit: röße der Eingabe bestimmt durch Anzahl der Datenelemente Beispiel: Sortierproblem Logarithmisches Kostenmaß (Bit-Komplexität): Annahme, jedes Datenelement belegt einen von seiner röße (logarithmisch) abhängigen Platz röße der Eingabe ist bestimmt durch die Summe der tatsächlichen rößen der Elemente Erinnerung: für Integer n ist die # Bits zur Darstellung = Beispiel: Zerlegung einer gegebenen großen Zahl in Primfaktoren Ab jetzt immer Einheitskostenmaß. Zachmann Informatik II SS 2010 Komplexität 6 3

Beispiel: Minimum-Suche Eingabe : Array von n Zahlen (a 0, a 2,, a n-1 ). Ausgabe : Index i, so dass a i a j für alle Indizes 1 j n. Beispiel: Eingabe: 31, 41, 59, 26, 51, 48 Ausgabe: 3 def min(a): min = 0 for j in range( 1, len(a) ): if A[j] < A[min]: min = j return min. Zachmann Informatik II SS 2010 Komplexität 7 Kosten max. Anzahl def min(a): min = 0 for j in range( 1, len(a) ): if A[j] < A[min]: min = j c 1 1 c 2 n - 1 c 3 n - 1 c 4 n - 1 Zusammen: Zeit T (n) =c 1 +(n 1) (c 2 + c 3 + c 4 ) c 5 n + c 1 n = röße des Arrays. Zachmann Informatik II SS 2010 Komplexität 8 4

Weiteres Beispiel für Aufwandsberechnung Wir betrachten folgenden Algorithmus, der die Funktion berechnet: f (n) =1! 2! (n 2)! (n 1)! def f(n): r = 1 while n > 0 : i = 1 while i < n: r *= i i += 1 n -= 1 return r. Zachmann Informatik II SS 2010 Komplexität 9 Anzahl Mult M(n) Anzahl der Inkrementierungen:, woraus folgt: Die Anzahl der Vergleiche Die Anzahl benötigter Zuweisungen Z(n) ist gleich r = 1 while n > 0 : i = 1 while i < n: r *= i i += 1 n -= 1 return r. Zachmann Informatik II SS 2010 Komplexität 10 5

Rechenmodell / Algorithmisches Modell Für eine präzise mathematische Laufzeitanalyse benötigen wir ein Rechenmodell, das definiert Welche Operationen zulässig sind. Welche Datentypen es gibt. Wie Daten gespeichert werden. Wie viel Zeit Operationen auf bestimmten Daten benötigen. Formal ist ein solches Rechenmodell gegeben durch die Random Accsess Maschine (RAM). RAMs sind Idealisierung von 1-Prozessorrechner mit einfachem aber unbegrenzt großem Speicher.. Zachmann Informatik II SS 2010 Komplexität 11 Basisoperationen und deren Kosten Definition : Als Basisoperationen bezeichnen wir Arithmetische Operationen Addition, Multiplikation,Division, Ab-, Aufrunden, auf Zahlen fester Länger (z.b 64 Bit = Double); Datenverwaltung Laden, Speichern, Kopieren von Datensätzen fester röße; Kontrolloperationen Verzweigungen, Sprünge, Funktionsaufruf. Kosten: Zur Vereinfachung nehmen wir an, daß jede dieser Operationen bei allen Operanden gleich viel Zeit benötigt (im Einheitskostenmaß) Überwiegend unabhängig von der verwendeten Programmiersprache Ablesbar aus Pseudocode oder Programmstück Exakte Definition ist nicht bedeutend. Zachmann Informatik II SS 2010 Komplexität 12 6

Beispiele einen Ausdruck auswerten einer Variablen einen Wert zuweisen Indizierung in einem Array Aufrufen einer Methode / Funktion mit Parametern Verlassen einer Methode / Funktion. Zachmann Informatik II SS 2010 Komplexität 13 Beispiel für das Wachstum von Funktionen. Zachmann Informatik II SS 2010 Komplexität 14 7

Funktionenklassen Ziel: konstante Summanden und Faktoren sollen bei der Aufwandsbestimmung vernachlässigt werden ründe: Man ist am asymptotischem Verhalten für große Eingaben interessiert enaue Analyse ist technisch oft sehr aufwendig oder unmöglich Lineare Beschleunigungen sind immer möglich (schnellere Hardware) Idee: Komplexitätsmessungen mit Hilfe von Funktionenklassen Alle Funktionen, die im Prinzip "gleich schnell" wachsen, sollen in einer Funktionenklasse sein roß-o-notation: Mit O-, Ω- und Θ-Notation sollen obere, untere bzw. genaue Schranken für das Wachstum von Funktionen beschrieben werden.. Zachmann Informatik II SS 2010 Komplexität 15 "roß-o" Sei Definition roß-o: Die Ordnung von f (the order of f) ist die Menge von Funktionen Definition roß-omega: die Menge Ω ist definiert als Definition roß-theta: Die exakte Ordnung Θ von f(n) ist definiert als Terminologie: O, Ω, Θ, heißen manchmal auch Landau'sche Symbole. Zachmann Informatik II SS 2010 Komplexität 16 8

Veranschaulichung der O-Notation Die Funktion f O(g), wenn es positive Konstanten c und n 0 gibt, so daß f(n) ab n 0 unterhalb c. g(n) liegt c. g(n) f(n) n 0 n. Zachmann Informatik II SS 2010 Komplexität 17 Veranschaulichung der Ω -Notation Die Funktion f Ω(g), wenn es positive Konstanten c und n 0 gibt, so dass f(n) ab n 0 oberhalb c. g(n) liegt f(n) c. g(n) n 0 n. Zachmann Informatik II SS 2010 Komplexität 18 9

Veranschaulichung der Θ-Notation Die Funktion f Θ(g), wenn es positive Konstanten c 1, c 2, und n 0 gibt, so dass f(n) ab n 0 zwischen c 1 g(n) und c 2 g(n) "eingepackt" werden kann c 1 g(n) f(n) c 2 g(n) n 0 n. Zachmann Informatik II SS 2010 Komplexität 19 Bemerkungen zu den O-Notationen In manchen Quellen findet man leicht abweichende Definitionen, etwa Für die relevantesten Funktionen f (etwa die monoton steigenden f nicht kongruent 0) sind diese Definitionen äquivalent Schreibweise (leider) oft : Minimalität: Die angegebene rößenordnung muss nicht minimal gewählt sein Asymptotik: Wie groß c und n 0 sind bleibt unklar (kann sehr groß sein!) "Verborgene Konstanten" (hidden constants): Die Konstanten c und n 0 haben für "kleine" n großen Einfluss!. Zachmann Informatik II SS 2010 Komplexität 20 10

Beispiel Min-Search Behauptung: unser Minimum-Search-Algo besitzt Laufzeit Θ(n) Erinnerung: T (n) c 5 n + c 1 def min(a): min = 0 for j in range (1, len(a)): if A[j] < A[min]: min = j Zum Beweis ist zu zeigen: 1. Es gibt ein c 2 und n 2, so dass die Laufzeit von Min-Search bei allen Eingaben der röße n n 2 immer höchstens c 2 n ist. (roß O) 2. Es gibt ein c 1 und n 1, so dass für alle n n 1 eine Eingabe der röße n existiert, bei der Min Search mindestens Laufzeit c 1 n besitzt. (Omega). Zachmann Informatik II SS 2010 Komplexität 21 Beispiele zu Funktionsklassen Ist? esucht: also n c 1 Wähle, so dass die Bedingung erfüllt ist, Ist? esucht: so dass Widerspruch! Analog zeigt man z.b. dass n log n O n. Zachmann Informatik II SS 2010 Komplexität 22 11

Der roß-o-kalkül Zunächst ein paar einfache "Rechen"-Regeln: Sei Dann gilt:. Zachmann Informatik II SS 2010 Komplexität 23 Additionsregel Lemma, Teil 1: Für beliebige Funktionen f und g gilt: Zu beweisen: nur das rechte "=" Zu beweisen: jede der beiden Mengen ist jeweils in der anderen Menge enhalten " ": Sei Abschätzung nach oben: Mit gilt Also ist. Zachmann Informatik II SS 2010 Komplexität 24 12

" ": Sei Also gilt Abschätzung nach oben: Also ist Bedingung für mit denselben c, n 0 erfüllt. Zachmann Informatik II SS 2010 Komplexität 25 Lemma, Teil 2: Für beliebige Funktionen f und g gilt: Additionsregel findet Anwendung bei der Berechnung der Komplexität, wenn Programmteile hintereinander ausgeführt werden.. Zachmann Informatik II SS 2010 Komplexität 26 13

Multiplikationsregel Lemma: Für beliebige Funktionen f und g gilt: Multiplikationsregel findet Anwendung bei der Berechnung der Komplexität, wenn Programmteile ineinander geschachtelt werden (Schleifen). Zachmann Informatik II SS 2010 Komplexität 27 Teilmengenbeziehungen Lemma: Es gelten die folgenden Aussagen: 1. 2. 3. Beweis von Teil 1: 1. 2. Also Zu zeigen: jedes ist auch in Sei also. Per Def gilt Wähle Damit gilt Also und für alle n n 0. Zachmann Informatik II SS 2010 Komplexität 28 14

Teil 2 & 3 : analog. Zachmann Informatik II SS 2010 Komplexität 29 Transitivität von roß O Lemma: Falls f O g und g O h, dann ist f O h. Beweis: Sei und. Zachmann Informatik II SS 2010 Komplexität 30 15

Einfache Beziehungen Lemma: Für alle gilt Beweis: Übung Satz: Sei, wobei für 0 i m. Dann gilt Insbesondere: Es seien p 1 und p 2 Polynome vom rad d 1 bzw. d 2, wobei die Koeffizienten vor und n d 2 n d 1 positiv sind. Dann gilt:. Zachmann Informatik II SS 2010 Komplexität 31 Für alle k, k fest, gilt: Für alle k > 0 und ε > 0 gilt: Es gilt: Für beliebige positive Zahlen a, b 1 gilt: Insbesondere: Beweise: Übungsaufgabe. (leichzeitig ein Beleg, dass die Analysis-Vorlesung Anwendung hat ). Zachmann Informatik II SS 2010 Komplexität 32 16

Achtung: roß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass f O g und auch g O f. Wähle zum Beispiel und. Zachmann Informatik II SS 2010 Komplexität 33 Beweishilfe für die Zuordnung in eine Komplexitätsklasse Lemma: Es gilt: Insbesondere hat man dann in Fall (1):. Zachmann Informatik II SS 2010 Komplexität 34 17

Wie überprüft man diesen Limes?. Zachmann Informatik II SS 2010 Komplexität 35 Einige wichtige Funktionenklassen Klasse Bezeichnung Beispiele O(1) Konstante Funtionen 5 O(log n) Logarithmische Funktionen log 2 n, log 3 n O(n) Lineare Funktionen n, 5n - 3 O(n log n) nlog n-wachsende Funktionen n log 2 n O(n 2 ) Quadratische Funktionen n 2, n 2 +1 O(n 3 ) Kubische Funktionen n 3, 4n 3 + n - 3 O(n k ), k fest Polynomielle Funktionen 8n 5-2n 3 + n 2 + 2n O(2 n ) Exponentielle Funktionen 2 n, 3 n. Zachmann Informatik II SS 2010 Komplexität 36 18

Problemgröße und Rechenzeit Wenn wir annehmen, dass jedes Element einer Eingabe der röße n in 1 msec verarbeitet werden kann, dann lassen sich Probleme folgender röße lösen: Laufzeit in 1 Sekunde in 1 Minute in 1 Stunde T(n) = n 1000 60000 3600000 T(n) = n log n 140 4895 204094 T(n) = n 2 31 244 1897 T(n) = n 3 10 39 153 T(n) = 2 n 9 15 21. Zachmann Informatik II SS 2010 Komplexität 37 Wenn wir einen doppelt so schnellen Rechner kaufen, dann lässt sich anstatt eines Problems der röße N in der gleichen Zeit ein Problem folgender röße lösen: Laufzeit f(n) n n log n Neue Problemgröße 2N etwas weniger als 2N n 2 1.41N n 3 1.26N 2 n N+1. Zachmann Informatik II SS 2010 Komplexität 38 19

Wenn wir einen doppelt so schnellen Rechner kaufen, dann lässt sich anstatt eines Problems der röße N in der gleichen Zeit ein Problem folgender röße lösen: Laufzeit f(n) n n log n Neue Problemgröße 2N etwas weniger als 2N n 2 1.41N n 3 1.26N 2 n N+1. Zachmann Informatik II SS 2010 Komplexität 39 Definition "polynomielle / exponentielle Zeit" : wir sagen, ein Algorithmus A mit Komplexität f(n) braucht höchstens polynomielle Rechenzeit (is in polynomial time), falls es ein Polynom P(n) gibt, so dass. A braucht höchstens exponentielle Rechenzeit (exponential time), falls es eine Konstante gibt, so dass.. Zachmann Informatik II SS 2010 Komplexität 40 20