Datenstrukturen und SS Robert Elsässer

Ähnliche Dokumente
2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

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

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

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

Vorlesung 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

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

Algorithmik Kap. 2: Laufzeit von Algorithmen

Algorithmen und Datenstrukturen

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

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

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

Übung Algorithmen und Datenstrukturen

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

Informatik I Komplexität von Algorithmen

Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5

Effizienz von Algorithmen

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen 1 VL Übungstest WS November 2007

Tutoraufgabe 1 (Sortieralgorithmus):

Algorithmen und Datenstrukturen Heapsort

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Informatik I Komplexität von Algorithmen

15. Elementare Graphalgorithmen

Algorithmen und Datenstrukturen. Organisatorisches. Christian Komusiewicz Ernst-Abbe-Platz 2, R3315

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

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor

Grundlagen: Algorithmen und Datenstrukturen

Abschnitt: Algorithmendesign und Laufzeitanalyse

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I Grundlagen

Grundlagen: Algorithmen und Datenstrukturen

Datenstrukturen, Algorithmen und Programmierung 2

2. Effizienz von Algorithmen

Musterlösungen zu Datenstrukturen und Algorithmen SS 2005 Blatt 2, Aufgabe 3 Wir schreiben zunächst alle Funktionen zur Basis 2.

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

Kapitel 6 Elementare Sortieralgorithmen

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Datenstrukturen und Algorithmen

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

14. Rot-Schwarz-Bäume

Algorithmen und Datenstrukturen

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

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)

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

Datenstrukturen & Algorithmen

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

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin

Informatik II, SS 2014

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

5. Übungsblatt zu Algorithmen I im SoSe 2016

3.3 Laufzeit von Programmen

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

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert

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)

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Komplexität von Algorithmen OOPM, Ralf Lämmel

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

Algorithmen & Komplexität

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

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

Kapitel 8 Fortgeschrittene Sortieralgorithmen

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Datenstrukturen, Algorithmen und Programmierung 2

Verteilte Algorithmen und Datenstrukturen. Prof. Dr. Christian Scheideler Institut für Informatik Universität Paderborn

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Grundlagen der Informatik

NAME, VORNAME: Studiennummer: Matrikel:

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

Algorithmen und Datenstrukturen (für ET/IT)

2 Wachstumsverhalten von Funktionen

Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Übungsklausur Algorithmen I

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Wiederholung. Beschreibung von Algorithmen durch Pseudocode. Laufzeitverhalten beschreiben durch O-Notation.

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

Datenstrukturen und Algorithmen 2. Klausur SS 2001

F3 Berechenbarkeit und Komplexität

Übung Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Transkript:

Datenstrukturen und Algorithmen Robert Elsässer

Organisatorisches Vorlesung: Mo 11:15-12:45 Audimax Fr 11:15-12:45 Raum G Zentralübung: Do 13:00 13:45 Raum G Beginn: nächste Woche Übungen: Beginn: nächste Woche Donnerstag 16:00 Uhr 2

Organisatorisches Heimübungen: Jede Woche ein Übungsblatt (Donnerstags) 1. Blatt heute nach der Vorlesung Abgabe: Donnerstag bis 13:00 Uhr, D3-Flur Bonuspunkte (Gruppen 2-4 Personen) 50% - 75% : 1/3 Note 75% - 90% : 2/3 Note > 90% : 1.0 Note Erste Abgabe: nächste Woche Erste bewertete Abgabe: übernächste Woche Vorstellung einer Musterlösung in der Zentralübung 3

Organisatorisches Übungsgruppen: StudInfo, erreichbar über www.cs.uni-paderborn.de/fachgebiete/fg-ti/lehre0/ss2009/dua-ss2009.html IMT-Login und Password Bis zu 30 Teilnehmer in einer Gruppe Freischaltung heute Nachmittag Alle bisherigen Anmeldungen wurden gelöscht Insgesamt 14 Gruppen Übungsaufgaben (Abgabe, Bonuspunkte) Präsenzübungen 4

Organisatorisches Klausur: Eine Korrelation mit den Übungsaufgaben ist zu erwarten Es gab in der Vergangenheit einen direkten Zusammenhang zwischen Übungsteilnahme/abgabe und gutem Abschneiden bei Klausuren Sprechzeiten: Do 16:15 17:00 (Raum F2.315; Fürstenallee) Fragen/Anmerkungen zunächst an den eigenen Tutor Webseite der Vorlesung: www.cs.uni-paderborn.de/fachgebiete/fg-ti/lehre0/ss2009/dua-ss2009.html 5

Organisatorisches Literatur: Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, 2nd ed. MIT Press/McGraw-Hill ISBN 0-262-53196-8 6

Inhaltsangabe: Einleitung, Motivation Pseudocode, Invarianten, Laufzeitanalyse Grundlagen Groß-O-Notation Inkrementelle Algorithmen, Insertion-Sort Divide & Conquer Algorithmen, Merge-Sort Quick-Sort Analyse und Varianten Rekursionsgleichungen, Master-Theorem Sortieralgorithmen Algorithmen mit Datenstrukturen, Heaps, Heap-Sort Untere Schranke für Vergleichssortierer Counting-Sort

ADTs und Datenstrukturen, Stacks, Queues, Listen, Bäume Hashtabellen Datenstrukturen Binäre Suchbäume Elementare Graphalgorithmen, Breitensuche Tiefensuche Zusammenhangskomponenten Graphalgorithmen Minimale Spannbäume, Algorithmus von Prim Algorithmus von Kruskal, disjunkte Vereinigungsmengen Gierige Algorithmen, Scheduling-Probleme Dynamische Programmierung, Längste gemeinsame Teilfolge Optimale Suchbäume Entwurfsmethoden Rucksack-Problem Amortisierte Laufzeitanalyse,

1. Einführung Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen? Wie beschreiben wir Algorithmen? Nach welchen Kriterien beurteilen wir Algorithmen? Welche Algorithmen betrachten wir? Wie passt ins Informatikstudium? 1.Einleitung 9

Was ist ein Algorithmus? Definition 1.1: Ein Algorithmus ist eine eindeutige Beschreibung eines Verfahrens zur Lösung einer bestimmten Klasse von Problemen. Genauer: Ein Algorithmus ist eine Menge von Regeln für ein Verfahren, um aus gewissen Eingabegrößen bestimme Ausgabegrößen herzuleiten. Dabei muss 1. Das Verfahren in einem endlichen Text beschreibbar sein. 2. Jeder Schritt des Verfahrens auch tatsächlich ausführbar sein. 3. Der Ablauf des Verfahrens zu jedem Zeitpunkt eindeutig definiert sein. 1.Einleitung 10

Beispiel Sortieren Eingabe bei Sortieren : Folge von n Zahlen (a 1,a 2, K,a n ). Ausgabe bei Eingabefolge, Sortieren : Umordnung (b so dass b b L b. 1 2 n 1,b 2, K,b n ) der Sortieralgorithmus : Verfahren, das zu jeder Folge (a1,a sortierte Umordnung (b1,b2, K,bn ) berechnet. 2, K,a n ) Eingabe : (31,41,59,26,51,48) Ausgabe : (26,31,41,48,51,59) 1.Einleitung 11

Was ist eine Datenstruktur? Definition 1.2: Eine Datenstruktur ist eine bestimmte Art Daten im Speicher eines Computers anzuordnen, so dass Operationen wie z.b. Suchen, Einfügen, Löschen einfach zu realisieren sind. Einfache Beispiele: Listen Arrays sind eng verbunden: Gute Datenstrukturen häufig unerlässlich für gute Algorithmen. 1.Einleitung 12

Beispielprobleme Wie findet ein Navigationssystem gute Verbindungen zwischen zwei Orten? Wie werden im Internet Informationen geroutet? Wie berechnet ein Unternehmen eine möglichst gute Aufteilung seiner Ressourcen, um seinen Gewinn zu maximieren? Wie werden etwa in Google Informationen schnell gefunden? Wie werden Gleichungssysteme der Form Ax=b gelöst? 1.Einleitung 13

Softwareentwicklung Problem Modellierung Entwicklung von Algorithmus/Datenstruktur Implementierung 1.Einleitung 14

Kriterien für Algorithmen Algorithmen müssen korrekt sein. Benötigen Korrektheitsbeweise. Algorithmen sollen Zeit- und Speichereffizient sein. Benötigen Analysemethoden für Zeit-/Speicherbedarf. Analyse basiert nicht auf empirischen Untersuchungen, sondern auf mathematischen Analysen. Nutzen hierfür Pseudocode und Basisoperationen. 1.Einleitung 15

Algorithmenentwurf Zum Entwurf eines Algorithmus gehören 1. Beschreibung des Algorithmus 2. Korrektheitsbeweis 3. Zeit- bzw. Speicherbedarfsanalyse. 1.Einleitung 16

Beschreibung von Algorithmen Zunächst informell (mathematisches) Verfahren zur Lösung. Dann Präzisierung durch Pseudocode. Keine Beschreibung durch Programmcode in Java oder C, C++. 1.Einleitung 17

Algorithmenentwurf Warum mathematische Korrektheitsbeweise? Fehler können fatale Auswirkungen haben (Steuerungssoftware in Flugzeugen, Autos, AKWs) Fehler können selten auftreten ( Austesten funktioniert nicht) Der teuerste algorithmische Fehler? Pentium bug ( $500 Mio.) Enormer Image Schaden Trat relativ selten auf 1.Einleitung 18

Algorithmenentwurf Die Berechnung von z = x- (x/y)y sollte z=0 ergeben. Der fehlerhafte Pentium-Prozessor berechnete statt dessen mit den Werten x=4195835 und y=3145727 den Wert z=256 $480 Mio. entgangener Gewinn 1.Einleitung 19

Wozu gute Algorithmen? Computer werden zwar immer schneller und Speicher immer größer und billiger, aber Geschwindigkeit und Speicher werden immer begrenzt sein. Daher muss mit den Ressourcen Zeit und Speicher geschickt umgegangen werden. Außerdem werden in Anwendungen immer größere Datenmengen verarbeitet. Diese wachsen schneller als Geschwindigkeit oder Speicher von Computern. 1.Einleitung 20

Effekt guter Algorithmen - Sortieren Insertion- Sort : Merge -Sort : Sortiert n Zahlen mit Vergleichen. Computer A : 9 10 Vergleiche/Sek. 6 c = 2,n = 10. 1 c 1 n 2 Sortiert n Zahlen mit c nlog(n) Vergleichen. 2 Computer B : 7 10 Vergleiche/Sek. 6 c = 50,n = 10. 2 Dann benötigt A 6 2 2 (10 ) = 2000 Sek. 9 10 Dann benötigt B 6 6 50 (10 )log(10 ) 7 10 100 Sek. 1.Einleitung 21

Probleme, Algorithmen, Ziele Ziel der Vorlesung ist es 1. Wichtige Probleme, Algorithmen und Datenstrukturen kennen zu lernen. 2. Wichtige Algorithmentechniken und Entwurfsmethoden kennen und anwenden zu lernen. 3. Wichtige Analysemethoden kennen und anwenden zu lernen. 4. Das Zusammenspiel von Datenstrukturen und Algorithmen zu verstehen. 1.Einleitung 22

DuA + Info-Studium Modellierung Beschreibung von Problemen Grenzen von Algorithmen DuA Umsetzung von Algorithmen durch Programmen Berechenbarkeit, formale Sprachen und Komplexität Programmierung, Softwareentwurf, Softwarepraktikum 1.Einleitung 23

2. Grundlagen Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten. Laufzeitverhalten beschreiben durch O-Notation. 24

Beispiel Minimum-Suche Eingabe bei Minimum - Suche : Folge von n Zahlen (a1,a 2, K,an ). Ausgabe bei Minimum - Suche : Index i, so dass alle Indizes 1 j ai a n. j für Minimumalgorithmus : Verfahren, das zu jeder Folge (a 1,a2, K,an ) Index eines kleinsten Elements berechnet. Eingabe : (31,41,59,26,51,48) Ausgabe : 4 25

Min-Search in Pseudocode Min - Search( A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] 26

Pseudocode (1) Schleifen (for, while, repeat) Bedingtes Verzweigen (if then else) (Unter-)Programmaufruf/Übergabe (return) Zuweisung durch Kommentar durch > Daten als Objekte mit einzelnen Feldern oder Eigenschaften (z.b. length(a):= Länge des Arrays A) Blockstruktur durch Einrückung 27

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] Eingabe: (31,41,59,26,51,48) 28

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] > Zuweisung Eingabe: (31,41,59,26,51,48) min = 1 29

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] Schleife Eingabe: (31,41,59,26,51,48) min = 1, j = 2 30

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] Verzweigung Eingabe: (31,41,59,26,51,48) min = 1, j = 2, A[2] < A[1]? Nein 31

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] Schleife Eingabe: (31,41,59,26,51,48) min = 1, j = 3 32

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] Verzweigung Eingabe: (31,41,59,26,51,48) min = 1, j = 3, A[3] < A[1]? Nein 33

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] Schleife Eingabe: (31,41,59,26,51,48) min = 1, j = 4 34

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] Verzweigung > Zuweisung Eingabe: (31,41,59,26,51,48) min = 1, j = 4, A[4] < A[1]? Ja min = 4 35

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] Schleife Eingabe: (31,41,59,26,51,48) min = 4, j = 5 36

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] Verzweigung Eingabe: (31,41,59,26,51,48) min = 4, j = 5, A[5] < A[4]? Nein 37

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] Schleife Eingabe: (31,41,59,26,51,48) min = 4, j = 6 = length[a] 38

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] Verzweigung Eingabe: (31,41,59,26,51,48) min = 4, j = 6, A[6] < A[4]? Nein 39

Min-Search Min - Search(A) 1 2 3 4 5 min 1 for j 2 to length do if A[ j] < A[ min] then min j return min [ A] > Ausgabe Eingabe: (31,41,59,26,51,48) min = 4 40

Invarianten Definition 2.1 Eine (Schleifen-) Invariante ist eine Eigenschaft eines Algorithmus, die vor und nach jedem Durchlaufen einer Schleife erhalten bleibt. Invarianten dienen dazu, die Korrektheit von Algorithmen zu beweisen. Sie werden in der Vorlesung immer wieder auftauchen und spielen eine große Rolle. 41

Invarianten und Korrektheit Invariante und Korrektheit von Algorithmen wird bewiesen, indem gezeigt wird, dass Die Invarianten vor dem ersten Schleifendurchlauf erfüllt ist (Initialisierung). Die Eigenschaft bei jedem Schleifendurchlauf erhalten bleibt (Erhaltung). Die Invariante nach Beendigung der Schleife etwas über die Ausgabe des Algorithmus aussagt, Algorithmus korrekt ist (Terminierung). 42

Invariante bei Min-Search Invariante: Vor Schleifendurchlauf mit Index i ist A[min] kleinstes Element in A[1..i-1]. Initialisierung: Der kleinste Index für die Schleife ist i=2. Davor ist A[min]=A[1]. Erhaltung: if-abfrage mit then in Zeilen 3 und 4 ersetzt korrekt Minimum, wenn zusätzlich A[i] betrachtet wird. Terminierung: Vor Durchlauf mit i=n+1 ist A[min] das Minimum der Zahlen in A[1..n]. 43

Laufzeitanalyse und Rechenmodell 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 Access Maschine (RAM). RAMs sind Idealisierung von 1- Prozessorrechner mit einfachem aber unbegrenzt großem Speicher. 44

Basisoperationen Kosten Definition 2.2: Als Basisoperationen bezeichnen wir Arithmetische Operationen Addition, Multiplikation, Division, Ab-, Aufrunden. Datenverwaltung Laden, Speichern, Kopieren. Kontrolloperationen Verzweigungen, Programmaufrufe, Wertübergaben. Kosten: Zur Vereinfachung nehmen wir an, dass jede dieser Operationen bei allen Operanden gleich viel Zeit benötigt. In weiterführenden Veranstaltungen werden Sie andere und häufig realistischere Kostenmodelle kennen lernen. 45

Eingabegröße - Laufzeit Definition 2.3: Die Laufzeit T(I) eines Algorithmus A bei Eingabe I ist definiert als die Anzahl von Basisoperationen, die Algorithmus A zur Berechnung der Lösung bei Eingabe I benötigt. Definition 2.4: Die (worst-case) Laufzeit eines + Algorithmus A ist eine Funktion T : N R, wobei T(n) : = { T(I ) : I hat Eingabegröße n} max. 46

Eingabegröße Laufzeit (2) Laufzeit angegeben als Funktion der Größe der Eingabe. Eingabegröße abhängig vom Problem definiert. Eingabegröße Minimumssuche = Größe des Arrays. Laufzeit bei Minimumsuche: A Array, für das Minimum bestimmt werden soll. T(A ):= Anzahl der Operationen, die zur Bestimmung des Minimums in A benötigt werden. Satz 2.5: Algorithmus Min-Search hat Laufzeit T(n) an+b für Konstanten a,b. 47

Minimum-Suche Min - Search(A) cost times 1 2 3 4 5 min 1 c 1 for j 2 to length[ A] c do if A[ j] < A[ min] c then min j c return min c 2 3 4 5 1 n n 1 t 1 Hierbei ist tt die Anzahl der Mimimumswe Minimumswechsel. Es gilt t nn-1 1 1. 48

O-Notation Definition 2.6. : Sei g : N R wir mit O( g(n)) die folgende + eine Funktion.Dann bezeichnen Menge von Funktionen O(g(n)) : = f(n ) : Es existieren Konstanten c>0,n so dass für alle n n0 gilt 0 f( n ) cg (n ). 0, O(g(n)) formalisiert: Die Funktion f(n) wächst asymptotisch nicht schneller als g(n). Statt f(n) in O(g(n)) in der Regel f(n)= O(g(n)) 49

Ω-Notation + Definition 2.7: Sei g : N R eine Funktion.Dann bezeichnen wir mit Ω( g(n )) die folgende Menge von Funktionen Ω(g(n )) : = f(n ) : Es existieren Konstanten c>0,n so dass füralle n n0 gilt 0 cg ( n ) f(n ). 0, Ω(g(n)) formalisiert: Die Funktion f(n) wächst asymptotisch mindestens so schnell wie g(n). Statt f(n) inω(g(n)) in der Regel f(n)= Ω(g(n)) 50

Θ-Notation + Definition 2.8: Sei g : N R eine Funktion.Dann bezeichnen wir mit Θ( g(n)) die folgende Menge von Funktionen Θ(g(n)) : = f(n ) : Es existieren Konstanten c 1 >0,c so dass füralle n n0 gilt 0 c g(n) f(n ) c g(n). 1 2 2,n 0, Θ(g(n)) formalisiert: Die Funktion f(n) wächst asymptotisch genau so schnell g(n). Statt f(n) inθ(g(n)) in der Regel f(n)= Θ(g(n)) 51

Illustration von Θ(g(n)) g(n) c 2 f(n) c 1 g(n) 52

Regeln für Kalküle - Transitivität O-, Ω- und Θ-Kalkül sind transitiv, d.h.: Aus f(n)= O(g(n)) und g(n)= O(h(n)) folgt f(n)= O(h(n)). Aus f(n)= Ω(g(n)) und g(n)= Ω(h(n)) folgt f(n)= Ω(h(n)). Aus f(n)= Θ(g(n)) und g(n)= Θ(h(n)) folgt f(n)= Θ(h(n)). 53

Regeln für Kalküle - Reflexivität O-, Ω- und Θ-Kalkül sind reflexiv, d.h.: f(n) = O(f(n)) f(n) = Ω(f(n)) f(n) = Θ(f(n)) Θ-Kalkül ist symmetrisch, d.h. f(n) = Θ(g(n)) genau dann, wenn g(n) = Θ(f(n)). 54

Regeln für Kalküle Satz 2.10: Sei f : N R + mit f ( n) k,l 0 mit k l. Dann gilt ( k ) l 1. f ( n ) O f ( n ) =. ( l ) 2. f ( n) k Ω f ( n) =. 1für alle Satz 2.11: Seien ε,k > 0 beliebig. Dann gilt ε 1. ( n) k = O( n ) log. ( ) k ε 2. Ωlogn ( ) n =. n. Weiter sei 55

Anwendung auf Laufzeiten Min-Search Satz 2.12: Minimum-Search besitzt Laufzeit Θ(n). Zum Beweis ist zu zeigen: 1. Es gibt ein c2, so dass die Laufzeit von Min - Search bei allen Eingaben der Größe n immer höchstens c n ist. 2 2.Es gibt ein c1, so dass für alle n eine Eingabe In der Größe n existiert bei Min - Search mindestens Laufzeit c n besitzt. 1 der 56

Anwendung auf Laufzeiten (2) O-Notation erlaubt uns, Konstanten zu ignorieren. Wollen uns auf asymptotische Laufzeit konzentrieren. Werden in Zukunft Laufzeiten immer mit Hilfe von O-, Ω-,Θ-Notation angeben. 57