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


  • 106 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 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

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

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

  • 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

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

  • 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

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

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

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

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

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

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

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

  • 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