Grundlagen der Theoretischen Informatik

Ähnliche Dokumente
Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Theoretische Informatik SS 03 Übung 3

Partielle Korrektheit von Programmen. Beispiele an der Tafel

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -

Kurs 1612 Konzepte imperativer Programmierung Musterlösung zur Nachklausur am

Weitere Beweistechniken und aussagenlogische Modellierung

Algorithmen und Datenstrukturen

Informatik II - Tutorium

Grundlagen der Theoretischen Informatik

Induktive Beweise und rekursive Definitionen

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)

Vorlesung. Vollständige Induktion 1

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Ein Beispielbeweis zur Verifikation des Programms zur Division mit Rest auf der Basis der Hoare-Regeln

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Übung zu Grundbegriffe der Informatik. Simon Wacker. 15. November 2013

Resolutionsalgorithmus

Induktive Beweise und rekursive Definitionen

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Vorsemesterkurs Informatik

Schleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten.

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

Lineare Algebra II, Lösungshinweise Blatt 9

Flussdiagramm / Programmablaufplan (PAP)

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Grundlagen der Programmierung Prof. H. Mössenböck. 4. Schleifen

2.5 Programmstrukturen Entscheidung / Alternative

Syntax von LOOP-Programmen

Programmieren für Wirtschaftswissenschaftler SS 2015

Algorithmen und Datenstrukturen Korrektheit von Algorithmen

C- Kurs 04 Anweisungen

Vorkurs: Mathematik für Informatiker

Donnerstag, 11. Dezember 03 Satz 2.2 Der Name Unterraum ist gerechtfertigt, denn jeder Unterraum U von V ist bzgl.

= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)

Präzedenz von Operatoren

Algorithmen II Vorlesung am

Kapitel III. Aufbau des Zahlensystems

Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion

Seminarvortrag aus Reiner Mathematik Existenz von Primitivwurzeln

Aufgabe 4.2 Sei G = (V, E, l) ein ungerichteter, gewichteter und zusammenhängender Graph.

Erwin Grüner

Schleifen in C/C++/Java

Surjektive, injektive und bijektive Funktionen.

Theoretische Informatik. Alphabete, Worte, Sprachen

Algorithmen und Datenstrukturen

Einführung in die Informatik 1

Einführung in die Informatik Algorithms

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

3. Anweisungen und Kontrollstrukturen

Handout zu Beweistechniken

Wissensbasierte Systeme

Kapitel 5. Programmierkurs. Kontrollstrukturen. Arten von Kontrollstrukturen. Kontrollstrukturen Die if-anweisung Die switch-anweisung

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz Institut für Angewandte Informatik

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Schleifenanweisungen

Analysis I für Studierende der Ingenieurwissenschaften

Steuerung von Programmabläufen. Vorlesung Computergestützte Mathematik zur Linearen Algebra. Lehrstuhl für Angewandte Mathematik Sommersemester 2009

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Wissensbasierte Systeme

Statisches Programmverständnis. pk12w16,

Theoretische Informatik SS 03 Übung 4

4. Kreis- und Wegeprobleme Abstände in Graphen

Algorithmik WS 07/ Vorlesung, Andreas Jakoby Universität zu Lübeck

14. Rot-Schwarz-Bäume

Objektorientierte Programmierung

12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false

Software Entwicklung 2. Formale Verifikation

6. Induktives Beweisen - Themenübersicht

Algorithmen II Vorlesung am

Theoretische Informatik

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Klausur am

Access 2010 Programmierung Schleifen

Ersetzbarkeitstheorem

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

mathe plus Aussagenlogik Seite 1

Aufgaben und Lösungen zum Vorkurs Mathematik: Beweismethoden Für Donnerstag den x > 1 3x > 3 3x + 3 > 6 6x + 3 > 3x + 6.

Übung zur Vorlesung Theoretische Information. Pumping Lemma

Programmieren in C/C++ und MATLAB

1. Musterlösung zu Mathematik für Informatiker I, WS 2003/04

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

Programmierung 1 - Repetitorium

Vorkurs Mathematik für Informatiker. 1 Potenzen. Michael Bader, Thomas Huckle, Stefan Zimmer Oktober Kap.

Objektorientierte Programmierung OOP Programmieren mit Java

Aufgaben und Lösungen zum Vorkurs Mathematik: Beweismethoden Für Mittwoch den

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Normalformen boolescher Funktionen

Java-Programmierung mit NetBeans

Informatik I Übung, Woche 40

2. Programmierung in C

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik

Michaela Weiss 30. März Lerneinheit 3: VBA Teil 1: Eingabe/Ausgabe

Softwareentwicklung Allgemeines und prozedurale Konstrukte

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Excel VBA. Teil Zusammenfassung! Was wir können sollten! V

Theoretischen Physik II SS 2007 Klausur II - Aufgaben und Lösungen

Einführung in die Theoretische Informatik

Transkript:

FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 1 Grundlagen der Theoretischen Informatik Sebastian Iwanowski FH Wedel Kap. 3: Verifikationstechniken Teil 3:

FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 2 Verifikation und Konstruktion von Schleifen Definition einer Schleife: while Schleifenbedingung do Rumpfanweisung Schleifenbedingung muss eine logische Funktion sein, die nur von Variablen abhängen darf, die mit Werten belegt sind. Funktionsweise: 1) Zunächst wird Schleifenbedingung ausgewertet. 2) Wenn Schleifenbedingung falsch ist, wird die Schleife sofort beendet. Wenn Schleifenbedingung wahr ist, wird Rumpfanweisung ausgeführt. Dann wird bei Schritt 1) fortgefahren.

Verifikationstechnik: Definition: {Vorbedingung} while Schleifenbedingung do {Eintrittsbedingung} Rumpfanweisung {Austrittsbedingung} {Nachbedingung} Es sei φ i die Eintrittsbedingung vor der i-ten Ausführung der Rumpfanweisung und ψ i die Austrittsbedingung nach der i-ten Ausführung der Rumpfanweisung Die Schleife werde nach k Ausführungen beendet. Dann gilt: W 1) φ 1 φ β {φ 1 } Rumpfanweisung {ψ 1 } 2) φ 2 ψ 1 β {φ 2 } Rumpfanweisung {ψ 2 }... i) φ i ψ i-1 β {φ i } Rumpfanweisung {ψ i } k) φ k ψ k-1 β {φ k } Rumpfanweisung {ψ k } k+1) ψ ψ k β {φ k } Rumpfanweisung {ψ k } FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 3 φ β φ i S ψ i ψ Problem: Es ist unklar, wie groß k ist, d.h. wie viele Zwischenbedingungen φ i und ψ i es gibt.

Verifikationstechnik: W {Vorbedingung} while Schleifenbedingung do {Eintrittsbedingung} Rumpfanweisung {Austrittsbedingung} {Nachbedingung} φ β φ i S ψ i ψ Gegeben ψ, berechne φ: Wie findet man die schwächste Vorbedingung P für φ? Beobachtung: 0) Sei P 0 die schwächste Vorbedingung, falls die Schleife gar nicht durchlaufen wird. 1) Sei P 1 die schwächste Vorbedingung, falls die Schleife genau einmal durchlaufen wird. i) Sei P i die schwächste Vorbedingung, falls die Schleife genau i-mal durchlaufen wird. Lösung: Dann gilt: P = P 0 P 1... P i... potentiell unendlich viele! Problem: Im allgemeinen Fall könnten sich die P i s alle unterscheiden! Damit kann keine allgemeine Lösungstechnik angegeben werden! FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 4

FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 5 Verifikationstechnik: W {Vorbedingung} while Schleifenbedingung do {Eintrittsbedingung} Rumpfanweisung {Austrittsbedingung} {Nachbedingung} φ β φ i S ψ i ψ Einfachere Aufgabe: Gegeben φ und ψ: Beweise, dass gilt: {φ} W {ψ}!

FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 6 Wesentliche Schritte bei der : 1) Beweise, dass die Berechnungen der Schleife kontinuierlich auf dem richtigen Weg sind, sodass nach der Schleife das Richtige berechnet ist. (falls das Programm dort jemals ankommt) Irgendetwas muss unverändert richtig sein Invariante (Bedingung) 2) Beweise, dass die Schleife zum Ende kommt. Irgendetwas muss sich im Laufe der Schleife ändern Variante (Zahl)

FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 7 mit vollständiger Induktion: Es muss in Induktionsverankerung und im Induktionsschluss von i auf i+1 bewiesen werden, dass die Schleife immer terminiert und das Richtige berechnet. Die Induktionsbehauptung muss also sowohl eine Invariante als auch eine Variante im Sinne der vorigen Definition enthalten. Typisches Beispiel für die Wahl der Induktionsvariablen i: i = Anzahl der bisher durchgeführten Schleifendurchläufe Typische Beweistechnik im Induktionsschluss: 1) Unterscheide die Belegung der Variablen nach i bzw. i+1 Schleifendurchläufen 2) Setze die verschiedenen Belegungszustände in Beziehung zueinander und verwende die Induktionsannahme für i. Die Terminierung muss aus der Induktionsbehauptung für ein bestimmtes k folgen. Die Nachbedingung muss aus der für dieses k gültigen Induktionsbehauptung folgen.

mit vorbewiesener Invarianten / Varianten-Technik: Verwendung einer Bedingung I (Invariante) zum Beweis der Gültigkeit des Zusammenhangs zwischen Vor- und Nachbedingung: Zur Erinnerung: φ i ψ i-1 β d.h.: {ψ i-1 β} Rumpfanweisung {ψ i } Die Invariante I soll Folgendes erfüllen: 1) φ β I Aus Vorbedingung und Schleifenbedingung folgt die Invariante. 2) {I β} S {I} 3) I β ψ Innerhalb der Schleife gilt die Invariante vor und nach der Rumpfanweisung. Die Schleifenbedingung gilt zumindest vor der Rumpfanweisung. Aus der Invariante und der Nichterfüllung der Schleifenbedingung muss die geforderte Nachbedingung folgen. Achtung: Damit ist noch nicht gewährleistet, dass die Schleife terminiert. FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 8

FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 9 mit vorbewiesener Invarianten / Varianten-Technik: Verwendung einer Variante z Z zur Gewährleistung der Terminierung der Schleife: Zur Erinnerung: φ i ψ i-1 β d.h.: {ψ i-1 β} Rumpfanweisung {ψ i } Die Variante z soll Folgendes erfüllen: 1) φ β z 0 Z : z=z 0 2) {I β (z=z 0 )} S {z<z 0 } 3) I (z 0) β z hat bei Schleifeneintritt einen definierten Wert. z hat nach Ausführung der Rumpfanweisung einen kleineren Wert als vorher. Der Wert von z sorgt dafür, dass irgendwann einmal die Schleifenbedingung verletzt wird. Lösung: Damit ist gewährleistet, dass die Schleife terminiert.

FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 10 Beispiel 1a: { Vorbedingung } φ f := 1; k := 0; while (k < n) do begin k := k + 1; f := k f end { Nachbedingung } ψ Was berechnet dieses Programmstück? Gibt es Einschränkungen für die Bedingungen φ oder ψ?

FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 11 Beispiel 1b: { Vorbedingung } φ f := 1; k := n; while (k > 0) do begin f := k f; k := k - 1; end { Nachbedingung } ψ Was berechnet dieses Programmstück? Gibt es Einschränkungen für die Bedingungen φ oder ψ?

Beispiel 2: Gegeben seien n Zahlen a[1].. a[n]; { Vorbedingung } φ k := 0; while (k < n) do begin k := k + 1; if m < a[k] then m := a[k] end { Nachbedingung } ψ Was berechnet dieses Programm? Gibt es Einschränkungen für die Bedingungen φ oder ψ? FH Wedel Prof. Dr. Sebastian Iwanowski GTI33 Folie 12