Invariante und Algorithmenentwurf

Slides:



Advertisements
Ähnliche Präsentationen
Definition [1]: Sei S eine endliche Menge und sei p eine Abbildung von S in die positiven reellen Zahlen Für einen Teilmenge ES von S sei p definiert.
Advertisements

Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Polynomial Root Isolation
Zahlendarstellung in den Rechnern Z1 und Z3
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
Rekursion vs. Iteration
Timm Grams Hochschule Fulda Fachbereich Elektrotechnik und Informationstechnik Rekursive Funktionen in C © Timm Grams, Fulda, (korr.: )
Zusammenfassung der Vorwoche
Foliensatz von A. Weber zur Vorlesung Informatik I, Bonn, 2002/03
Planares 3 SAT ist NP-vollständig
C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.
Schleifen-beobachtung
Java- Syntax.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Bestimmung des Next-Arrays im KMP-Algorithmus
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Kapitel 5 Stetigkeit.
Kapitel 6 Differenzierbarkeit. Kapitel 6: Differenzierbarkeit © Beutelspacher Juni 2005 Seite 2 Inhalt 6.1 Die Definition 6.2 Die Eigenschaften 6.3 Extremwerte.
Kapitel 2 Die rationalen und die irrationalen Zahlen.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
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.
Minimum Spanning Tree: MST
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Algorithmen beschreiben
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Wenn Programme Entscheidungen fällen müssen, dann …
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/ /23.1.
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Hartmut Klauck Universität Frankfurt WS 06/
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Gleichungen und Gleichungssysteme
Wiederholte Programmausführung
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Zur Wiederholung: Beim unechten Bruch ist der Zähler größer als der Nenner. Das heißt, der Wert des Bruches ist größer als ein Ganzes. Man kann unechte.
Das Heronverfahren arithmetisches Mittel geometrisches Mittel
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
PHP: Operatoren und Kontrollstrukturen
Analyse der Laufzeit von Algorithmen
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 3 / 1 Algebraische Hülle und Homomorphie A = [A, F ] sei  -Algebra. Eine.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
(Wirtschafts-)mathematik I Mathe im Wandel der Zeit Volksschule 1960: Ein Bauer verkauft einen Sack Kartoffeln für 50 DM. Die Erzeugerkosten betragen 40.
Variablen und Datentypen
X. Übungsblatt – Aufgabe X Die Zahlendarstellung im IEEE Standard 754 (single precision): Allgemein gilt: Z = (-1) V * (1 + M) * 2 (E - BIAS) a)Welche.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
 Präsentation transkript:

Invariante und Algorithmenentwurf Timm Grams Hochschule Fulda Fachbereich Elektrotechnik und Informationstechnik © Timm Grams, Fulda, 07.09.02 (6.5.07)

Einführung Was dem Naturwissenschaftler die Naturgesetze, das sind dem Informatiker die Invarianten. Die Invariante erfasst den wesentlichen Kern eines Algorithmus, sie ist sein „Gesetz“. Die Invariante ist Grundlage des Algorithmenent- wurfs. Bei einem Algorithmus ist konsequent zu unterscheiden zwischen der Handlungsanweisung und der Invarianten. Die Handlungsanweisung erfasst den dynamischen, die Invariante den statischen Aspekt eines Algorithmus.

Beispiel: Zahlenwandlung Wandlung der Dezimalzahl 202 in die Darstellung zur Basis 5 Stufe k Relation 0 202 = 20250 1 202 = 4051 + 250 2 202 = 852 + 051 + 250 3 202 = 153 + 352 + 051 + 250

Zahlenwandlung - Operatoren Die Zahlenwandlung basiert auf der ganzzahligen Division mit Rest Die dafür nötigen Operatoren in C sind / und % / ist der Divisionsoperator % ist der Modulo-Operator zur Bestimmung des Rests Beispiele: 202/5 = 40 und 202%5 = 2 Fundamentale Formel der ganzzahligen Arithmetik: z = (z/b) ·b + z %b

Invariante und Endebedingung Die Invariante ist eine Aussage, die vor Eintritt in den Rechenschritt eines Algorithmus erfüllt ist, und die nach dem Schritt erneut wahr ist. Der Algorithmus endet, wenn die Endebedingung erfüllt ist

Grundstruktur von Algorithmen in C while(B)S B S A I A Initialisierungs-Anweisungen B Schleifenbedingung. Für B  0 wird S ausgeführt, für B = 0 (Endebedingung) nicht S Schleifenanweisung (meist eine Verbundanweisung) I Invariante I  (B =0) I  (B 0) I

Beispiel: Wandlung der Zahl Z in Darstellung zur Basis B I  (z 0) I  (z =0) I z r[k++]= z%b; z= z/b; k=0; k=0; while(z){ r[k++]=z%b; z=z/b; } Invariante: b = B Z = zbk+r[k-1]bk-1+...+r[1]b1+r[0]b0 0 ≤ r[i ] < B für i < k

Programmbeweis mit der symbolischen Methode 1 Kursive Großbuchstaben bezeichnen mathematische Variable. Programmfragmente werden in Anführungszeichen geschrieben. Anfangs sei z=Z und durchweg gilt b=B. Zu zeigen ist zuerst, dass die Initialisierung „k=0;“ die Invariante wahr macht. Jedenfalls gilt nach der Initialisierung z=Z und k=0. Also: Z = z = zb0 = zbk + r[k-1]bk-1+...+r[1]b1+r[0]b0 

Programmbeweis mit der symbolischen Methode 2 Im zweite Schritt ist zu zeigen, dass die Anweisungsfolge „r[k++]=z%b; z=z/b;“ die Invariante erhält: Vor der Anweisungsfolge ist k=K und z=A. Die Invariante wird zu Z = AbK+r[K-1]bK-1+...+r[1]b1+r[0]b0 Nach der Anweisungsfolge ist r[K]=A%b, k=K+1 und z=A/b (ganzzahliger Quotient). Wegen A=(A/b)b+A%b gilt Z = ((A/b)b+A%b)bK+r[K-1]bK-1+...+r[1]b1+r[0]b0 = zbK+1 +r[K]bK+r[K-1]bK-1+...+r[1]b1+r[0]b0 = zbk + r[k-1]bk-1+...+r[1]b1+r[0]b0 

Programmbeweis mit der symbolischen Methode 3 Im dritten und letzten Schritt ist zu zeigen, dass aus der Bedingung I  (z=0) das gewünschte Resultat folgt. In der Invarianten Z = zbk + r[k-1]bk-1+...+r[1]b1+r[0]b0 ist z=0 zu setzen. Damit ergibt sich Z = r[k-1]bk-1+...+r[1]b1+r[0]b0 Das Array r enthält die Zahlendarstellung der Zahl Z zur Basis B. 

Problem Für Z = 0 ist die Summe r[k-1]bk-1+...+r[1]b1+r[0]b0 leer. Das ist auch richtig so: Eine leere Summe hat konventionsgemäß den Wert null. Aber das Wandlungsprogramm kann mit einer leeren Summe nichts anfangen. Was ist zu tun?