Algorithmen und algorithmische sprachkonzepte programme und algorithmen
Download
1 / 63

Algorithmen und algorithmische Sprachkonzepte Programme und Algorithmen - PowerPoint PPT Presentation


  • 154 Views
  • Uploaded on

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?.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Algorithmen und algorithmische Sprachkonzepte Programme und Algorithmen' - lang


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 sprachkonzepte programme und algorithmen

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
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 programm1
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 programm2
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
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 algorithmus1
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 algorithmus2
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 algorithmus3
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 algorithmus4
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
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
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
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
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
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
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
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 algorithmen1
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
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
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
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


Steuerungsverlauf1
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
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


Algorithmen und algorithmische sprachkonzepte programme und algorithmen

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
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
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
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
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 beschreibungsform1
Strukturiert-iterative Beschreibungsform 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
Strukturiert-iterative Beschreibungsform: while Beschreibungsform

  • 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 while1
Strukturiert-iterative Beschreibungsform: while Beschreibungsform

  • 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
Rekursive Beschreibungsform 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
Rekursive Beschreibungsform: Beispiel Beschreibungsform

  • 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 beispiel1
Rekursive Beschreibungsform: Beispiel Beschreibungsform

  • 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
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 beispiels1
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 beispiels2
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 beispiels3
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
Rekursive Beschreibungsform: Beispiel in Java Beispiels

  • 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 java1
Rekursive Beschreibungsform: Beispiel in Java Beispiels

  • 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
Euklidischer Algorithmus zur ggT-Berechung Beispiels

  • 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 berechung1
Euklidischer Algorithmus zur ggT-Berechung Beispiels

  • 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 berechung2
Euklidischer Algorithmus zur ggT-Berechung Beispiels

  • 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
Rekursion und funktionale Programmierung Beispiels

  • 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 programmierung1
Rekursion und funktionale Programmierung Beispiels

  • 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
Konstruktion und Verifikation iterativer Algorithmen Beispiels

  • 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 algorithmen1
Konstruktion und Verifikation iterativer Algorithmen Beispiels

  • 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 algorithmen2
Konstruktion und Verifikation iterativer Algorithmen Beispiels

  • 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 algorithmen3
Konstruktion und Verifikation iterativer Algorithmen Beispiels

  • 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 algorithmen4
Konstruktion und Verifikation iterativer Algorithmen Beispiels

  • 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 algorithmen5
Konstruktion und Verifikation iterativer Algorithmen Beispiels

  • 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 algorithmen6
Konstruktion und Verifikation iterativer Algorithmen Beispiels

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 algorithmen7
Konstruktion und Verifikation iterativer Algorithmen Beispiels

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
Verifikationsmethode von Floyd Beispiels

  • 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 floyd1
Verifikationsmethode von Floyd Beispiels

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 algorithmen8
Konstruktion und Verifikation iterativer Algorithmen Beispiels

  • 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 algorithmen9
Konstruktion und Verifikation iterativer Algorithmen Beispiels

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 algorithmen10
Konstruktion und Verifikation iterativer Algorithmen Beispiels

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 algorithmen11
Konstruktion und Verifikation iterativer Algorithmen Beispiels

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 algorithmen12
Konstruktion und Verifikation iterativer Algorithmen Beispiels

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 algorithmen13
Konstruktion und Verifikation iterativer Algorithmen Beispiels

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 algorithmen14
Konstruktion und Verifikation iterativer Algorithmen Beispiels

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 algorithmen15
Konstruktion und Verifikation iterativer Algorithmen Beispiels

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 algorithmen16
Konstruktion und Verifikation iterativer Algorithmen Beispiels

  • 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