Komplexität von Algorithmen:

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

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

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

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

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

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

Übung Algorithmen und Datenstrukturen

Asymptotik und Laufzeitanalyse

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

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

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:

Algorithmen und Datenstrukturen (für ET/IT)

Komplexität von Algorithmen

Übung zur Vorlesung Berechenbarkeit und Komplexität

WS 2009/10. Diskrete Strukturen

Prof. Dr. Margarita Esponda

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

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

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

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)

Technische Universität München

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

2. Hausübung Algorithmen und Datenstrukturen

3.3 Laufzeit von Programmen

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

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

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Algorithmen und Datenstrukturen 1 Kapitel 5

Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen I Grundlagen

Komplexität von Algorithmen

Programmiertechnik II

2. Effizienz von Algorithmen

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

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

Algorithmen und Datenstrukturen 1-1. Seminar -

Notation für das asymptotische Verhalten von Funktionen

Algorithmik Kap. 2: Laufzeit von Algorithmen

Datenstrukturen und Algorithmen

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

Grundlagen: Algorithmen und Datenstrukturen

Laufzeit und Komplexität

Informatik II, SS 2016

8 Komplexitätstheorie

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

Stichpunktezettel fürs Tutorium

2 Wachstumsverhalten von Funktionen

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

Einstieg in die Informatik mit Java

Suchen und Sortieren

Kombinatorik: Abzählverfahren (Teschl/Teschl 7) Summenregel. Allgemeiner

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

Algorithmen und Datenstrukturen

Informatik I Komplexität von Algorithmen

Algorithmen und Datenstrukturen Heapsort

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

Kapitel 8 Fortgeschrittene Sortieralgorithmen

4 Effizienz und Komplexität 3.1 1

Informatik I Komplexität von Algorithmen

Abschnitt: Algorithmendesign und Laufzeitanalyse

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

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

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

11. Rekursion, Komplexität von Algorithmen

Algorithmen und Komplexität Lösungsvorschlag zu Übungsblatt 8

Algorithmen und Datenstrukturen Tutorium I

Kapitel 7 KOMPLEXITÄT. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

Übung Algorithmen und Datenstrukturen

Dies ist gerade der konstruktive Schritt beim Aufbau von Binomialbäumen.

Vorlesung 2 KÜRZESTE WEGE

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

Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse

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

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

Kapitel 1: Algorithmen und ihre Analyse

5. Übungsblatt zu Algorithmen II im WS 2017/2018

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

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

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

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

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

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.

Informatik II. 1. Einführung. Ziele der Vorlesung. Inhalte der Vorlesung. Vorlesung am D-BAUG der ETH Zürich

Wann sind Codes eindeutig entschlüsselbar?

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

Schleifeninvarianten. Dezimal zu Binär

Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 17 Sortieren

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

Kapitel 5: Dynamisches Programmieren Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

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

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

Algorithmen und Datenstrukturen 1

Kapitel 9 Suchalgorithmen

Sortierverfahren für Felder (Listen)

Einstieg in die Informatik mit Java

Transkript:

Komplexität von Algorithmen: Ansatz: Beschreiben/erfassen der Komplexität über eine Funktion, zur Abschätzung des Rechenaufwandes abhängig von der Größe der Eingabe n Uns interessiert: (1) Wie sieht eine solche Aufwandsfunktion für Programm P aus (2) Welches Wachstumsverhalten hat diese Aufwandsfunktion insbesondere für große Eingabewerte n Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 1

Wachstumsverhalten Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 2

Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 3

Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 4

Allgemeine Regeln für die Analyse von Algorithmen Laufzeit für jede einzelne Grundoperation/Anweisung: O(1) uniforme Kostenfunktion (logarithmische Kostenfunktion) Laufzeit für eine Folge sequentiell ausgeführter Anweisungen: Summenformel Laufzeit für eine if Abfrage: Zeit für den if-block + Zeit O(1) für Bedingungsauswertung Laufzeit für einen if then elseblock der grössere Zeitbedarf des then- oder des else-blockes Laufzeit von Schleifen (for, while, ) Summe aller Zeiten innerhalb des Schleifenkörpers + Überprüfen der Schleifenbedingung O(1) multipliziert mit der Anzahl der Schleifendurchläufe Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 5

Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 6

Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 7

Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 8

Ө(g) = {f: es existieren positive Konstanten c1,c2 und n0, so dass 0 c1 g(n) f(n) c2 g(n) für alle n n0 } O(g) = {f: es existieren positive Konstanten c und n 0, so dass 0 f(n) c g(n) für alle n n 0 } Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 9

Wichtigste Rechenregeln der O-Notation 1. f (n) = O( f (n)) 2. c O( f (n)) = O( f (n)), c ist eine Konstante 3. O( f (n) ) + O( f (n)) = O( f (n)) 4. O( f (n)) + O( g (n)) = O( max( f (n), g (n))) 5. O(O( f (n))) = O( f (n)) 6. O( f (n)) O( g(n)) = O( f (n) g(n)) 7. O( f (n) g(n)) = f (n) O( g(n)) Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 10

Beispiel 3 sequentiell ausgeführte Programmteile mit Laufzeiten P1: O(n 2 ) P2: O(n 3 ) P3: O(nlog n) Laufzeit der ersten beiden Programme: P1, P2: O(max (n 2, n 3 )) = O(n 3 ) Gesamtlaufzeit: (P1, P2), P3: O(max (n 3, nlog n)) = O(n 3 ) Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 11

Bemerkungen: Mit der O-Notation wird eine obere Schranke für die Laufzeit angegeben. Das heißt, die O-Funktion beschreibt die Laufzeit im schlechtesten Fall (siehe Beispiel 3 auf Folie 21) Mit Hilfe der O-Notation können wir nun eine Aussage treffen, wie effizient ein Algorithmus ist. O(1): Solche Algorithmen liefern unabhängig von der Problemgröße in konstanter Zeit ein Ergebnis. Das ist z.b. der Fall, wenn die Anweisungen des Algorithmus höchstens 1 mal ausgeführt werden Beispiel: Entfernen des ersten Elementes einer Liste. Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 12

O(log n): Die benötigte Zeit ist proportional zum Logarithmus der Problemgröße, d.h. der Algorithmus wird mit wachsendem n langsamer. Bei jeder Verdopplung von n wächst log n um einen gewissen konstanten Wert. Dies tritt z.b bei Algorithmen auf, die ein komplexes Problem in ein kleineres Problem umwandeln und den Aufwand auf einen konstanten Anteil verringern Beispiel: Suche in einer sortierten Liste. O(n): Der Aufwand für einen Algorithmus ist linear in n, ia. entfällt ein kleiner Anteil der Verarbeitung auf jedes Element der Eingabe. Beispiel Suche in einer unsortierten Liste. Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 13

O(nlog n): z.b. Algorithmen, die das zu lösende Problem in Teilprobleme aufteilen, diese unabhängig lösen und die Teillösungen kombinieren. Beispiel: vergleichsbasiertes Sortieren einer Liste. O(n 2 ): Quadratische Laufzeit: typisch für Algorithmen, die alle paarweisen Kombinationen von Datenelementen verarbeiten. Beispiel: Multiplikation einer Matrix mit einem Vektor O(n 3 ): Beispiel: Multiplikation von Matrizen O(2 n ): Beispiel: Bestimmung aller möglichen Teilmengen Bem.: zur log-funktion: Die Basis bewirkt nur eine Änderung um einen konstanten Faktor, d.h. die Basis ist nicht von Bedeutung Vorlesung Algorithmen und Datenstrukturen, WS09/10, C. Eckert 14