Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Einführung in die Programmierung Zusammenfassung
Algorithmen und Datenstrukturen
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
der Universität Oldenburg
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
Sortieren mit Binären Bäumen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Referenzen und Zeichenketten
Übung 6.1Turing-Maschine 1.Machen Sie sich mit der Funktionsweise des Busy Beaver-Programms vertraut Vollziehen sie die 11 Schritte der ersten Turing-Tabelle.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen 01 – Einleitung Prof. Dr. Th. Ottmann.
Funktionenklassen zur Messung der Komplexität
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 01 – Einleitung
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 24 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Datenstrukturen
Halbzeit: Kurze Wiederholung
Sortieren vorsortierter Daten
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 9 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Anwendungen von Stapeln und Schlangen
Online Competitive Algorithms
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 13 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 12 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Imperative Programmierung Funktionen und Parameter
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Einführung in die Programmierung Anweisungen und Datentypen
Bestimmung des ggT zweier Zahlen
Verzweigung.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
2.4 Rekursion Klassifikation und Beispiele
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Korrektheit von Programmen – Testen
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Dr. Wolfram Amme, Verifikation imperativer Programme, Informatik II, FSU Jena, SS Verifikation von imperativen Programmen.
 Präsentation transkript:

Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät für Angewandte Wissenschaften Albert-Ludwigs-Universität Freiburg Formale Eigenschaften von Programmen

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann2 Lernziele Algorithmen für wichtige Probleme : Sortieren, Suchen, Wörterbuch-Problem, Berechnung kürzester Pfade,... Datenstrukturen : Listen, Stapel, Schlangen, Bäume, Hash-Tabellen,... Problemlösetechniken : Divide-and-Conquer, Greedy, vollständige Aufzählung, Backtracking,... Ziele: Finden effizienter Algorithmen für Instanzen von Problemen aus einem gegebenen Bereich Fähigkeit zur Beurteilung von Algorithmen aufgrund präziser Kriterien (Korrektheit, Effizienz)

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann3 Sprache zur Formulierung von Algorithmen Natürliche Sprache, Flussdiagramme, Programmiersprache (Java, C,...) Pseudocode Analyse von Algorithmen und Programmen Tut der Algorithmus das, was er soll? Nutzt der Algorithmus die Ressourcen effizient? Mathematisches Instrumentarium zur Messung der Komplexität (Zeit- und Platzbedarf): Groß-O-Kalkül (Landausche Symbole) Beschreibung und Analyse von Algorithmen

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann4 Formale Eigenschaften von Algorithmen Korrektheit Effizienz Fragen : Wie beweist man die Korrektheit ? Programmverifikation Testen Wie misst man die Effizienz von Algorithmen ? Implementation und Test für repräsentative Beispiele Platz- und Zeitbedarf auf Real RAM Bestimmung signifikanter Parameter

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann5 Korrektheit partielle : Wenn der Algorithmus hält, dann liefert er das gewünschte Resultat totale : Algorithmus hält und liefert das gewünschte Ergebnis Vorbedingung (Eingabe-Bedingung) : Spezifiziert den Zustand vor Ausführung eines Algorithmus Nachbedingung (Ausgabe-Bedingung) : Spezifiziert den Zustand nach Ausführung des Algorithmus {P} S {Q} Beispiel : { ? } x = y + 23 { x > 0 } Hoare Kalkül

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann6 Grundbausteine imperativer Sprachen Sprachkonstrukte spiegeln die Von Neumann Rechnerarchitektur wieder. Variablen sind symbolische Namen für Speicherplätze. Anweisungen: Zuweisung: x = t Komposition: S 1 ; S 2 Selektion: if B then S 1 else S 2 Iteration: while B do S Hoare Kalkül: Dient zum Nachweis der partiellen Korrektheit von Programmen, d.h. von Aussagen der Form {P} S {Q}

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann7 Beweisregeln Wenn aus wahren Aussagen A 1, …, A n folgt, dass auch die Aussage A wahr ist, notiert man das in der Form: A 1, …, A n A Die zu verifizierenden Aussagen sind die Hoare-Tripel der Form {P} S {Q}.

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann8 Zuweisungsaxiom {P[x/t]} x = t {P} P[x/t] bedeutet, dass in der Aussage P jedes Vorkommen von x durch den Term t ersetzt wird. Beispiele: {x+1 > a} x = x+1 {x > a} x = y + 23 {x < 0}

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann9 Komposition und Selektion Komposition {P} S 1 {Q}, {Q} S 2 {R} {P} S 1 ; S 2 {R} Selektion {P und B} S 1 {R} {P und nicht B} S 2 {R} {P} if B then S 1 else S 2 {R}

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann10 Beispiel zur Komposition Komposition {P} S 1 {Q}, {Q} S 2 {R} {P} S 1 ; S 2 {R} {x + 1 = 43} y = x + 1; {y = 43} z = y {z = 43}

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann11 Beispiel zur Komposition Komposition {P} S 1 {Q}, {Q} S 2 {R} {P} S 1 ; S 2 {R} {x = y (q+1) + r – y} r = r – y; {x = y (q+1) + r} q = q + 1 {x = y q + r}

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann12 Iteration P impliziert I, {I und B} S {I}, (I und nicht B) impliziert Q {P} while B do S {Q} Die in dieser Regel auftretende Aussage I heißt Schleifeninvariante. Das Finden geeigneter Schleifeninvarianten ist i.a. algorithmisch unlösbar! Daher empfiehlt es sich, Schleifeninvarianten als Kommentare (Assertions) an den entsprechenden Stellen in Programme einzufügen

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann13 Abschwächung und Verstärkung Abschwächung {P} {P´}, {P´} S {Q} {P} S {Q} Verstärkung {P} S {Q´}, {Q´} {Q}, {P} S {Q}

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann14 Beispiel eines (formalen) Korrektheitsbeweises Algorithmus Mult(x,y) Eingabe : Ein Paar x,y von natürlichen Zahlen Ausgabe : Das Produkt von x und y Methode : z = 0 ; while (y>0) do { if (y ist gerade) then {y = y/2; x = x+x} else /* y ist ungerade */ {y = y-1; z = z+x} } return z;

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann15 Implementation in Java class Mult { public static void main ( String [] args ) { int x = new Integer (args[0]).IntValue(); int y = new Integer (args[1]).IntValue(); System.out.println (Das Produkt von +x+ und +y+ ist +mult(x,y)); public static int mult (int x, int y) { int z = 0; while (y>0) if (y % 2 == 0) { y = y / 2; x = x+x ;} else { y = y-1; z = z+x; } return z; } }

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann16 Nachweis der totalen Korrektheit Beh. (1) Für jedes Paar a,b von natürlichen Zahlen gilt: Mult(a,b) hält nach endlich vielen Schritten. Beh. (2) Sind a und b natürliche Zahlen, dann liefert Mult(a,b) den Wert z = a * b. int z = 0; while (y>0) if (y % 2 == 0) { y = y / 2; x = x+x ;} else { y = y-1; z = z+x; }

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann17 Schleifeninvariante Schleifeninvariante I: y 0 und z + x y = a b Beh. 2.1: I gilt vor erstmaliger Ausführung der while-Schleife Beh. 2.2: I bleibt bei einmaliger Ausführung des Rumpfs der while-Schleife richtig. int z = 0; while (y>0) if (y % 2 == 0) { y = y / 2; x = x+x ;} else { y = y-1; z = z+x; }

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann * xyz# Iterationen Durchführung von Mult(x,y) an einem Beispiel

Informatik II: Algorithmen und Datenstrukturen, SS 2008 Prof. Dr. Thomas Ottmann19 Weiteres Beispiel {n 0} i = 0; k = -1; y = 0; while i < n do i = i + 1; k = k + 2; y = y + k {y = n 2 } Schleifeninvariante: (k = 2i -1) und (y = i 2 ) und (i n)