GRUNDKURS INFORMATIK 3 DATENVERARBEITUNG - ALGORITHMEN Marcel Götze
Überblick 1. Bisher: Daten, Information, Wissen 2. Heute: Datenverarbeitung 1. Was ist ein Algorithmus 2. Vom Problem zur Lösung
Datenverarbeitung Bearbeitung von Daten durch Maschinen Datenverarbeitung beinhaltet: Umformen (Rechnen, Zählen, Übersetzen,...) Transportieren Speichern Ein-/Ausgabe Datenverarbeitung beinhaltet oft Problemlösung nach bestimmtem Schema Algorithmus
Algorithmus (erste Näherung) 2. 5 Das Wort Algorithmus ist eine Abwandlung oder Verballhornung des Namens von Muhammad ibn Musa al-chwarizmi (* ca. 783, ca. 850), dem Autor des Buchs Hisab al-dschabr wa-l-muqabala (825, Regeln zur Wiederherstellung und Reduktion), durch das die Algebra im Westen verbreitet wurde. Die lateinische i Fassung beginnt mit Dixit Algoritmi... (Algoritmus sprach...), womit der Autor gemeint war. Das Wort Algebra stammt ebenfalls (al-jabr Einrenkung ) aus dem Titel des Buches. Quelle: Wikipedia
6 Eindeutige und exakte Beschreibung eines Verarbeitungsvorganges. Ein Prozessor führt einen Prozeß (Arbeitsvorgang) auf Basis einer eindeutig interpretierbaren Beschreibung (des Algorithmus) aus. Typische algorithmisierbare Prozesse: Kochrezepte Bedienungsanleitungen Rechnerprogramm (Prozessor: Computer!)
Bestandteile eines Algorithmus 2. 7 Objekte darauf soll eine Wirkung ausgeübt werden können abstrakter oder auch konkreter Natur sein. Handlungen Wirken in einer bestimmten Reihenfolge ausgeführt auf gewünschte Weise auf die Objekte ein. Zustandsänderungen an Objekten
Beispiel: Auswechseln eines Rades am Auto 8 1. Löse die Radmuttern. 2. Hebe den Wagen an. 3. Schraube die Radmuttern ab. 4. Tausche das Rad gegen ein anderes Rad aus. 5. Schraube die Radmuttern an. 6. Setze den Wagen ab. 7. Ziehe die Radmuttern fest.
Beobachtungen 21 2.1. 9 Anwender des Algorithmus muß jeden einzelnen Schritt verstehen und ausführen können Verfahren enthält Folge von Handlungen in fester Reihenfolge ODER über Reihenfolge wird erst während der Ausführung des Algorithmus entschieden (notwendig: entsprechende Sprachkonstrukte) Abarbeitungsreihenfolge mancher Einzelschritte nicht von Bedeutung Ausführungsorgan / Prozessor muß über gewisse elementare Fähigkeiten verfügen Elementaroperationen
Algorithmus Definition 3. 10 Ein Algorithmus ist eine präzise (d.h., in einer festgelegten Sprache abgefaßte) endliche Beschreibung eines allgemeinen Verfahrens unter Verwendung ausführbarer elementarer (Verarbeitungs-) Schritte. Algorithmus eine wohldefinierte * Methode, ein Problem zu lösen. beschrieben durch eine endliche Folge von Anweisungen Anweisungen werden nacheinander ausgeführt Anweisungsfolge kann (in festgelegter Weise) wiederholt werden. * genaue, eindeutige, endliche und ausführbare Beschreibung
11 Ein Algorithmus ist unabhängig von der Umsetzung im Rechner! Beispiele Eine Algorithmus zum Durchlaufen des Studiums Ein Algorithmus zum Erstellen eines Apfelkuchens heißt Backrezept Bedienungsanleitungen Gb Gebrauchsanleitungen li Bauanleitungen Partitur Spielanleitung Umwandlung von Dezimal- in Dualzahlen
12 Bekannte Algorithmen: Addition zweier positiver Dezimalzahlen (mit Überträgen) Test, ob einen gegebene natürliche Zahl eine Primzahl ist Sortieren einer unsortierten Kartei (etwa lexikographisch) Berechnung der Zahl e = 2.7182...
Beispiel für einen Algorithmus 4. 13 Suche des Namens Götze im Telefonbuch (Variante 1) 1. Schlage die erste Seite des Buches auf 2. Lese beginnend mit dem ersten Namen einen Namen nach dem anderen, bis a) Götze gelesen wird Ende (gefunden) b) das Ende des Buches erreicht ist Götze steht nicht im Telefonbuch
14 Suche des Namens Götze im Telefonbuch (Variante 2) 1. Telefonbuch in der Mitte des Buches aufschlagen. Ein Name x wird gelesen. 2. Wenn x alphabetisch vor Götze liegt, dann wird der hinter x liegende Teil des Telefonbuches in der Mitte aufgeschlagen. Wenn x aber hinter diesem Namen liegt, dann wird der vordere Teil des Telefonbuchs in der Mitte aufgeschlagen. 3. Schritt 2 wird solange wiederholt, bis a) Götze gelesen wird Ende (gefunden) b) zwei aufgeschlagene Namen hintereinander liegen Götze steht nicht im Telefonbuch
Eigenschaften von Algorithmen 5. 15 Abstraktion Ein Algorithmus löst im Allgemeinen eine Klasse von Problemen und nicht nur eine einzelnes ganz spezielles Problem. Finitheit / Endlichkeit Die Beschreibung wie auch die Anzahl an Zwischenergebnissen ist beschränkt bzw. endlich lang. Terminierung Algorithmen, die für jede(!) Eingabe nach endlich vielen Schritten ein Endekriterium erreichen, heißen terminierend. Determiniertheit (globale Eindeutigkeit) Liefern bei gleichen Daten bei wiederholter Ausführung stets gleiche Ergebnisse.
16 Determinismus i (lokale l Eindeutigkeit) it) Eindeutige Festlegung des nächsten Schrittes im Ablauf schließt Determiniertheit ein Effizienz üblicherweise wird hierunter der Ressourcenverbrauch (CPU, RAM, Storage) verstanden Wartbarkeit, Änderbarkeit Wie gut ist ein Algorithmus an geänderte Problemstellungen oder auf andere Anwendungsumgebungen anzupassen? Zuverlässigkeit, Robustheit Wie gutmütig g reagiert ein Algorithmus auf fehlerhafte Eingaben (s.a. Anwendungstests,...)? bei numerischen Algorithmen: Welche Auswirkungen haben Rundungsfehler?
Eigenschaften: Abstraktion 51 5.1. 17 Ein Algorithmus löst im Allgemeinen eine Klasse von Problemen man abstrahiert von konkreten Eingabedaten und sucht ein allgemeines Verfahren Beispiel: Algorithmen zum Sortieren kann man auf Zahlen, Buchstaben, Namen,... miteinander vergleichbare Dinge anwenden
Eigenschaften: Terminierung 52 5.2. 18 Ein Algorithmus heißt terminierend, wenn er (bei jeder erlaubten Eingabe von Parameterwerten) nach endlich vielen Schritten abbricht bzw. beendet ist. Oft schwer oder überhaupt nicht feststellbar, ob ein Algorithmus terminiert (eine der Fragestellungen, mit der sich die Theoretische Informatik beschäftigt)
19 Beispiel i (Ulam-Algorithmus): Beginne mit einer beliebigen Zahl n. Ist sie ungerade, multipliziere sie mit 3 und addiere 1, ansonsten halbiere sie. Fahre fort, bis 1 erreicht ist. Bis heute nicht geklärt, ob Ulam-Algorithmus für jedes n terminiert einige Folgen: 1 Ende 2, 1 Ende 3, 10, 5, 16, 8, 4, 2, 1 Ende... 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 Ende... 63 geht in 108 Schritten fast bis 10000 und endet dann bei 1...
Eigenschaften: Determinismus 53 5.3. 20 deterministischer i ti Ablauf: eindeutige Vorgabe der Schrittfolge d.h. zu jedem Zeitpunkt der Ausführung gibt es maximal eine Möglichkeit der Fortsetzung Algorithmen, bei denen die die Fortsetzung über Wahrscheinlichkeiten bestimmt ist heißen stochastisch oder randomisiert und sind nicht deterministisch Beispiele für nicht-deterministischen Ablauf: Sortieren: Wähle zufällig eine Karte, bilde zwei Stapel (lexikographisch vor der Karte, lexikographisch nach der Karte), sortiere diese (kleineren) Stapel, füge die sortierten Stapel wieder zusammen. Variante 2 von Suchen des Namen Götze im Telefonbuch wegen der blibi beliebigen Auswahl des Namens X.
Eigenschaften: Determiniertheit 54 5.4. 21 Liefern bei gleichen Daten bei wiederholter Ausführung stets t gleiche Ergebnisse Beispiel für einen nicht determinierter Algorithmus 1. Wählen Sie eine beliebige Zahl zwischen 1 und 100 2. Multiplizieren Sie die Zahl mit der Anzahl der seit dem 1.1.2000 vergangenen Minuten 3. Schreiben Sie das Ergebnis auf Nicht determiniert wegen Beliebigkeit der Auswahl zum Ausführungszeitpunkt und der Abhängigkeit vom Ausführungszeitpunkt Jeder deterministische i ti Algorithmus ist auch determiniert. i t Nicht jeder determinierte Algorithmus ist jedoch deterministisch.
Aufbau von Algorithmen 6. 22 Größen beschreiben gegebenen Zustand von Objekten mit Variablen (Bezeichnern) Elementare Operationen werden auf betrachtete Größen angewendet; unterschiedliche Abstraktionsebenen denkbar (benutzernah maschinennah) Kontrollstrukturen/Ablaufbedingungen beschreiben Reihenfolge und Bedingungen für elementare Operationen
23 Algorithmen werden konstruiert, indem kleinere Bausteine zu größeren zusammengesetzt werden. Bausteine und Kompositionsprinzipien: Elementare Operation: nicht weiter erläutert schneide Fleisch in kleine Würfel Sequentielle Ausführung: bei kausaler Abhängigkeit oder wenn nur ein Prozessor zur Verfügung steht bringe das Wasser zum Kochen, dann gib Paket Nudeln hinein schneide das Fleisch, dann das Gemüse Parallele Ausführung: falls es keine Kausalitätsbeziehungen gibt und mehrere Prozessoren Prozessoren zur Verfügung stehen ich schneide das Fleisch, du das Gemüse
24 Bdi Bedingte Ausführung: fh nur wenn Bedingung Bdi erfüllt fll ist wenn Soße zu dünn, dann füge Mehl hinzu Schleife: Wiederholung, bis Bedingung erfüllt ist Rühre so lange, bis Soße braun Unterprogramm: die Tätigkeit wird anderswo beschrieben und ist mehrfach benutzbar Bereite Soße (siehe S. 42) Rekursion: Anwendung desselben Algorithmus auf (kleineres) Teilproblem Dies ist der Hund, der die Katze, die die Maus, die den Käse, der in dem Haus, das Maja gebaut hat, lag, fraß, tötete, ärgerte.
Sierpinski-Dreieck
Darstellung von Algorithmen 7. 26 natürlichsprachlich (detailliert und explizit) graphisch: Flußdiagramme, Struktogramme,... Pseudo-Code Formale Sprache Programmiersprache Church sche These: Alle vernünftigen Darstellungen eines Algorithmus sind äquivalent
Darstellung: natürlichsprachlich 71 7.1. 27 Einen Apfel Afl waschen, in Viertel tl schneiden, Kerngehäuse entfernen und in dünne Scheiben schneiden. Mit 1 EL Zitronensaft beträufeln. 250 g Geflügelleber waschen, trocken tupfen und in mundgerechte Stücke schneiden. In einer Pfanne 10 g Butter heiß werden lassen. Leber darin kurz braten und mit 1 TL MAGGI Würzmischung würzen. Leber auf Küchenpapier legen, damit das Fett abtropft, dann zum Apfel geben. Für die Marinade 1 Beutel MAGGI Salat mit Pfiff Joghurt-Kräuter mit einem Becher (150 g) Joghurt, 3,5% Fett und 1 EL Sonnenblumenöl verrühren. Salatzutaten damit mischen und kurz durchziehen lassen. 3 Salatblätter waschen, abtropfen lassen, auf drei Teller verteilen und den Apfelsalat darauf anrichten. für Kochrezepte noch ganz angebracht Beschreibung sehr umfangreich, enthält unwichtige Details unstrukturiert, unübersichtlich
Darstellung: Programmablaufplan 72 7.2. 28 auch: Flußdiagramm graphische Darstellung eines Algorithmus normiert nach DIN 66001 nutzt t Sinnbilder für elementare Operationen und Ablaufstrukturen Linien bzw. Pfeile verbinden
29 Anfang / Ende: Start Ende Eingabe / Ausgabe von Daten: Eingabe: Zeit t Ausgabe: Ergebnis (elementare) Operation Erwärme Wasser t := t + 1
30 Verzweigung / Bedingung ja nein ja Wasser warm? t > 128 Unterablauf (in einem anderen PAP spezifiziert) nein Nudeln kochen
31 Ablauf wird durch Pfeile gekennzeichnet, die die Symbole verbinden zusätzlich: Übergangsstelle (wenn Platz nicht reicht) Kommentare (an andere Symbole anfügen und Erläuterungen hinter Klammer schreiben) Das hier ist ein nicht iht sehr sinnvoller Kommentar!
Start 1 Herdplatte einschalten Eier in Topf geben Topf mit Wasser füllen Topf auf Herdplatte stellen 5 Min warten Herdplatte ausschalten Wichtig, nicht vergessen! Eier abschrecken 32 nein Kocht Wasser? ja 1 Ende
Beispiel Bei Technikproblemen anzuwendendes Flußdiagramm
Zusammenfassung 8. 52 Algorithmus als exakte Beschreibung eines Verarbeitungsvorganges kann analysiert, auf Korrektheit und andere Eigenschaften getestet werden wichtiger Schritt auf dem Weg vom Problem zu einem Programm verschiedene Notationen natürlichsprachlich Pseudocode Struktogramm Programmablaufplan...
53 Quellen: Gumm/Sommer: Einführung in die Informatik Stucky: Vorlesung Informatik A, Uni Karlsruhe Fellner: Vorlesung Alg & DS 1, TU Braunschweig