Algorithmen und algorithmische sprachkonzepte programme und algorithmen
This presentation is the property of its rightful owner.
Sponsored Links
1 / 63

Algorithmen und algorithmische Sprachkonzepte Programme und Algorithmen PowerPoint PPT Presentation


  • 110 Views
  • Uploaded on
  • Presentation posted in: General

Algorithmen und algorithmische Sprachkonzepte Programme und Algorithmen. Foliensatz von A. Weber zur Vorlesung Informatik I, Bonn, 2002/03 Überarbeitet und ergänzt von W. Küchlin zu Informatik I, Tübingen 2003/04. Was ist ein Programm?.

Download Presentation

Algorithmen und algorithmische Sprachkonzepte Programme und Algorithmen

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Algorithmen und algorithmische SprachkonzepteProgramme und Algorithmen

Foliensatz von A. Weber zur Vorlesung Informatik I, Bonn, 2002/03

Überarbeitet und ergänzt von W. Küchlin zu Informatik I, Tübingen 2003/04

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag, ISBN 3-540-20958-1


Was ist ein Programm?

  • Deutliche Diskrepanz zwischen beiden Begriffserklärungen im Lexikon!

  • 'Programm': sehr allgemein (umgangssprachlich) aufgefasst

  • 'Programmierung': spezifische Deutung des Begriffs 'Programm'

  • 'Programm' im allgemeinen:

    • z.B. Fernsehprogramm, Konferenzprogramm, Parteiprogramm

  • 'Programm' im speziellen:

    • nicht notwendig nur auf Computer bezogen Programm einer Waschmaschine, eines Videorecorders Programm einer Waschmaschine, eines Videorecorders

Nach R. Manthey, Vorlesung Informatik I, Universität Bonn, WS 2001/2002

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -2- Springer-Verlag, ISBN 3-540-20958-1


Was ist ein Programm?

Nach R. Manthey, Vorlesung Informatik I, Universität Bonn, WS 2001/2002

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -3- Springer-Verlag, ISBN 3-540-20958-1


Was ist ein Programm?

Nach R. Manthey, Vorlesung Informatik I, Universität Bonn, WS 2001/2002

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -4- Springer-Verlag, ISBN 3-540-20958-1


Begriff des Algorithmus

  • Begriffsdefinition

    • Ein Algorithmus(algorithm) ist die Beschreibung eines Verfahrens, um aus gewissen Eingabegrößen bestimmte Ausgabegrößen zu berechnen. Dabei müssen folgende Bedingungen erfüllt sein

      • Spezifikation

      • Durchführbarkeit

      • Korrektheit

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -5- Springer-Verlag, ISBN 3-540-20958-1


Begriff des Algorithmus

Spezifikation

  • Eingabespezifikation: Es muss genau spezifiziert sein, welche Eingabegrößen erforderlich sind und welchen Anforderungen diese Größen genügen müssen, damit das Verfahren funktioniert

  • Ausgabespezifikation: Es muss genau spezifiziert sein, welche Ausgabegrößen (Resultate) mit welchen Eigenschaften berechnet werden

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -6- Springer-Verlag, ISBN 3-540-20958-1


Begriff des Algorithmus

Durchführbarkeit

  • EndlicheBeschreibung: das Verfahren muss in einem endlichen Text vollständig beschrieben sein

  • Effektivität: Jeder Schritt des Verfahrens muss effektiv (d.h. tatsächlich) „mechanisch“ ausführbar sein

    • Bem.: „Effektivität“ ist nicht zu verwechseln mit „Effizienz“ („Wirtschaftlichkeit“)

  • Determiniertheit: Der Verfahrensablauf ist zu jedem Zeitpunkt fest vorgeschrieben

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -7- Springer-Verlag, ISBN 3-540-20958-1


Begriff des Algorithmus

  • Korrektheit

    • partielle Korrektheit: Jedes berechnete Ergebnis genügt der Ausgabespezifikation, sofern die Eingaben der Eingabespezifikation genügt haben

    • Terminierung: Der Algorithmus hält nach endlich vielen Schritten mit einem Ergebnis an, sofern die Eingaben der Eingabespezifikation genügt haben

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -8- Springer-Verlag, ISBN 3-540-20958-1


Begriff des Algorithmus

  • Bemerkung: Nach unserer Begriffsbestimmung gäbe es also keine

    • nicht-deterministische,

    • nicht-terminierende

    • ...

      • Algorithmen

  • Diese Begriffe werden aber durchaus verwendet!

    • Methode erfüllt alle Anforderungen an einen Algorithmus, bis auf die mit „nicht“ gekennzeichnete

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -9- Springer-Verlag, ISBN 3-540-20958-1


Ein "Algorithmus" aus dem täglichen Leben

Nach R. Manthey, Vorlesung Informatik I, Universität Bonn, WS 2001/2002

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -10- Springer-Verlag, ISBN 3-540-20958-1


Eine sehr alte Beschreibung eines Algorithmus

Zitiert nach R. Manthey, Vorlesung Informatik I, WS 2001/2002

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -11- Springer-Verlag, ISBN 3-540-20958-1


Herkunft des Wortes „Algorithmus“

nach R. Manthey, Vorlesung Informatik I, WS 2001/2002

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -12- Springer-Verlag, ISBN 3-540-20958-1


Algorithmen und Programme

nach R. Manthey, Vorlesung Informatik I, WS 2001/2002

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -13- Springer-Verlag, ISBN 3-540-20958-1


Problem – Algorithmus - Programm

Nach R. Manthey, Vorlesung Informatik I, Universität Bonn, WS 2001/2002

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -14- Springer-Verlag, ISBN 3-540-20958-1


Prinzipien des Algorithmenentwurfs

  • Neben den Bedingungen, die schon in die Begriffsdefinition eingegangen sind, gibt es weitere wichtigePrinzipien, die beim Entwurf zu beachten sind

    • Effizienz

      • Der Algorithmus soll möglichst wenig Aufwand verursachen

        • Das Ergebnis mit möglichst wenig Rechenschritten (oder mit möglichst wenig Speicherbedarf) erzielen

      • Frage der Komplexität von Algorithmen wichtiges Thema in der Informatik III und Informatik IV

    • Korrektheitbeweisbar?

      • Ein nicht-korrekter Algorithmus ist nach unserer Definition kein Algorithmus!

      • Trotzdem sind nicht-korrekte Verfahren eher die Regel als die Ausnahme

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -15- Springer-Verlag, ISBN 3-540-20958-1


Beschreibung von Algorithmen

  • Für die Beschreibung von Algorithmen gibt es viele Möglichkeiten

    • Alltagssprache

    • Konkrete Programmiersprache

    • Dazwischen gibt es eine Vielzahl von Notationen, die den Übergang zwischen Problembeschreibung und Programm erleichtern sollen

      • Flussdiagramme

      • Pseudocode

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -16- Springer-Verlag, ISBN 3-540-20958-1


Beschreibung von Algorithmen

  • Wir stellen Algorithmen als FolgeeinzelnerBearbeitungsschritte dar

    • Diese können ggf. wiederholt werden, bis das gewünschte Ergebnis erzielt ist

    • Wiederholungen geschehen entweder

      • innerhalb der Schrittfolge durch Anweisungen wie: weiter mit Schritt (2) („Iteration“),

      • oder durch erneutes Aufrufen des Algorithmus mit einer einfacherenProblemstellung („Rekursion“)

  • Jeder Schritt sollte wie ein Buchkapitel einem Thema folgen

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -17- Springer-Verlag, ISBN 3-540-20958-1


Grundschema des Algorithmenaufbaus

  • Folgendes Grundschema wird uns bei vielen Algorithmen begegnen

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -18- Springer-Verlag, ISBN 3-540-20958-1


Grundschema des Algorithmenaufbaus: Beispiel

  • Beispiel:Man finde ein Verfahren zur Berechnung des Rests r der Ganzzahldivision a/b, also für cb+r=a und r<b, wobei 0≤a und 0≤b

    • Diese Funktion wird meist „Modulus-Funktion“ genannt, da ra mod b

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -19- Springer-Verlag, ISBN 3-540-20958-1


Steuerungsverlauf

  • Die Anordnung der Anweisungen eines Algorithmus, die bestimmt, in welcher Reihenfolge Dinge geschehen, heißt

    • Steuerungsverlauf(control flow) des Algorithmus

      • Wird auch Kontrollfluss (flow of control) genannt

    • Manchmal wird auch der Programmablauf oder Kontrollfaden(thread of control), also die tatsächlich abgespulten Schritte und Anweisungen so bezeichnet

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -20- Springer-Verlag, ISBN 3-540-20958-1


Steuerungsverlauf

  • Die Konstruktion „fahre fort mit Schritt 2“ stellt einen Sprung (jump) im Steuerungsverlauf dar

    • Dies ist die elementarste Form, eine Wiederholung oder sonstige Verzweigung im Ablauf auszudrücken

    • Dadurch erhalten wir die elementar-iterativeBeschreibungsform von Algorithmen

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -21- Springer-Verlag, ISBN 3-540-20958-1


Elementar-iterative Beschreibungsform

  • Die elementar-iterative Beschreibungsform hat die nützliche und angenehme Eigenschaft:

    • Wir können über einzelne Schritte des Verfahrens sprechen

  • Die „fahre fort“-Konstruktion entspricht unmittelbar der goto-Anweisung im Programmieren

    • Zur Anwendung von goto werden Schritte mit einer Marke (Label) versehen, um das Ziel des Sprunges zu kennzeichnen

  • Anwendung vongoto ist aber sehr gefährlich!

    • Strukturiert komplexe Programm nicht ausreichend

      • Steuerungsverlauf kann verworren und unübersichtlich sein

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -22- Springer-Verlag, ISBN 3-540-20958-1


Flussdiagramme

  • Der Steuerungsverlauf kann mit der Notation der Flussdiagramme(flow chart) graphisch dargestellt werden

    • Die Sprache der Flussdiagramme benutzt folgende Symbole

      • Werden mit Pfeilenverbunden

      • Die Ausführung solcher Ablaufpläne folgt den Pfeilen zwischen den Kästchen

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -23- Springer-Verlag, ISBN 3-540-20958-1


Flussdiagramme

  • Beispiel: Grundschema des Algorithmenaufbaus als Flussdiagramm

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -24- Springer-Verlag, ISBN 3-540-20958-1


Modulus-Funktion als Flussdiagramm

  • Beispiel:Flussdiagramm für iterative Beschreibung der Modulus-Funktion

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -25- Springer-Verlag, ISBN 3-540-20958-1


Strukturiert-iterative Beschreibungsform

  • Um den Steuerungsverlauf auch bei komplexen Algorithmen übersichtlich zu halten, schränkt man die Sprüngeein:

    • Schleifen der Flussdiagramme sind höchstens ineinander geschachtelt

    • Schleifen überkreuzen sich nicht!

  • Im Arbeitsschritt des Grundschemas würde man z. B. nur wieder eine geschlossene Schleife oder einen (vorzeitigen) Sprung zurück zum Test des Trivialfalls erlauben

  • Wir sprechen in diesem Fall von strukturiertenSprüngenim Gegensatz zu freienSprüngen, die prinzipiell beliebige Ziele haben können

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -26- Springer-Verlag, ISBN 3-540-20958-1


Strukturiert-iterative versus elemantar-iterative Beschreibungsform

  • Beispiel: Schemata einiger Kontrollflüsse

Spaghetti-Code

Strukturiert-iterativ

Elementar-iterativ

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -27- Springer-Verlag, ISBN 3-540-20958-1


Strukturiert-iterative Beschreibungsform

  • Sprünge kommen zunächst nur noch implizit bei der Ausführung höherer Iterationsstrukturen vor

    • Dieses sind Fallunterscheidungen wie if-then-else

    • Oder insbesondere bei Schleifenkonstrukten (loop), wie etwa

      • while

    • Diese bewirken, dass der Programmfluss in einer Schleife von einem Test zu einem Bearbeitungsschritt und wieder zurück zum Test geht

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -28- Springer-Verlag, ISBN 3-540-20958-1


Strukturiert-iterative Beschreibungsform: while

  • Schleifenkonstrukte: while

    • Die klassische while-Schleife lautet wie folgt:

    • Bei Eintritt in die while-Schleife wird zunächst die Bedingung (ein Boolescher Ausdruck) ausgewertet

      • Beim Wert true wird die Anweisungssequenz einmal ausgeführt und danach erneut zur Bedingung verzweigt

      • Beim Wert false wird die Schleife (ohne Ausführung der Anweisungssequenz) beendet

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -29- Springer-Verlag, ISBN 3-540-20958-1


Strukturiert-iterative Beschreibungsform: while

  • Die while-Schleife entspricht also der Konstruktion

  • .

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -30- Springer-Verlag, ISBN 3-540-20958-1


Rekursive Beschreibungsform

  • Im rekursiven Ansatz versucht man, ein vorgelegtes Problem P(X) nach folgendem Schema in zwei Teilen zu lösen:

  • Bem.: Rekursive und iterative Beschreibungsformen sind gleichmächtig

    • Nach einer Formalisierung des Algorithmenbegriffs kann dies auch bewiesen werden!

      • Etwa in der Vorlesung Informatik IV

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -31- Springer-Verlag, ISBN 3-540-20958-1


Rekursive Beschreibungsform: Beispiel

  • Beispiel: In gängiger mathematischer Notation könnte ein Verfahren zur Berechnung der Modulus-Funktion a mod b wie folgt aussehen:

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -32- Springer-Verlag, ISBN 3-540-20958-1


Rekursive Beschreibungsform: Beispiel

  • Beispiel (Forts.): Um festzustellen, ob diese Berechnungsvorschrift einen Algorithmus darstellt, müssen wir folgende Fragen beantworten:

    • Spezifikation

      • Eingabe

      • Ausgabe

    • Durchführbarkeit

      • Endliche Beschreibung

      • Effektivität

      • Determiniertheit

    • Korrektheit

      • Partielle Korrektheit

      • Terminierung

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -33- Springer-Verlag, ISBN 3-540-20958-1


Rekursive Beschreibungsform: Korrektheitsbeweis des Beispiels

  • Beispiel (Forts.):

    • Spezifikation

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -34- Springer-Verlag, ISBN 3-540-20958-1


Rekursive Beschreibungsform: Korrektheitsbeweis des Beispiels

  • Beispiel (Forts.):

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -35- Springer-Verlag, ISBN 3-540-20958-1


Rekursive Beschreibungsform: Korrektheitsbeweis des Beispiels

  • Beispiel (Forts.):

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -36- Springer-Verlag, ISBN 3-540-20958-1


Rekursive Beschreibungsform: Korrektheitsbeweis des Beispiels

  • Beispiel (Forts.):

    • Korrektheit

  • Bemerkungen: Diese Überlegungen stellen einen Korrektheitsbeweis dar

  • Die Termination konnte bei diesem Algorithmus also bewiesen werden; es gibt aber kein mechanisches Verfahren das bei einem beliebigen Algorithmus entscheiden kann, ob dieser terminiert oder nicht („Halte-Problem“)

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -37- Springer-Verlag, ISBN 3-540-20958-1


Rekursive Beschreibungsform: Beispiel in Java

  • Das rekursive Verfahren in mathematischer Notation können wir mit minimalen Änderungen nach Java umsetzen

    • Wir definieren dazu eine Java-Funktion mod, die zwei ganze Zahlen a und b als Parameter hat und eine ganze Zahl als Ergebnis liefert

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -38- Springer-Verlag, ISBN 3-540-20958-1


Rekursive Beschreibungsform: Beispiel in Java

  • Zur Illustration stellen wir nun noch eine etwas ausführlichere (aber gleichwertige) Version dieser Funktion vor

Kommentarzeilen

Zum Vergleich: Rekursionsgleichung

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -39- Springer-Verlag, ISBN 3-540-20958-1


Euklidischer Algorithmus zur ggT-Berechung

  • Als weiteres Beispiel für die rekursive Beschreibungsform nehmen wir den Euklidischen Algorithmus zu Berechnung des größten gemeinsamen Teilers (ggT) zweier ganzer Zahlen

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -40- Springer-Verlag, ISBN 3-540-20958-1


Euklidischer Algorithmus zur ggT-Berechung

  • Beschreibung in einem Pseudo-Code

Zum Vergleich: Rekursionsgleichung

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -41- Springer-Verlag, ISBN 3-540-20958-1


Euklidischer Algorithmus zur ggT-Berechung

  • Beschreibung in Java

Andere Art eines Kommentars, ein

„Dokumentationskommentar“

Modulus-Funktion ist in Java eingebaut; wird durch das Symbol % beschrieben;

könnten auch die selbst definierte Funktion mod aufrufen

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -42- Springer-Verlag, ISBN 3-540-20958-1


Rekursion und funktionale Programmierung

  • Der rekursive Ansatz zur Problemlösung ist die Hauptdenkweise, die die funktionalen Programmiersprachen unterstützen

    • Etwa LISP, Scheme, ML, Haskell

  • Vorzug liegt in der großen Eleganz und Kompaktheit gerade bei kleinen Lehrbuchbeispielen

  • Dieser Ansatz erfordert nur sehr wenige syntaktische Konstrukte der Programmiersprache (kein while, for, repeat, ...)

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -43- Springer-Verlag, ISBN 3-540-20958-1


Rekursion und funktionale Programmierung

  • Funktionale Denkweise:

    • kein Begriff des Zustands(state) einer Berechnung.

      • manchmal beträchtliche Eleganz, erleichtert auch Korrektheitsbeweise

    • Alle Daten sind global, alle Funktionen können auf allen Daten operieren

  • Objektorientierte Denkweise:

    • Funktionen sind mit ihren Daten zu Objekten gekapselt

    • Objekte interagieren durch Fenster mit anderen Objekten

    • Objekte haben Zustände (gegeben durch die Daten)

    • Zustände werden durch Berechnung weiterentwickelt

      • In der objektorientierten Welt ist daher das (ebenfalls klassische) zustandsorientierte iterative Konzept zur Konstruktion von algorithmischen Problemlösungen am weitesten verbreitet

  • Wie wir gesehen haben, kann auch in einer objektorientierten Sprache wie Java rekursiv programmiert werden!

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -44- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

  • Bei der Verwendung von imperativen (Anweisungs orientiert) Programmiersprachen wie Java stellt die Konstruktion korrekter iterativer Algorithmen den Kern des Programmierens dar

    • Hat man diese nicht verstanden, kann man auch nicht programmieren

  • Wir betrachten deshalb den Grundaufbau iterativer Algorithmen nochmals in vertiefter Form

    • Besonders auch unter dem Aspekt, dass wir strukturiert-iterative Algorithmen entwickeln und als korrekt beweisen wollen

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -45- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

  • Betrachten Grundschema des Algorithmenaufbaus in einer Variante, die einem strukturiert-iterativen Ansatz entspricht

  • Der Algorithmus operiert dabei auf einer Menge V von Variablen (Name mit wechselndem Wert)

    • Diese Zustandsvariablen haben veränderliche Werte und können somit bearbeitet werden, und unter ihnen befindet sich schlußendlich das Resultat

  • Nach einem Vorbereitungsschrittwird so lange die Arbeitf(V) verrichtet, wie die SchleifenbedingungC(V) wahr ist

  • Danach wird ein Nachbearbeitungsschrittausgeführt und der Algorithmus beendet

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -46- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

  • Zur Verifikation werden Zustandsvariablen partitioniert in V=EHA

    • Eist Menge der Eingabevariablen

      • Eingabeparameter der Berechnung

    • Aist Menge der Ausgabevariablen

      • Werte zum Schluss zeigen Ergebnis der Berechnung an

    • Hist Menge der Hilfsvariablen

  • Die Werte der Variablen spiegeln zu jedem Zeitpunkt den Zustand (state) der Berechnung wider

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -47- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

  • Problemlösung durch den Algorithmus findet also dadurch statt, dass der Anfangszustand V0, in dem nur die Variablen in E relevante Werte haben, durch eine BerechnungssequenzSchritt für Schritt („iterativ“) in einen Endzustand transformiert wird

    • In dem die Werte der Variablen in A das gewünschte Gesamtresultat darstellen

    • Oft gibt es nur ein einziges Resultat, das wir üblicherweise mit r oder res bezeichnen

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -48- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

  • Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen

    • Variablen können Werte zugewiesen werden

    • Zuweisungsoperator in imperativen Sprachen von fundamentaler Bedeutung

      • In Pascal heißt Zuweisungsoperator :=

        • Benutzen := für Zuweisungsoperator in Pseudocode

      • In C, C++, Java heißt Zuweisungsoperator =

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -49- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

  • Erfolgt Reduktion mithilfe strukturierter Iteration, so kann i.A. Korrektheit durch Finden einer geeigneten Schleifeninvariante bewiesen werden

  • Schleifeninvariante: Prädikatenlogische Formel INV(V), die an bestimmter Stelle einer Schleife bei allen Schleifendurchgängen stets gilt

  • F(V) ist Schleifeninvariante falls

    • F(V) gilt vor dem ersten Durchgang

    • F(V) => F(V ´); F gilt nachher, falls F vorher gegolten hat

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -50- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

Grundschema der strukturierten Iteration mit Schleifeninvariante

als UML activity chart

SchleifeninvarianteINV(V)

geeignete Formel, die bei

allen Schleifendurchgängen gilt

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -51- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

Grundschema der strukturierten Iteration mit Schleifeninvariante

SchleifeninvarianteINV(V)

geeignete Formel, die bei

allen Schleifendurchgängen gilt

  • Verifikation nach Floyd:

  • INV(V) ʌ C(V)=>

  • nach Arbeit f(V) gilt INV(V)

  • Anforderung =>

  • nach Vorbereitung gilt INV(V)

  • INV(V) ʌ ¬C(V) =>

  • nach Nachbereitung gilt Zusicherung

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -52- Springer-Verlag, ISBN 3-540-20958-1


Verifikationsmethode von Floyd

  • Die Verifikationsmethode von Floydfür das Grundschema iterativer Algorithmen ist

    • Finde eine geeignete Formel F(V)und zeige, dass sie eine Schleifen-Invariantean der im Flußdiagramm auf voriger Seite angegebenen Stelle ist; bezeichne F(V) nachfolgend mit INV(V)

    • Zeige, dass aus der Eingabespezifikation folgt, dass INV(V)vor dem erstenSchleifendurchgang gültig ist

    • Zeige, dass nach dem letzten Schleifendurchgang aus INV(V)und aus der Negation der Schleifenbedingung C(V), also aus INV(V)   C(V) die Gültigkeit der Ausgabespezifikation folgt

    • Zeige, dass die Schleife terminiert

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -53- Springer-Verlag, ISBN 3-540-20958-1


Verifikationsmethode von Floyd

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -54- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

  • Algorithmus für die Fakultätsfunktion mit Schleifeninvariante

Schleifeninvariante F(n,r,i)= [n! = r*i!]

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -55- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

Fakultätsfunktion als

UML activity chart

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -56- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -57- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

Beispiel: Modulus-Funktion (iterativ)

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -58- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

Beispiel: Modulus-Funktion (iterativ)

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -59- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

Beispiel: Modulus-Funktion (iterativ) als UML activity chart

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -60- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

Beispiel: Verifikation der Modulus-Funktion (iterativ) nach Floyd

  • Verifikation nach Floyd:

  • Aus [a-(a/b)*b = r-(r/b)*b]

  • und (r>=b) und {r := r-b;}

  • folgt [a-(a/b)*b = r-(r/b)*b]

  • Aus (a >= 0, b > 0) und {r := a;}

  • folgt [a-(a/b)*b = r-(r/b)*b]

  • Aus [a-(a/b)*b = r-(r/b)*b] und

  • (r < b) und {return( r );}

  • folgt (r = a – (a/b)*b)

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -61- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

Verifikations-Beispiel: Modulus-Funktion (iterativ)

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -62- Springer-Verlag, ISBN 3-540-20958-1


Konstruktion und Verifikation iterativer Algorithmen

  • Finden von Schleifen-Invarianten

    • Invariante für fac(n) : [n! = r * i!]

    • Invariante für mod(a,b): [(a mod b) = r – (r/b)*b]

  • Gemeinsame Struktur

    • Links von = steht die Aufgabe

    • Rechts steht getane Arbeit und noch zu tuende Arbeit

      • r steht für getane Arbeit (akkumuliertes Ergebnis)

      • Schleifen-Index i repräsentiert noch zu tuende Arbeit

        • Bei fac ist i! der Wert, den man noch zu r multiplizieren muß, bis r = n!

        • Bei mod ist (r/b)*b der Wert, den man noch von r abziehen muß, bis r = (a mod b).

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -63- Springer-Verlag, ISBN 3-540-20958-1


  • Login