Datenstrukturen und Algorithmen

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

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

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

Algorithmen und Datenstrukturen

Vorlesung Berechenbarkeit und Komplexität. Motivation, Übersicht und Organisatorisches

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Datenstrukturen und Algorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

ADS. 1. Vorlesung. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Algorithmen und Datenstrukturen

Datenstrukturen, Algorithmen und Programmierung 2

Algorithmen und Berechnungskomplexität I

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

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

Algorithmen - Eine Einführung

Tutoraufgabe 1 (Vollständige Induktion): Tutoraufgabe 2 (Rotationen): Datenstrukturen und Algorithmen SS15 Übungsblatt 5 (Abgabe 3.6.

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

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

Komplexität von Algorithmen

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

Datenstrukturen & Algorithmen

Algorithmen & Datenstrukturen

Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe

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

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Klausur Algorithmen und Datenstrukturen

Asymptotische Laufzeitanalyse: Beispiel

Klausur Datenstrukturen und Algorithmen SoSe 2012

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

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

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

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

Amortisierte Laufzeitanalyse

Informatikgrundlagen (WS 2015/2016)

Datenstrukturen und SS Robert Elsässer

Algorithmen und Datenstrukturen CS1017

Algorithmen und Datenstrukturen Laufzeitabschätzung

Abschnitt: Algorithmendesign und Laufzeitanalyse

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

Einführung in die Informatik 2

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. PD Ma&hias Thimm

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

2. Übungsblatt zu Algorithmen II im WS 2016/2017

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

Logik und diskrete Strukturen

2 i. i=0. und beweisen Sie mittels eines geeigneten Verfahrens die Korrektheit der geschlossenen Form.

WS 2009/10. Diskrete Strukturen

Kombinatorik. Additions- und Multiplikationsgesetz

Bäume, Suchbäume und Hash-Tabellen

Einführung in die Informatik

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.

JAVA - Suchen - Sortieren

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

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

Programmiertechnik II

Diskrete Strukturen Kapitel 1: Einleitung

DATENSTRUKTUREN UND ALGORITHMEN

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Abschnitt 18: Effizientes Suchen in Mengen

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

Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung

Einstieg in die Informatik mit Java

Ü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:

Institut für Programmierung und Reaktive Systeme 27. Mai Programmieren II. 12. Übungsblatt

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen Kapitel 10

Datenstrukturen & Algorithmen

Algorithmen & Datenstrukturen 1. Klausur

11. Rekursion, Komplexität von Algorithmen

ADS: Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Programmieren I. Kapitel 7. Sortieren und Suchen

Einführung in die Informatik 1

Algorithmen und Datenstrukturen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Lernziele Ablauf Übungsaufgaben Formalitäten. Programmierpraktika. Einführung in das Programmieren und Weiterführendes Programmieren

Kapitel 0: Organisatorisches

Einführung in die Programmierung

WS 2009/10. Diskrete Strukturen

Datenstrukturen und Algorithmen

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

Die Komplexitätsklassen P und NP

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

Algorithmik - Kompaktkurs

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Kapitel 4: Minimale spannende Bäume Gliederung der Vorlesung

Theoretische Informatik 1

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

Sortierverfahren für Felder (Listen)

Ausgewählte Algorithmen: Sortieren von Listen

Transkript:

Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/54 Datenstrukturen und Algorithmen Vorlesung 1: Algorithmische Komplexität Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-15/dsal/ 9. April 2015

Joost-Pieter Katoen Datenstrukturen und Algorithmen 2/54 Übersicht 1 Was sind Algorithmen? Algorithmen und Datenstrukturen Effizienz von Algorithmen 2 Average, Best und Worst Case Laufzeitanalyse Lineare Suche Average-Case Analyse von linearer Suche 3 Organisatorisches Übersicht Übungsbetrieb Prüfung

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 3/54 Übersicht 1 Was sind Algorithmen? Algorithmen und Datenstrukturen Effizienz von Algorithmen 2 Average, Best und Worst Case Laufzeitanalyse Lineare Suche Average-Case Analyse von linearer Suche 3 Organisatorisches Übersicht Übungsbetrieb Prüfung

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 4/54 Algorithmen Algorithmus Eine wohldefinierte Rechenvorschrift, um ein Problem durch ein Computerprogramm zu lösen.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 4/54 Algorithmen Algorithmus Eine wohldefinierte Rechenvorschrift, um ein Problem durch ein Computerprogramm zu lösen. Beispiel (Algorithmen) Quicksort, Heapsort, Lineare und Binäre Suche, Graphalgorithmen.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 4/54 Algorithmen Algorithmus Eine wohldefinierte Rechenvorschrift, um ein Problem durch ein Computerprogramm zu lösen. Beispiel (Algorithmen) Quicksort, Heapsort, Lineare und Binäre Suche, Graphalgorithmen. Löst ein Rechenproblem, beschrieben durch die zu verarbeitenden Eingaben (Vorbedingung / precondition) und die erwartete Ausgabe (Nachbedingung / postcondition), mithilfe einer Folge von Rechenschritten.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 5/54 Beispiel Rechenproblem: Sortieren Beispiel Eingabe: Eine Folge von n natürlichen Zahlen a 1, a 2,..., a n mit a i N. Ausgabe: Eine Permutation (Umordnung) b 1, b 2,..., b n der Eingabefolge, sodass b 1 b 2... b n.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 6/54 Andere Rechenprobleme: kürzester Weg

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 7/54 Andere Rechenprobleme: kürzester Weg

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 8/54 Andere Rechenprobleme: kürzester Weg Beispiel (kürzester Weg) Eingabe: 1. Eine Straßenkarte, auf welcher der Abstand zwischen jedem Paar benachbarter Kreuzungen eingezeichnet ist, 2. eine Startkreuzung s und 3. eine Zielkreuzung z. Ausgabe: Ein kürzeste Weg von s nach z.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 9/54 Andere Rechenprobleme: maximale Flüsse

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 10/54 Andere Rechenprobleme: maximale Flüsse

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 11/54 Andere Rechenprobleme: maximale Flüsse

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 12/54 Andere Rechenprobleme: maximale Flüsse

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 13/54 Andere Rechenprobleme: maximale Flüsse

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 14/54 Andere Rechenprobleme: maximale Flüsse

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 15/54 Andere Rechenprobleme: maximale Flüsse

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 16/54 Andere Rechenprobleme: maximale Flüsse

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 17/54 Andere Rechenprobleme: maximale Flüsse

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 18/54 Andere Rechenprobleme: maximale Flüsse

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 19/54 Andere Rechenprobleme: maximale Flüsse

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 20/54 Andere Rechenprobleme: maximale Flüsse Beispiel (maximale Flüsse) Eingabe: 1. Eine Straßenkarte, auf der die Kapazität der Straßen eingezeichnet ist, 2. eine Quelle und 3. eine Senke. Ausgabe: Die maximale Rate, mit der Material (= Zuschauer) von der Quelle bis zur Senke (= Stadion) transportiert werden kann, ohne die Kapazitätsbeschränkungen der Straßen zu verletzen.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 21/54 Andere Rechenprobleme: das CD-Brennproblem

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 22/54 Andere Rechenprobleme: das CD-Brennproblem Betrachte alle Schallplatten von Nina Hagen:

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 22/54 Andere Rechenprobleme: das CD-Brennproblem Betrachte alle Schallplatten von Nina Hagen: Wie bekommen wir eine Kompilation ihrer Songs auf einige CDs?

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 23/54 Andere Rechenprobleme: das CD-Brennproblem Beispiel (CD-Brennproblem) Eingabe: 1. N N Songs, Song i dauert 0 < n i 80 Minuten, 2. k N CDs, jeweils mit Kapazität: 80 Minuten.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 23/54 Andere Rechenprobleme: das CD-Brennproblem Beispiel (CD-Brennproblem) Eingabe: 1. N N Songs, Song i dauert 0 < n i 80 Minuten, 2. k N CDs, jeweils mit Kapazität: 80 Minuten. Ausgabe: k CDs gefüllt mit einer Auswahl der N Songs, sodass 1. die Songs in chronologische Reihenfolge vorkommen und

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 23/54 Andere Rechenprobleme: das CD-Brennproblem Beispiel (CD-Brennproblem) Eingabe: 1. N N Songs, Song i dauert 0 < n i 80 Minuten, 2. k N CDs, jeweils mit Kapazität: 80 Minuten. Ausgabe: k CDs gefüllt mit einer Auswahl der N Songs, sodass 1. die Songs in chronologische Reihenfolge vorkommen und 2. die totale Dauer der (verschiedenen) ausgewählten Songs maximiert wird, wobei ein Song komplett auf eine CD gebrannt werden soll.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 24/54 Algorithmen Kernpunkte Korrektheit: Bei jeder Eingabeinstanz stoppt der Algorithmus mit der korrekten Ausgabe.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 24/54 Algorithmen Kernpunkte Korrektheit: Bei jeder Eingabeinstanz stoppt der Algorithmus mit der korrekten Ausgabe. Eleganz

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 24/54 Algorithmen Kernpunkte Korrektheit: Bei jeder Eingabeinstanz stoppt der Algorithmus mit der korrekten Ausgabe. Eleganz Effizienz: Wieviel Zeit und Speicherplatz wird benötigt?

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 24/54 Algorithmen Kernpunkte Korrektheit: Bei jeder Eingabeinstanz stoppt der Algorithmus mit der korrekten Ausgabe. Eleganz Effizienz: Wieviel Zeit und Speicherplatz wird benötigt? Effiziente Algorithmen verwenden effektive Datenstrukturen.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 25/54 Datenstrukturen Datenstruktur Ein mathematisches Objekt zur Speicherung von Daten. Man spricht von einer Struktur, da die Daten in einer bestimmten Art und Weise angeordnet und verknüpft werden, um den Zugriff auf sie und ihre Verwaltung geeignet und effizient zu ermöglichen. Beispiele (Datenstrukturen) Array, Baum, Kellerspeicher (stack), Liste, Warteschlange (queue), Heap, Hashtabelle...

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 26/54 Effizienz von Algorithmen Kriterien Wichtige Kriterien sind (für eine bestimmte Eingabe): die benötigte Zeit, Zeitkomplexität der benötigte Platz. Platzkomplexität Zeitkomplexität Platzkomplexität Komplexität des Algorithmus Ziel Beurteilung der Effizienz von Algorithmen unabhängig von verwendetem Computer, Programmiersprache, Fähigkeiten des Programmierers usw.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 27/54 Effizienz von Algorithmen Elementare Operation Die Analyse hängt von der Wahl der elementaren Operationen ab, etwa: Vergleich zweier Zahlen beim Sortieren eines Arrays von Zahlen. Multiplikation zweier Fließkommazahlen bei Matrixmultiplikation.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 27/54 Effizienz von Algorithmen Elementare Operation Die Analyse hängt von der Wahl der elementaren Operationen ab, etwa: Vergleich zweier Zahlen beim Sortieren eines Arrays von Zahlen. Multiplikation zweier Fließkommazahlen bei Matrixmultiplikation. Elementare Operationen Anzahl der elementaren Operationen sollte eine gute Abschätzung für die Anzahl der Gesamtoperationen sein. Anzahl der elementaren Operationen bildet die Basis zur Bestimmung der Wachstumsrate der Zeitkomplexität bei immer längeren Eingaben.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 28/54 Effizienz von Algorithmen Beispiele Technologie führt nur zu Verbesserung um einen konstanten Faktor: Beispiel Selbst ein Supercomputer kann einen schlechten Algorithmus nicht retten: Für genügend große Eingaben gewinnt immer der schnellere Algorithmus auf dem langsameren Computer.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 28/54 Effizienz von Algorithmen Beispiele Technologie führt nur zu Verbesserung um einen konstanten Faktor: Beispiel Selbst ein Supercomputer kann einen schlechten Algorithmus nicht retten: Für genügend große Eingaben gewinnt immer der schnellere Algorithmus auf dem langsameren Computer. Beispiel Typische Laufzeiten (bis auf einen konstanten Faktor) für Eingabelänge n: 1 konstant n log n log n logarithmisch n 2 quadratisch n linear 2 n exponentiell

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 29/54 Zeitkomplexität in der Praxis I Beispiel (Tatsächliche Laufzeiten) Komplexität Länge n 33n 46n log n 13n 2 3,4n 3 2 n 10 0,00033 s 0,0015 s 0,0013 s 0,0034 s 0,001 s 10 2 0,0033 s 0,03 s 0,13 s 3,4 s 4 10 16 y 10 3 0,033 s 0,45 s 13 s 0,94 h 10 4 0,33 s 6,1 s 1300 s 39 d 10 5 3,3 s 1,3 m 1,5 d 108 y Benötigte Zeit (s = Sekunde, h = Stunde, d = Tag, y = Jahr) Der Einfluss großer konstanter Faktoren nimmt mit wachsendem n ab.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 30/54 Zeitkomplexität in der Praxis II Beispiel (Größte lösbare Eingabelänge) Komplexität Verfügbare Zeit 33n 46n log n 13n 2 3,4n 3 2 n 1 s 30 000 2000 280 67 20 1 m 1 800 000 82 000 2170 260 26 1 h 108 000 000 1 180 800 16 818 1009 32 Größte lösbare Eingabelänge

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 30/54 Zeitkomplexität in der Praxis II Beispiel (Größte lösbare Eingabelänge) Komplexität Verfügbare Zeit 33n 46n log n 13n 2 3,4n 3 2 n 1 s 30 000 2000 280 67 20 1 m 1 800 000 82 000 2170 260 26 1 h 108 000 000 1 180 800 16 818 1009 32 Größte lösbare Eingabelänge Eine 60-fach längere Eingabe lässt sich nicht durch um den Faktor 60 längere Zeit (oder höhere Geschwindigkeit) bewältigen.

Was sind Algorithmen? Joost-Pieter Katoen Datenstrukturen und Algorithmen 31/54 Schnellere Computer... Sei N die größte Eingabelänge, die in fester Zeit gelöst werden kann. Frage Wie verhält sich N, wenn wir einen K-mal schnelleren Rechner verwenden? #Operationen benötigt für Eingabe der Länge n Größte lösbare Eingabelänge log n n K N n 2 K N 2 n N + log K N K

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 32/54 Übersicht 1 Was sind Algorithmen? Algorithmen und Datenstrukturen Effizienz von Algorithmen 2 Average, Best und Worst Case Laufzeitanalyse Lineare Suche Average-Case Analyse von linearer Suche 3 Organisatorisches Übersicht Übungsbetrieb Prüfung

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 33/54 Idee Wir betrachten einen gegebenen Algorithmus A. Worst-Case Laufzeit Die Worst-Case Laufzeit von A ist die von A maximal benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 33/54 Idee Wir betrachten einen gegebenen Algorithmus A. Worst-Case Laufzeit Die Worst-Case Laufzeit von A ist die von A maximal benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n. Best-Case Laufzeit Die Best-Case Laufzeit von A ist die von A minimal benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 33/54 Idee Wir betrachten einen gegebenen Algorithmus A. Worst-Case Laufzeit Die Worst-Case Laufzeit von A ist die von A maximal benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n. Best-Case Laufzeit Die Best-Case Laufzeit von A ist die von A minimal benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n. Average-Case Laufzeit Die Average-Case Laufzeit von A ist die von A durchschnittlich benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 33/54 Idee Wir betrachten einen gegebenen Algorithmus A. Worst-Case Laufzeit Die Worst-Case Laufzeit von A ist die von A maximal benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n. Best-Case Laufzeit Die Best-Case Laufzeit von A ist die von A minimal benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n. Average-Case Laufzeit Die Average-Case Laufzeit von A ist die von A durchschnittlich benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n. Alle drei sind Funktionen: Laufzeit in Abhängigkeit von der Eingabelänge!

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 34/54 Beispiel W (n) Laufzeit A(n) B(n) Eingabelänge n

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 35/54 Formale Definition (I) Einige hilfreiche Begriffe D n = Menge aller Eingaben der Länge n t(i) = für Eingabe I benötigte Anzahl elementarer Operationen Pr(I) = Wahrscheinlichkeit, dass Eingabe I auftritt

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 35/54 Formale Definition (I) Einige hilfreiche Begriffe D n = Menge aller Eingaben der Länge n t(i) = für Eingabe I benötigte Anzahl elementarer Operationen Pr(I) = Wahrscheinlichkeit, dass Eingabe I auftritt Woher kennen wir: t(i)? Durch Analyse des fraglichen Algorithmus. Pr(I)? Erfahrung, Vermutung (z. B. alle Eingaben treten mit gleicher Wahrscheinlichkeit auf ).

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 36/54 Formale Definition (II) Worst-Case Laufzeit Die Worst-Case Laufzeit von A ist die von A maximal benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n: W (n) = max{ t(i) I D n }.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 36/54 Formale Definition (II) Worst-Case Laufzeit Die Worst-Case Laufzeit von A ist die von A maximal benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n: W (n) = max{ t(i) I D n }. Best-Case Laufzeit Die Best-Case Laufzeit von A ist die von A minimal benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n: B(n) = min{ t(i) I D n }.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 37/54 Formale Definition (II) Average-Case Laufzeit Die Average-Case Laufzeit von A ist die von A durchschnittlich benötigte Anzahl elementarer Operationen auf einer beliebigen Eingabe der Länge n: A(n) = I D n Pr(I) t(i)

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 38/54 Lineare Suche Rechenproblem Eingabe: Array E mit n Einträgen sowie das gesuchte Element K. Ausgabe: Ist K in E enthalten?

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 38/54 Lineare Suche Rechenproblem Eingabe: Array E mit n Einträgen sowie das gesuchte Element K. Ausgabe: Ist K in E enthalten? 1 bool linsearch(int E[], int n, int K) { 2 for (int index = 0; index < n; index ++) { 3 if (E[index] == K) { 4 return true; // oder: return index; 5 } 6 } 7 return false; // nicht gefunden 8 }

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 39/54 Lineare Suche Analyse Elementare Operation Vergleich einer ganzen Zahl K mit Element E[index].

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 39/54 Lineare Suche Analyse Elementare Operation Vergleich einer ganzen Zahl K mit Element E[index]. Menge aller Eingaben D n ist die Menge aller Permutationen von n ganzen Zahlen, die ursprünglich aus einer Menge N > n ganzer Zahlen ausgewählt wurden.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 39/54 Lineare Suche Analyse Elementare Operation Vergleich einer ganzen Zahl K mit Element E[index]. Menge aller Eingaben D n ist die Menge aller Permutationen von n ganzen Zahlen, die ursprünglich aus einer Menge N > n ganzer Zahlen ausgewählt wurden. Zeitkomplexität

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 39/54 Lineare Suche Analyse Elementare Operation Vergleich einer ganzen Zahl K mit Element E[index]. Menge aller Eingaben D n ist die Menge aller Permutationen von n ganzen Zahlen, die ursprünglich aus einer Menge N > n ganzer Zahlen ausgewählt wurden. Zeitkomplexität W (n) = n, da n Vergleiche notwendig sind, falls K nicht in E vorkommt (oder wenn K == E[n]).

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 39/54 Lineare Suche Analyse Elementare Operation Vergleich einer ganzen Zahl K mit Element E[index]. Menge aller Eingaben D n ist die Menge aller Permutationen von n ganzen Zahlen, die ursprünglich aus einer Menge N > n ganzer Zahlen ausgewählt wurden. Zeitkomplexität W (n) = n, da n Vergleiche notwendig sind, falls K nicht in E vorkommt (oder wenn K == E[n]). B(n) = 1, da ein Vergleich ausreicht, wenn K gleich E[1] ist.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 39/54 Lineare Suche Analyse Elementare Operation Vergleich einer ganzen Zahl K mit Element E[index]. Menge aller Eingaben D n ist die Menge aller Permutationen von n ganzen Zahlen, die ursprünglich aus einer Menge N > n ganzer Zahlen ausgewählt wurden. Zeitkomplexität W (n) = n, da n Vergleiche notwendig sind, falls K nicht in E vorkommt (oder wenn K == E[n]). B(n) = 1, da ein Vergleich ausreicht, wenn K gleich E[1] ist. A(n) 1 2n?, da im Schnitt K mit etwa der Hälfte der Elemente im Array E verglichen werden muss? Nein.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/54 Lineare Suche Average-Case-Analyse (I) Zwei Szenarien 1. K kommt nicht in E vor. 2. K kommt in E vor.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/54 Lineare Suche Average-Case-Analyse (I) Zwei Szenarien 1. K kommt nicht in E vor. 2. K kommt in E vor. Zwei Definitionen 1. Sei A K E (n) die Average-Case-Laufzeit für den Fall "K nicht in E". 2. Sei A K E (n) die Average-Case-Laufzeit für den Fall "K in E".

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 40/54 Lineare Suche Average-Case-Analyse (I) Zwei Szenarien 1. K kommt nicht in E vor. 2. K kommt in E vor. Zwei Definitionen 1. Sei A K E (n) die Average-Case-Laufzeit für den Fall "K nicht in E". 2. Sei A K E (n) die Average-Case-Laufzeit für den Fall "K in E". A(n) = Pr{K in E} A K E (n) + Pr{K nicht in E} A K E (n)

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 41/54 Der Fall "K in E" Nehme an, dass alle Elemente in E unterschiedlich sind.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 41/54 Der Fall "K in E" Nehme an, dass alle Elemente in E unterschiedlich sind. Damit ist die Wahrscheinlichkeit für K == E[i] gleich 1 n.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 41/54 Der Fall "K in E" Nehme an, dass alle Elemente in E unterschiedlich sind. Damit ist die Wahrscheinlichkeit für K == E[i] gleich 1 n. Die Anzahl benötigter Vergleiche im Fall K == E[i] ist i+1.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 41/54 Der Fall "K in E" Nehme an, dass alle Elemente in E unterschiedlich sind. Damit ist die Wahrscheinlichkeit für K == E[i] gleich 1 n. Die Anzahl benötigter Vergleiche im Fall K == E[i] ist i+1. Damit ergibt sich: A K E (n) = n 1 Pr{K == E[i] K in E} t(k == E[i]) i=0

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 41/54 Der Fall "K in E" Nehme an, dass alle Elemente in E unterschiedlich sind. Damit ist die Wahrscheinlichkeit für K == E[i] gleich 1 n. Die Anzahl benötigter Vergleiche im Fall K == E[i] ist i+1. Damit ergibt sich: A K E (n) = = n 1 Pr{K == E[i] K in E} t(k == E[i]) i=0 n 1 i=0 ( 1 n ) (i + 1)

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 41/54 Der Fall "K in E" Nehme an, dass alle Elemente in E unterschiedlich sind. Damit ist die Wahrscheinlichkeit für K == E[i] gleich 1 n. Die Anzahl benötigter Vergleiche im Fall K == E[i] ist i+1. Damit ergibt sich: A K E (n) = = = n 1 Pr{K == E[i] K in E} t(k == E[i]) i=0 n 1 i=0 ( 1 n ) ( 1 n ) (i + 1) n 1 i=0 (i + 1)

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 41/54 Der Fall "K in E" Nehme an, dass alle Elemente in E unterschiedlich sind. Damit ist die Wahrscheinlichkeit für K == E[i] gleich 1 n. Die Anzahl benötigter Vergleiche im Fall K == E[i] ist i+1. Damit ergibt sich: A K E (n) = = = = n 1 Pr{K == E[i] K in E} t(k == E[i]) i=0 n 1 ( 1 n ) (i + 1) i=0 ( ) 1 n 1 n ( ) i=0 1 n n(n+1) 2 (i + 1)

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 41/54 Der Fall "K in E" Nehme an, dass alle Elemente in E unterschiedlich sind. Damit ist die Wahrscheinlichkeit für K == E[i] gleich 1 n. Die Anzahl benötigter Vergleiche im Fall K == E[i] ist i+1. Damit ergibt sich: A K E (n) = = = = n 1 Pr{K == E[i] K in E} t(k == E[i]) i=0 n 1 ( 1 n ) (i + 1) i=0 ( ) 1 n 1 n ( ) i=0 1 n n(n+1) 2 = n+1 2. (i + 1)

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 42/54 Herleitung A(n) = Pr{K in E} A K E (n) + Pr{K nicht in E} A K E (n)

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 42/54 Herleitung A(n) = Pr{K in E} A K E (n) + Pr{K nicht in E} A K E (n) A K E (n) = n+1 2 = Pr{K in E} n+1 2 + Pr{K nicht in E} A K E (n)

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 42/54 Herleitung A(n) = Pr{K in E} A K E (n) + Pr{K nicht in E} A K E (n) A K E (n) = n+1 2 = Pr{K in E} n+1 2 + Pr{K nicht in E} A K E (n) Pr{nicht B} = 1 Pr{B} = Pr{K in E} n+1 2 + (1 Pr{K in E}) A K E (n)

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 42/54 Herleitung A(n) = Pr{K in E} A K E (n) + Pr{K nicht in E} A K E (n) A K E (n) = n+1 2 = Pr{K in E} n+1 2 + Pr{K nicht in E} A K E (n) Pr{nicht B} = 1 Pr{B} = Pr{K in E} n+1 2 + (1 Pr{K in E}) A K E (n) A K E (n) = n = Pr{K in E} n+1 + (1 Pr{K in E}) n 2

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 42/54 Herleitung A(n) = Pr{K in E} A K E (n) + Pr{K nicht in E} A K E (n) A K E (n) = n+1 2 = Pr{K in E} n+1 2 + Pr{K nicht in E} A K E (n) Pr{nicht B} = 1 Pr{B} = Pr{K in E} n+1 2 + (1 Pr{K in E}) A K E (n) A K E (n) = n = Pr{K in E} n+1 + (1 Pr{K in E}) n 2 = n (1 1 ) 2 Pr{K in E} + 1 Pr{K in E} 2

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 43/54 Lineare Suche Average-Case-Analyse Endergebnis Die Average-Case-Zeitkomplexität der linearen Suche ist: A(n) = n (1 1 ) 2 Pr{K in E} + 1 Pr{K in E} 2

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 43/54 Lineare Suche Average-Case-Analyse Endergebnis Die Average-Case-Zeitkomplexität der linearen Suche ist: A(n) = n (1 1 ) 2 Pr{K in E} + 1 Pr{K in E} 2 Beispiel Wenn Pr{K in E} = 1, dann A(n) = n+1 2, d. h. etwa 50% von E ist überprüft.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 43/54 Lineare Suche Average-Case-Analyse Endergebnis Die Average-Case-Zeitkomplexität der linearen Suche ist: A(n) = n (1 1 ) 2 Pr{K in E} + 1 Pr{K in E} 2 Beispiel Wenn Pr{K in E} = 1, dann A(n) = n+1 2, d. h. etwa 50% von E ist überprüft. = 0, dann A(n) = n = W (n), d. h. E wird komplett überprüft.

Average, Best und Worst Case Laufzeitanalyse Joost-Pieter Katoen Datenstrukturen und Algorithmen 43/54 Lineare Suche Average-Case-Analyse Endergebnis Die Average-Case-Zeitkomplexität der linearen Suche ist: A(n) = n (1 1 ) 2 Pr{K in E} + 1 Pr{K in E} 2 Beispiel Wenn Pr{K in E} = 1, dann A(n) = n+1 2, d. h. etwa 50% von E ist überprüft. = 0, dann A(n) = n = W (n), d. h. E wird komplett überprüft. = 1 3 n 2, dann A(n) = 4 + 1 4, d. h. etwa 75% von E wird überprüft.

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 44/54 Übersicht 1 Was sind Algorithmen? Algorithmen und Datenstrukturen Effizienz von Algorithmen 2 Average, Best und Worst Case Laufzeitanalyse Lineare Suche Average-Case Analyse von linearer Suche 3 Organisatorisches Übersicht Übungsbetrieb Prüfung

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 45/54 Übersicht (Teil I) 1. Algorithmische Komplexität 2. Asymptotische Effizienz 3. Elementare Datenstrukturen 4. Suchen 5. Rekursionsgleichungen 6. Sortieren: in-situ, Mergesort, Heapsort, Quicksort

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 46/54 Übersicht (Teil II) 1. Binäre Suchbäume 2. Rot-Schwarz-Bäume 3. Hashing 4. Elementare Graphenalgorithmen 5. Minimale Spannbäume 6. Kürzeste-Pfade-Algorithmen 7. Maximale Flüsse 8. Dynamische Programmierung 9. Algorithmische Geometrie

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 47/54 Literatur Die Vorlesung orientiert sich im Wesentlichen an diesem Buch: Thomas H. Cormen, Charles E. Leiserson, Ronald Rivest, Clifford Stein: Algorithmen - Eine Einführung R. Oldenbourg Verlag, 2. oder 3. Auflage.

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 48/54 Wichtige Termine Vorlesungstermine Vorlesung: Do. 10:15 11:45, Aula (Hauptgebäude) Fr. 10:15 11:45, Großer Hörsaal (Audimax) Keine Vorlesung am 17.04., 01.05., 14.05., 04.06., 17.07. Letzte Vorlesung am 16. Juli 2015

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 48/54 Wichtige Termine Vorlesungstermine Vorlesung: Do. 10:15 11:45, Aula (Hauptgebäude) Fr. 10:15 11:45, Großer Hörsaal (Audimax) Keine Vorlesung am 17.04., 01.05., 14.05., 04.06., 17.07. Letzte Vorlesung am 16. Juli 2015 Frontalübung: Mi. 12:15 13:45, Aula (Hauptgebäude) Am 22.04. und 20.05. sind Vorlesung (23.04. bzw. 22.05.) und Frontalübung getauscht Erste Frontalübung: Do. 23. April

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 49/54 Übungsbetrieb Übungsgruppen 16 Übungsgruppen: verschiedene Uhrzeiten Mo. Fr. Spezialübung für Lehramtsstudenten und CES Studierende 2 3 Übungsgruppen für Erstsemester Koordinatoren: Christian Dehnert, Friedrich Gretz, Benjamin Kaminski und Thomas Ströder.

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 49/54 Übungsbetrieb Übungsgruppen 16 Übungsgruppen: verschiedene Uhrzeiten Mo. Fr. Spezialübung für Lehramtsstudenten und CES Studierende 2 3 Übungsgruppen für Erstsemester Koordinatoren: Christian Dehnert, Friedrich Gretz, Benjamin Kaminski und Thomas Ströder. Anmeldung für die Übungsgruppen Anmeldung zum Übungsbetrieb über Web-link https://aprove.informatik.rwth-aachen.de/dsal15/ bis Mittwoch, 15. April 2015, 12:15 Uhr (Aachener Zeit).

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 50/54 Übungsbetrieb Wichtige Termine 0. Übungszettel: korrekte Anmeldung für den Übungsbetrieb Abgabe 0. Übungszettel: 15. April 2015 1.Übungszettel: 15. April 2015 Abgabe 1. Übungszettel: Mittwoch, 29. April 2015 Abgabe Übungszettel: Mittwochs (i.d.r. zwei Wochen später) vor 12:15 Uhr im Sammelkasten 2.Übungszettel: 22. April 2015 Abgabe 2. Übungszettel: Mittwoch, 6. Mai 2015 etc. Frontalübung: Mittwoch, 12:15 13:45 ab 23. April 2015 (Do.), erster Termin getauscht mit Vorlesung Übungsgruppen: Montag Freitag, (fast) jederzeit ab 20. April Präsenzübung: Mittwoch, 03. Juni 2015 (abends)

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 51/54 Prüfung Die Prüfung ist eine schriftliche Klausur von 120 Minuten. Zulassungskriterium Klausur 1. Mindestens 50% aller in den Übungen erreichbaren Punkte bis PÜ 2. Mindestens 50% aller in den Übungen erreichbaren Punkte ab PÜ 3. Mindestens 50% der in der Präsenzübung (PÜ) erreichbaren Punkte. CES-Studenten brauchen kein Zulassungskriterium zu erfüllen. Bonusregelung Bei 75% in allen drei Punkten: eine Notenstufe höher (außer bei 1.0 und 5.0).

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 52/54 Wichtige Termine Wichtige Termine Präsenzübung: Mittwoch, 3. Juni 2015 (abends) Klausur: Dienstag, 4. August 2015 (morgens) Wiederholungsklausur: Montag, 14. September 2015 (nachmittags)

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 52/54 Wichtige Termine Wichtige Termine Präsenzübung: Mittwoch, 3. Juni 2015 (abends) Klausur: Dienstag, 4. August 2015 (morgens) Wiederholungsklausur: Montag, 14. September 2015 (nachmittags) Anmeldung zur Prüfung über CAMPUS-Office bis 22.05., 23:59 Uhr.

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 53/54 Softwarewettbewerb Idee Praktische Anwendung der Vorlesungsinhalte Konkret: Entwurf und Implementierung einer Datenstruktur Dauer Start: (voraussichtlich) 1. Juni 2015 Ende: 5. Juli 2015 Warum? Klausurvorbereitung Spaß, (endloser) Ruhm kleine Sachpreise

Organisatorisches Joost-Pieter Katoen Datenstrukturen und Algorithmen 54/54 Sonstiges Mehr Information Webseite: http://moves.rwth-aachen.de/teaching/ss-15/dsal/ E-Mail: dsal15@i2.informatik.rwth-aachen.de Nächste Vorlesung Freitag 10. April,10:15.