Grundlagen der Programmierung

Ähnliche Dokumente
Grundlagen der Programmierung

Grundlagen der Theoretischen Informatik

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

Notation für das asymptotische Verhalten von Funktionen

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Einführung (1/3) Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (1) Vorlesungen zur Komplexitätstheorie.

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

Einige Grundlagen der Komplexitätstheorie

Übung Algorithmen und Datenstrukturen

Übungen zu Algorithmentechnik WS 09/10

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

Komplexitätsklassen THEORETISCHE INFORMATIK VORGETRAGEN VON: ELIAS DROTLEFF

3.3 Laufzeit von Programmen

Komplexität von Algorithmen OOPM, Ralf Lämmel

Vorlesung Datenstrukturen

Logik für Informatiker

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

Algorithmen und Datenstrukturen 1 Kapitel 5

Übung Theoretische Grundlagen

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Statt Turingmaschinen anzugeben, genügt die Angabe eines C++ Programms oder die Angabe eines Pseudocodes.

Abschnitt 7: Komplexität von imperativen Programmen

Grundlagen der Programmierung

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

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

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

Klausur Algorithmen und Datenstrukturen

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

Die Komplexitätsklassen P und NP

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:

Klausur Algorithmen und Datenstrukturen

Einführung in die Theoretische Informatik

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

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

Grundlagen: Algorithmen und Datenstrukturen

Karlsruher Institut für Technologie Institut für Theoretische Informatik. Übungsklausur Algorithmen I

2. Klausur Datenstrukturen und Algorithmen SS 2014

abgeschlossen unter,,,, R,

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Algorithmen und Datenstrukturen

Kapitel 1.4. Exkurs: Entscheidbarkeit und Komplexität. Mathematische Logik (WS 2012/3) K. 1.4: Entscheidbarkeit und Komplexität 1/10

Zeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1

Klausur Algorithmen und Datenstrukturen

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen

Einführung in die Informatik 2

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

8 Komplexitätstheorie

Grundlagen der Informatik

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

Christoph Niederseer, Michaela Mayr, Alexander Aichinger, Fabian Küppers. Wissenschaftl. Arbeitstechniken und Präsentation

Das große O. Aufwandsklasse O(g) für g : N R + enthält alle Funktionen f : N R + mit. f(n) c g(n) für alle n n 0

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

Theoretische Grundlagen der Informatik

Klausur Algorithmen und Datenstrukturen

Komplexität von Algorithmen

Übung Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen

Programmierung 1 (Wintersemester 2012/13) Lösungsblatt 10 (Kapitel 11)

Übung zur Vorlesung Berechenbarkeit und Komplexität

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

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Komplexität von Algorithmen:

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

Die asymptotische Notation

NAME, VORNAME: Studiennummer: Matrikel:

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

C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007

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

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

Theoretische Grundlagen der Informatik

Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen

Transkript:

GdP12 Slide 1 Grundlagen der Programmierung Vorlesung 12 Sebastian Iwanowski FH Wedel

GdP12 Slide 2 Entwurf von Algorithmen Wie klassifiziert man Algorithmen? offensichtlich nicht durch die Unterscheidung rekursiv / iterativ! Unterscheidung nach Lösungsstrategie (greedy, divide and conquer,...) schon besser! Welche Implementierungsvariante (rekursiv / iterativ) ist zu einem gegebenen Algorithmus zu bevorzugen?

GdP12 Slide 3 Entwurf von Algorithmen Welche Lösungsstrategie ist für ein gegebenes Problem besser? Unterscheiden sich die Algorithmen, die zu einer Lösungsstrategie gehören? Wie unterscheidet man zwischen Implementierungsvarianten desselben Algorithmus und zwei verschiedenen Algorithmen?

Grundlagen der Programmierung 1. Einführung Grundlegende Eigenschaften von Algorithmen und Programmen 2. Logik Aussagenlogik Prädikatenlogik 3. Programmentwicklung und verifikation Grundlagen der Programmverifikation Zuweisungen und Verbundanweisungen Verzweigungen Schleifen Modularisierung Rekursion 4. Entwurf und Analyse von Algorithmen Klassifikation von Algorithmen Programmierung von Algorithmen Bewertung von Algorithmen GdP12 Slide 4

GdP12 Slide 5 Was wird bewertet? Bewertung von Algorithmen benötigte Rechenzeit benötigter Speicherplatz Welche Eigenschaften sollte eine Bewertung haben? unabhängig von der Implementierung unabhängig vom eingesetzten Computer Wie ist das möglich?

GdP12 Slide 6 Bewertung von Algorithmen Der Schlüssel zum Erfolg: Die Turingmaschine von Alan Turing 1937 konstruierter theoretischer Urcomputer Für jeden bis heute konstruierten Computer gilt: Wenn ein Problem der Größe n auf einer Turingmaschine f(n) Rechenschritte braucht, dann benötigt es auf einem anderen Computer c f(n) Rechenschritte. Hierbei ist c eine Konstante, die nur vom Computer abhängt und für alle Algorithmen gilt. Daraus abgeleitetes Grundprinzip: Vernachlässige Konstante, die nicht von der Problemgröße abhängen!

GdP12 Slide 7 Bewertung von Algorithmen Definition Komplexitätsklasse: Ein Algorithmus gehört bzgl. der Rechenzeit (des Speicherplatzes) zur Komplexitätsklasse O(f(n)), wenn es eine Konstante c gibt, sodass gilt: Die Rechenzeit (Der Speicherplatz) für ein Problem der Größe n benötigt maximal c f(n) Rechenschritte (Speicherplätze). c darf nicht von der Problemgröße n abhängen. c darf vom Algorithmus abhängen. c darf vom Computer und von der Implementierung abhängen. O wird das Landau-Symbol genannt (nach Edmund Landau, 1877-1938) Typische Komplexitätsklassen von Algorithmen: O(1), O(log n), O(n), O(n log n), O (n 2 ), O(2 n ) O(P(n)), wobei P ein Polynom ist

Bewertung von Algorithmen Bewertung von Algorithmen Gegeben ein Algorithmus: Finde die günstigste Komplexitätsklasse bzgl. Laufzeit und Speicherplatz: im ungünstigsten Fall (worst case) im Durchschnittsfall (average case) Beispiele: Lineare Suche: DC-Suche : Binärsuche: Laufzeit: O(n) O(n) O(log n) GdP12 Slide 8 Speicherplatz: O(n) O(n) O(n) Selectionsort: O(n 2 ) O(n) Mergesort: O(n log n) O(n) Quicksort: O(n 2 ) w.c. O(n log n) a.c. O(n)

GdP12 Slide 9 Bewertung von Algorithmen Bewertung von Problemen Gegeben ein Problem: Finde die günstigste Komplexitätsklasse, zu der es einen Algorithmus gibt, der das Problem im allgemeinen Fall löst. Ein Problem gehört bzgl. der Rechenzeit (des Speicherplatzes) zur Komplexitätsklasse Ω(f(n)), wenn es eine Konstante c gibt, so dass gilt: Die Rechenzeit (Der Speicherplatz) jedes Algorithmus für das Problem der Größe n benötigt mindestens c f(n) Rechenschritte (Speicherplätze). Beispiele: Laufzeit: Speicherplatz: Allgemeine Suche: Ω(n) Ω(n) Allgemeines Sortieren: Ω(n log n) Ω(n)

GdP12 Slide 10 NP-Vollständigkeit NP-vollständige Probleme sind folgendermaßen charakterisiert: Das Problem ist auf einer (hypothetischen) nichtdeterministischen Turingmaschine in polynomialer Zeit (O(P(n) für ein Polynom P) lösbar. Jedes NP-vollständige Problem ist genau dann auf einer normalen Turingmaschine in polynomialer Zeit lösbar, wenn alle NP-vollständigen Probleme auf einer normalen Turingmaschine in polynomialer Zeit lösbar sind. Offene Frage der Informatik: 1) Sind NP-vollständige Probleme auf einer normalen Turingmaschine in polynomialer Zeit lösbar? 2) Gehören sie zu einer Komplexitätsklasse Ω(f(n)), wobei f(n) stärker wächst als jedes Polynom P(n)?

GdP12 Slide 11 Was ist für die Klausur relevant? Vorlesung 1: Überblick / Grundlegende Eigenschaften Grundlegende Begriffe und Konzepte: Funktion, Spezifikation, Algorithmus, Programm, Verifikation, Konstruktion und alles, was damit zusammenhängt. Fähigkeit, die Konzepte an Minibeispielen anzuwenden. Vorlesung 2: Aussagenlogik Grundlegende Begriffe wie Aussage, Wahrheitswert, Formel, Belegung, Erfüllbarkeit. Sicherer Umgang mit aussagenlogischen Umformungen, eindeutige und exakte Notation. Konjunktive Normalform: Begriffe und Fähigkeit der Umformung in eine solche. Vorlesung 3-4: Prädikatenlogik Unterschied zur Aussagenlogik: Variable, Prädikate, Funktionen, Quantoren. Erklären dieser Begriffe an Beispielen, aktive und passive Beherrschung der Notation. Rechenregeln für Quantoren, Anwendung der Prädikatenlogik auf Minibeispiele aus dem täglichen Leben und der Arithmetik.

Was ist für die Klausur relevant? Vorlesung 5: Grundlagen der Programmverifikation Hoare-Tripel: Aktive und passive Beherrschung der Notation. Zusammenhang zwischen unterschiedlichen Stärken von Vorbedingungen und Nachbedingungen, Exakte Verifikation kleinster Programmteile: Finden von stärksten Nachbedingungen und schwächsten Vorbedingungen. Vorlesung 6: Verzweigungen Finden von stärksten Nachbedingungen und schwächsten Vorbedingungen in Anwendungsbeispielen. Vorlesung 7-8: Schleifen Bestimmung und Verifikation von Invariantenbedingungen sowie von Variantenzahlen für die Terminierung, Verifikation von kleinen Schleifen entweder mit vollständiger Induktion oder mit dem Invarianten/Variantenverfahren Vorlesung 8: Modularisierung Parameter, Rückgabewerte: Erklärung der Bedeutung und Verwendung, Anwendung in Minibeispielen. Call-by-reference und call-by-value: Erklärung der Unterschiede, Vorteile und Nachteile der beiden Parameterübergabetechniken. GdP12 Slide 12

GdP12 Slide 13 Was ist für die Klausur relevant? Vorlesung 9-10: Rekursion Nachvollziehen des Programmablaufs vorgegebener rekursiver Programme, Bestimmen von notwendigen Vorbedingungen. Erklärung der Konzepte primitiv rekursiv, endrekursiv und linear rekursiv. Erkennen dieser Konzepte an Beispielen. Umformung von endrekursiven Programmen in Schleifen. Vor- und Nachteile der rekursiven Formulierung gegenüber der iterativen. Vorlesung 11-12: Entwurf und Analyse von Algorithmen Grundideen der Algorithmen Lineare Suche, Binärsuche, Selectionsort und Mergesort, Kenntnis der Komplexitätseigenschaften dieser Algorithmen, Begründung, warum Komplexitätsklassen ein gutes Maß zur Bewertung von Algorithmen sind (zum Beispiel im Vergleich zu iterativ / rekursiv).

Das war die Vorlesung Grundlagen der Programmierung GdP12 Slide 14