GRUNDKURS INFORMATIK
Transcription
GRUNDKURS INFORMATIK
GRUNDKURS INFORMATIK 3 – DATENVERARBEITUNG - ALGORITHMEN Marcel Götze Überblick 1. 2. Bisher: Daten, Information, Wissen Heute: Datenverarbeitung g 1. 2 2. Was ist ein Algorithmus 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 2 2. Algorithmus (erste Näherung) 5 Das Wort D W Algorithmus Al i h ist eine Abwandlung Ab dl oder d Verballhornung des Namens von Muhammad ibn Musa al-Chwarizmi 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 Al b im Algebra i W Westen verbreitet b i wurde. d Di Die llateinische i i h 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 d und d exakte k Beschreibung h b eines Verarbeitungsvorganges. Ein Prozessor führt f h einen Prozeß ß (Arbeitsvorgang) (A b ) auff Basis einer eindeutig interpretierbaren Beschreibung (des Algorithmus) aus. aus Typische algorithmisierbare Prozesse: Kochrezepte K h Bedienungsanleitungen Rechnerprogramm (Prozessor: (Prozessor Computer!) 2 2. Bestandteile eines Algorithmus Objekte 7 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. ein Zustandsänderungen an Objekten 8 Beispiel: Auswechseln eines Rades am Auto 1. 2. 3. 4 4. 5. 6. 7. Löse die Radmuttern. Hebe den Wagen an. Schraube die Radmuttern ab. Tausche das Rad gegen ein anderes Rad aus. Schraube die Radmuttern an. S Setze den d Wagen W ab. b Ziehe die Radmuttern fest. 21 2.1. Beobachtungen 9 Anwender A d des d Algorithmus Al i h muß ß jeden j d einzelnen i l 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 B d t Ausführungsorgan / Prozessor muß über gewisse elementare Fähigkeiten verfügen Elementaroperationen 3 3. Algorithmus – Definition 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 g 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. *g genaue,, eindeutige, g , endliche und ausführbare Beschreibung g 11 Ein Al Ei Algorithmus ih iist unabhängig bhä i von d der U Umsetzung iim Rechner ! Beispiele Eine Algorithmus zum Durchlaufen des Studiums Ein Algorithmus g zum Erstellen eines Apfelkuchens p heißt Backrezept Bedienungsanleitungen Gebrauchsanleitungen G b h l i 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 g der Zahl e = 2.7182... 4 4. Beispiel für einen Algorithmus 13 Suche des Namens „Götze“ im Telefonbuch (Variante 1) 1. 2. Schlage die erste Seite des Buches auf Lese beginnend g mit dem ersten Namen einen Namen nach dem anderen, bis a) b) „Götze“ gelesen wird Ende (gefunden) das Ende des Buches erreicht ist „Götze“ steht nicht im Telefonbuch 14 SSuche h des d Namens N „Götze“ Gö “ im i TTelefonbuch l f b h (Variante 2) 1 1. 2. 3. Telefonbuch in der Mitte des Buches aufschlagen aufschlagen. Ein Name x wird gelesen. Wenn x alphabetisch vor „Götze“ liegt, dann wird der hi t x liegende hinter li d Teil T il des d Telefonbuches T l f b h iin d der Mitt Mitte aufgeschlagen. Wenn x aber hinter diesem Namen liegt, dann wird der vordere Teil des Telefonbuchs in der Mitte aufgeschlagen. f hl Schritt 2 wird solange wiederholt, bis a) b) „Götze gelesen wird Ende (gefunden) „Götze“ zwei aufgeschlagene Namen hintereinander liegen „Götze“ steht nicht im Telefonbuch 5 5. Eigenschaften von Algorithmen Ab k i Abstraktion 15 Finitheit / Endlichkeit Die Beschreibung wie auch die Anzahl an Zwischenergebnissen ist b h ä k bzw. beschränkt b endlich dli h lang. l Terminierung Ein Algorithmus löst im Allgemeinen eine Klasse von Problemen und nicht ganz spezielles p Problem. nur eine einzelnes g Algorithmen, die für jede(!) Eingabe nach endlich vielen Schritten ein Algorithmen Endekriterium erreichen, heißen terminierend. Determiniertheit (globale Eindeutigkeit) Liefern bei gleichen Daten bei wiederholter Ausführung stets gleiche Ergebnisse. 16 D t Determinismus i i (l(lokale k l Ei Eindeutigkeit) d ti k it) Effizienz üblicherweise wird hierunter der Ressourcenverbrauch (CPU, RAM, Storage) verstanden Wartbarkeit, Änderbarkeit Eindeutige Festlegung des nächsten Schrittes im Ablauf schließt Determiniertheit ein Wie gut ist ein Algorithmus an geänderte Problemstellungen oder auf andere d Anwendungsumgebungen A d b anzupassen?? Zuverlässigkeit, Robustheit Wie g gutmütig g reagiert g ein Algorithmus g auf fehlerhafte Eingaben g (s.a. ( Anwendungstests, ...)? bei numerischen Algorithmen: Welche Auswirkungen haben Rundungsfehler ? 51 5.1. Eigenschaften: Abstraktion 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, Buchstaben, Namen ... miteinander vergleichbare Dinge anwenden 52 5.2. Eigenschaften: Terminierung 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 B i i l (Ul Beispiel (Ulam-Algorithmus): Al i h ) 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 ... 53 5.3. Eigenschaften: Determinismus 20 deterministischer d t i i ti h Abl Ablauf: f eindeutige i d ti V Vorgabe b d der SSchrittfolge h ittf l d.h. zu jedem Zeitpunkt der Ausführung gibt es maximal eine Möglichkeit g der Fortsetzung g 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 b li bi beliebigen A Auswahl hl d des Namens N X. X 54 5.4. Eigenschaften: Determiniertheit 21 Liefern Li f b beii gleichen l i h Daten D t b beii wiederholter i d h lt A Ausführung füh stets t t gleiche Ergebnisse Beispiel p für einen nicht determinierter Algorithmus g 1. 2. 3. Wählen Sie eine beliebige Zahl zwischen 1 und 100 Multiplizieren Sie die Zahl mit der Anzahl der seit dem 1.1.2000 vergangenen Minuten Schreiben Sie das Ergebnis auf Nicht determiniert wegen Beliebigkeit der Auswahl zum Ausführungszeitpunkt und der Abhängigkeit vom Ausführungszeitpunkt JJeder d deterministische d t i i ti h Algorithmus Al ith ist i t auchh d determiniert. t i i t Ni Nicht ht jeder determinierte Algorithmus ist jedoch deterministisch. 6 6. Aufbau von Algorithmen Größen 22 beschreiben gegebenen Zustand von Objekten mit Variablen (Bezeichnern) Elementare Operationen p werden auf betrachtete Größen angewendet; unterschiedliche Abstraktionsebenen denkbar (benutzernah ( maschinennah) Kontrollstrukturen/Ablaufbedingungen beschreiben Reihenfolge und Bedingungen für elementare Operationen p 23 Algorithmen Al ih werden d kkonstruiert, i iindem d kl kleinere i BBausteine i zu größeren zusammengesetzt werden. Bausteine und Kompositionsprinzipien: Elementare Operation: nicht weiter erläutert Sequentielle Ausführung: bei kausaler Abhängigkeit oder wenn nur ein „Prozessor“ zur Verfügung steht schneide Fleisch in kleine Würfel bringe g das Wasser zum Kochen,, dann gib g 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 B di Bedingte Ausführung: A f h nur wenn Bedingung B di erfüllt f ll ist i Schleife: Wiederholung, Wiederholung bis Bedingung erfüllt ist Rühre so lange, bis Soße braun Unterprogramm: p g die Tätigkeit g wird anderswo beschrieben und ist mehrfach benutzbar wenn Soße zu dünn, dann füge Mehl hinzu Bereite Soße (siehe S. 42) RRekursion: k i Anwendung A d desselben d lb Algorithmus Al i h auff (kl (kleineres) i ) Teilproblem Dies ist der Hund, Hund der die Katze, Katze die die Maus, Maus die den Käse, der in dem Haus, das Maja gebaut hat, lag, fraß, tötete, ärgerte. Sierpinski Dreieck Sierpinski-Dreieck 7 7. Darstellung von Algorithmen 26 natürlichsprachlich (detailliert ( und explizit)) graphisch: Flußdiagramme, Struktogramme, ... Pseudo-Code Formale Sprache p Programmiersprache Church‘sche Church sche These: Alle „vernünftigen“ Darstellungen eines Algorithmus sind äquivalent 71 7.1. Darstellung: natürlichsprachlich 27 Einen Apfel Ei A f l waschen, h in i Vi Viertel t l schneiden, h id Kerngehäuse K hä entfernen tf und d in i 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 B h (150 g)) Joghurt, Becher J h t 3,5% 3 5% Fett F tt und d 1 EL Sonnenblumenöl S bl öl verrühren. üh 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 72 7.2. Darstellung: Programmablaufplan 28 auch: Flußdiagramm graphische g p Darstellung g eines Algorithmus g normiert nach DIN 66001 nutzt t t Sinnbilder Si bild fü für elementare l t Operationen O ti und d Ablaufstrukturen Linien bzw. Pfeile verbinden 29 Start Anfang / Ende: Eingabe g / Ausgabe g von Daten: Eingabe: Zeit t Ausgabe: Ergebnis (elementare) Operation E ä Erwärme Wasser W Ende t := t + 1 30 Verzweigung / Bedingung ja Wasser warm? nein t > 128 ja nein Unterablauf (in einem anderen PAP spezifiziert) 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 i ht sehr h sinnvoller Kommentar! 1 Start Eier in Ei i Topf T f geben Herdplatte einschalten 5 Min warten Topf mit Wasser füllen Herdplatte ausschalten Topf auf Herdplatte stellen Eier e abschrecken nein Kocht Wasser? ja 1 Ende 32 Wichtig, nicht vergessen! Beispiel Bei Technikproblemen anzuwendendes Flußdiagramm 8 8. Zusammenfassung 52 Algorithmus Al ih als l exakte k BBeschreibung h ib eines i Verarbeitungsvorganges kann analysiert, analysiert auf Korrektheit und andere Eigenschaften getestet werden wichtiger g Schritt auf dem Weg g 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 g Alg g & DS 1,, TU Braunschweig g