Kapitel 1. Einführung in Algorithmen. 1.1 Einführende Beispiele

Ähnliche Dokumente
1.1 Einführende Beispiele. Beispiel 1: Bauanleitung. Beispiel 2: Rezept. Algorithmen und Programmierung. 1. Kapitel Einführung in Algorithmen

1.1 Einführende Beispiele. Beispiel 2: Rezept. Beispiel 1: Bauanleitung. Algorithmen und Programmierung. 1. Kapitel Einführung in Algorithmen

Kapitel 1. Einführung in Algorithmen. 1.1 Einführende Beispiele

1 Einführung: Algorithmen. Algorithmen und Datenstrukturen WS 2012/13. Pro f. Dr. Sán do r Fe k e te

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Algorithmen und Programmierung

Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung

Einführung in die Objektorientierte Programmierung Vorlesung 2: Mikroskopisches und Makroskopisches Computational Thinking.

1 Vom Problem zum Program

1 Vom Problem zum Programm

Informatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

Informatik I. Informatik I Was haben wir gelernt? 28.2 Algorithmusbegriff Was geht nicht? 28.1 Was haben wir gelernt?

Informatik I: Einführung in die Programmierung

Wintersemester 2007/2008 Helmut Seidl Institut für Informatik TU München

Informatik. Teil 1 Wintersemester 2011/2012. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin

Seminararbeit zum Thema Was ist ein Algorithmus?

1 Algorithmische Grundlagen

2. Algorithmenbegriff

1 Karol stellt sich vor

Einführung in die Informatik

Kapitel 2. Kapitel 2 Natürliche und ganze Zahlen

Verhalten. Def. und Nutzen von Verhalten. Pseudocode Schreibtischtest. Algorithmen

Clevere Algorithmen programmieren

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

2 Einführung. Übersicht. Begriffe: Algorithmus, Datenstruktur, Effizienz Beispiele. H. Täubig (TUM) GAD SS 14 11

Primitiv? Primzahlen und Primfaktoren schätzen lernen. Dr. Heinrich Schneider, Wien. M 1 Grundlegende Zahlenmengen wiederhole dein Wissen!

Grundlagen: Algorithmen und Datenstrukturen

Grundlagen der Algorithmen und Datenstrukturen

Algorithmen - unplugged

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:

Algorithmen und Programmierung

Grundlagen der Informatik I Einführung

Algorithmen und Datenstrukturen

Grundbegriffe der Informatik

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Learning Object-Oriented Programming. Algorithmen. Algorithmusbegriff. Klärung der Herkunft des Begriffs Formale Definition von Algorithmus

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

Algorithmus. Was ist ein Algorithmus? Ibn Musa Al-Chwarismi persischer Mathematikers 9. Jahrhundert Buch: Regeln der Wiedereinsetzung und Reduktion.

Mathematik I für Studierende der Informatik und Wirtschaftsinformatik (Diskrete Mathematik) im Wintersemester 2015/16

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Grundbegriffe der Informatik

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen

5. Probeklausur - Lösung

Ideen und Konzepte der Informatik

Einführung in die Informatik Algorithms

Grundbegriffe der Informatik

5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Lineare Gleichungssysteme

Einführung. 1 Vektoren

Algorithmen und Datenstrukturen (für ET/IT)

Abschnitt 11: Korrektheit von imperativen Programmen

Zeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1

Der Euklidische Algorithmus Dieter Wolke

Beispiellösungen zu Blatt 7

Angewandte Mathematik am Rechner 1

5 D E R B E G R I F F D E S A L G O R I T H M U S

Lineare Funktionen. Die generelle Form der Funktion lautet dabei:

Lineare Funktionen. y = m x + n

Algorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1

1 Die Strahlensätze 2. 2 Winkel 3. 3 Rechtwinklige Dreiecke 3. 4 Kreise 6. 5 Trigonometrische Funktionen 8. 6 Kurven in Parameterdarstellung 10

Einführung in die Informatik Turing Machines

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Zahlen und elementares Rechnen

Einführung in die Informatik I (autip)

Einführung in die Informatik Turing Machines

Wintersemester 2006/2007 Helmut Seidl Institut für Informatik TU München

Man sieht hier einzelne Fragmente, die man häufig bei der Programmierung mit Schleifen antrifft. Es gibt eine lokale Variable, die vor dem

Theoretische Informatik II

2.2 Kollineare und koplanare Vektoren

Grundlagen der Informatik I (Studiengang Medieninformatik)

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45

1.3 Aussagen. Beispiel: Das Bruttosozialprodukt der Bundesrepublik Deutschland ist höher als das der USA ist eine offenbar falsche Aussage.

Lernzirkel: Grenzprozesse

schreiben, wobei p und q ganze Zahlen sind.

Zahlentheorie I - Tipps & Lösungen. Aktualisiert: 15. Oktober 2016 vers Teilbarkeit

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Kapitel 1: Informationsverarbeitung durch Programme

Zahlen. Vorlesung Mathematische Strukturen. Sommersemester Zahlen. Zahlen

P, NP und NP -Vollständigkeit

Informatik Algorithmen und Programme

Einstieg in die Informatik mit Java

FD Informatik Mauch SSDL (WHRS) Reutlingen. Algorithmen

Orientierungsmodul Oberstufe OS 1. Zahlen auf dem Zahlenstrahl darstellen und interpretieren. natürliche Zahlen bis 2 Millionen lesen und schreiben

Am Dienstag, den 15. Dezember, ist Eulenfest. 1/60

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

Einstieg in die Informatik mit Java

Download. Basics Mathe Gleichungen mit Klammern und Binomen. Einfach und einprägsam mathematische Grundfertigkeiten wiederholen.

Amortisierte Analysen

WS 2009/10. Diskrete Strukturen

Vektoren - Die Basis

3. Diskrete Mathematik

Kapitel 2. Mathematische Grundlagen. Skript zur Vorlesung Einführung in die Programmierung

KAPITEL 13. Polynome. 1. Primfaktorzerlegung in den ganzen Zahlen. ,, p r

Wie man eine Sprache versteht

Transkript:

Kapitel 1 Einführung in Algorithmen Precept may point to us the way, but it is silent continuous example, conveyed to us by habits, and living with us in fact, that carries us along. (Samuel Smiles) 1.1 Einführende Beispiele Um ein intuitives Verständnis zu erreichen, betrachten wir zu Beginn eine Anzahl von Beispielen, die (mehr oder weniger) dem Alltag entnommen sind. Beispiel 1: Bauanleitung Quelle: IKEA 15

M. Werner: Algorithmen & Programmierung Beispiel 2: Rezept Caipirinha Zutaten: 3 cl Zuckerrohrschnaps (Cachaca) Eine Limette Zwei Teelöffel brauner Zucker gecrushtes Eis Zubereitung: Limette in Achtelstücke schneiden, in ein Longdrinkglas geben und den braunen Zucker darüber streuen. Limettenstücke mit einem Holzmörser gut zerdrücken und mit dem Zucker vermischen Anschließend den Zuckerrohrschnaps drübergießen und das Glas mit gecrushtem Eis auffüllen Gut mischen und mit einem oder zwei Trinkhalmen servieren. 16

1. Einführung in Algorithmen 1.1 Beispiele Beispiel 3: Quadratische Gleichung Gegeben: Gleichung a x 2 + b x + c = 0, wobei a 0 Gesucht: Alle x, die die gegebene Gleichung erfüllen Algorithmus x 1,2 = b ± b 2 4 a c 2 a Beispiel 4: Weg durch das Labyrinth Regel Gehe immer so, dass Du mit der rechten Hand die Wand berührst! Beispiel 5: Schriftliche Addition Problem: Addiere zwei mehrstellige Zahlen Algorithmus: 1. Schreibe die Zahlen rechtsbündig so hin, dass jeweils zwei Ziffern in Spalten untereinander stehen 2. Beginne mit der Spalte, die am weitesten rechts ist 3. Addiere die Zahlen in dieser Spalte 4. Schreibe die Einerstelle der Summe unter die Spalte 5. Schreibe die Zehnerstelle der Summe über die Spalte links der aktuellen 6. Wiederhole ab Schritt (3) mit nächster Spalte links der aktuellen, bis keine Spalte mehr übrig ist 7. Die unterste Zeile ist das Ergebnis 17

M. Werner: Algorithmen & Programmierung 782 + 341 =? 1 1 0 7 8 2 3 4 1 1 1 2 3 Beispiel 6: Bruch kürzen Problem: Kürze einen Bruch Algorithmus: 1. Finde den größten gemeinsamen Teiler (ggt) von Zähler (Z) und Nenner (N) Berechnung des ggt zweier Zahlen x und y Wenn x = y gilt, so ist ggt(x, y) x Wenn x y gilt, so ist ggt(x, y) ggt(min(x, y), abs(x y)) 2. Teile Z und N durch ggt(z, N) Beispiel: Kürze 15 25 3 5 ggt(15, 25) = ggt(min(15, 25), abs(15 25)) = ggt(15, abs( 10)) = ggt(15, 10) = ggt(min(15, 10), abs(15 10)) = ggt(10, 5) = ggt(min(10, 5), abs(10 5)) = ggt(5, 5) = 5 Der Algorithmus zum Bestimmen des größten gemeinsamen Teilers stammt von Euklid (Euklid von Alexandria, ca. 360 v. Chr. bis ca. 280 v. Chr.) und gilt als der älteste (nichttriviale) Algorithmus. Er war von Euklid ursprünglich als Aussage über geometrischen Stecken gedacht und lautete etwa: Wenn CD aber AB nicht misst, und man nimmt bei AB, CD abwechselnd immer das kleinere vom größeren weg, dann muss (schließlich) eine Zahl übrig bleiben, die die vorangehende misst. 18

1. Einführung in Algorithmen 1.1 Beispiele Beispiel 7: Magisches Quadrat Hexeneinmaleins Du mußt versteh n! Aus Eins mach Zehn, Und Zwei laß geh n, Und Drei mach gleich, So bist Du reich. Verlier die Vier! Aus Fünf und Sechs, So sagt die Hex, Mach Sieben und Acht, So ist s vollbracht 10 2 3 0 7 8 5 6 4 Goethe, Faust I Beispiel 8: Geometrische Streckenhalbierung Problem: Halbieren Sie eine gegebene Strecke nur mit Hilfe eines Zirkels und eines (unbemaßten) Lineals Algorithmus: 1. Stelle am Zirkel eine Entfernung ein, die deutlich größer als die halbe Strecke ist 2. Zeichne mit dieser Einstellung um das eine Ende der Strecke einen Kreis 3. Zeichne mit der gleichen Einstellung um das andere Ende der Strecke einen Kreis 4. Verbinde mit dem Lineal die Schnittpunkte der Kreise mit einer Geraden 5. Wo die Gerade die Strecke schneidet, befindet sich die Mitte der Stecke A AB 2 B 19

M. Werner: Algorithmen & Programmierung Beispiel 9: Tanzschritte Langsamer Walzer, Grundschritt Beispiel 10: Musik Beispiel 11: Ableitung einer Funktion Problem: Finde die Ableitung nach x einer Funktion f(x) Algorithmus: 1. Ist f(x) eine Summe so ist die Ableitungen die Summe der Ableitungen der Summanden 2. Ist f(x) ein Produkt so ist die Ableitung die Summe des Produkts des ersten Faktors mit der Ableitung des zweiten Faktors und des Produkts des zweiten Faktors mit der Ableitung des ersten Faktors 3. Ist f(x) eine Funktion einer anderen Funktion von x, so ist die Ableitung das Produkt Ableitung der äußeren Funktion nach der inneren Funktion und der Ableitung der inneren Funktion 4. Ist f(x) nicht von x abhängig, so ist die Ableitung 0 20

1. Einführung in Algorithmen 1.1 Beispiele 5. Ist f(x) = x k, so ist die Ableitung k x k 1 6. Ist f(x) = a x, so ist die Ableitung a x ln a 7. Ist f(x) = sin(x), so ist die Ableitung cos(x) 8. Ist f(x) = log a (x), so ist die Ableitung 1 x log a e Man beachte: Wie bei Beispiel 6 wird der Algorithmus von sich selbst aufgerufen (Regeln 1, 2 und 3) Beispiel 12: Sortieren Problem: Sortiere folgende Spielkarten nach ihrem Wert beim Skat 1 : B 7 B 8 7 D 9 Algorithmus: 1. Man beginnt mit den beiden Karten, die am weitesten links liegen 2. Wenn die größere der beiden Karten rechts liegt, vertauscht man beide Karten 3. Gehe eine Karte nach rechts und wiederhole Schritt 2 4. Wenn man bei den beiden Karten ganz rechts angelangt ist, beginnt man wieder bei Schritt 1, falls mindestens einmal getauscht wurde Runde 1: B 7 B 8 D 9 Runde 1: B 7 B 8 D 9 Runde 1: B 7 B 8 D 9 Runde 1: B 7 B 8 D 9 Runde 1: B 7 B 8 D 9 1 Etwas vereinfacht: Kartenwert über Farbwert, Kartenwertreihenfolge: B,A,10,K,D,9,8,7; Farbreihenfolge: Kreuz, Pik, Herz, Karo 21

M. Werner: Algorithmen & Programmierung Runde 1: B 7 B 8 D 9 Runde 1: B 7 B 8 D 9 Runde 1: B B 7 8 D 9 Runde 1: B B 7 8 D 9 Runde 1: B B 7 8 D 9 Runde 1: B B 7 8 D 9 Runde 1: B B 8 7 D 9 Runde 1: B B 8 7 D 9 Runde 1: B B 8 7 D 9 Runde 1: B B 8 7 D 9 Runde 1: B B 8 D 7 9 Runde 1: B B 8 D 7 9 Runde 1: B B 8 D 9 7 Runde 2: B B 8 D 9 7 Runde 2: B B 8 D 9 7 Runde 2: B B 8 D 9 7 Runde 2: B B 8 D 9 7 22

1. Einführung in Algorithmen 1.1 Beispiele Runde 2: B B 8 D 9 7 Runde 2: B B 8 D 9 7 Runde 2: B B 8 D 9 7 Runde 2: B B 8 D 9 7 Runde 2: B B 8 D 9 7 Runde 2: B B 8 D 9 7 Runde 2: B B 8 D 9 7 Runde 2: B B 8 D 9 7 Runde 2: B B 8 D 9 7 Runde 3: B B 8 D 9 7 Runde 3: B B 8 D 9 7 Runde 3: B B 8 D 9 7 Runde 3: B B 8 D 9 7 Runde 3: B B 8 D 9 7 Runde 3: B B 8 D 9 7 Runde 3: B B 8 D 9 7 Runde 3: B B D 8 9 7 23

M. Werner: Algorithmen & Programmierung Runde 3: B B D 8 9 7 Runde 3: B B D 9 8 7 Runde 3: B B D 9 8 7 Runde 3: B B D 9 8 7 Runde 4: B B D 9 8 7 Runde 4: B B D 9 8 7 Runde 4: B B D 9 8 7 Runde 4: B B D 9 8 7 Runde 4: B B D 9 8 7 Runde 4: B B D 9 8 7 Runde 4: B B D 9 8 7 Runde 4: B B D 9 8 7 Runde 4: B B D 9 8 7 Runde 4: B B D 9 8 7 Runde 5: B B D 9 8 7 Runde 5: B B D 9 8 7 Runde 5: B B D 9 8 7 24

1. Einführung in Algorithmen 1.2 Algorithmenbegriff Runde 5: B B D 9 8 7 Runde 5: B B D 9 8 7 Runde 5: B B D 9 8 7 Runde 5: B B D 9 8 7 Runde 5: B B D 9 8 7 Runde 5: B B D 9 8 7 Runde 5: B B D 9 8 7 1.2 Begriff und Eigenschaften Abu Jafar Muhammad ibn Mūsā al-chwārizmī, lateinisiert: Algoritmi Universalgelehrter 780 ca. 842 Stammte aus Chwarizm (Gebiet in Zentralasien südl. des Aral) Wirkte in Persien (heute Iran) Führte die (indische) Null ins arabische Zahlensystem ein Rechenregeln mit diesem modernen Zahlensystem legte er in einem Buch vor, dessen lateinische Version den Titel Algoritmi de numero indorum (Das Werk des Al-gorismus über indische Zahlen) trägt Daher stammt der Begriff Algorithmus für Rechenregeln, später allgemeiner gebraucht 25

M. Werner: Algorithmen & Programmierung Bildquelle: Alain Juhel Allerdings existieren schon vor al-chwarizmi Rechenregeln (Algorithmen), vermutlich seit etwa 1800 v. Chr. Seite aus dem lateinischen Text zu indischen Zahlen, die mit DIXIT algorizmi (Algorithmus hat gesagt) beginnt. Bildquelle: Cambridge, University Library, Ii. 6.5. Definition Es gibt verschiedene Formalisierungen des Algorithmen-Begriffs Benutzen zunächst recht allgemeinen Begriff2 : 2 Es 26 gibt derzeit keine allgemein akzeptierte formale Definition von Algorithmus.

1. Einführung in Algorithmen 1.2 Algorithmenbegriff Definition 1.1: Algorithmus Ein Algorithmus ist Handlungsvorschrift, die aus einer endlichen Anzahl von wohldefinierten und effektiven Einzelschritten besteht, und die dazu dient, ein bestimmtes Ziel zu erreichen. Endliche Anzahl: Die Beschreibung der Algorithmus besitzt endliche Länge Finitheit Wohldefinierter Schritt: Alle Schritte müssen eindeutig sein Definiertheit Effektiver Schritt: Alle Elemente müssen direkt ausführbar sein Effektivität, Ausführbarkeit Quelle: xkcd - A webcomic of romance, sarcasm, math, and language http://xkcd.com/1667/ Finitheit Algorithmen können auf verschiedene Weise beschrieben werden siehe Beispiele weiter vorn Aber: Es muss stets gewährleistet sein, dass zur Darstellung nur eine Maximalmenge Datenträger verbraucht wird Text Platz Größe Zeichnung etc. Definiertheit Betrachten folgenden Algorithmus zur Übernahme von Google: 27

M. Werner: Algorithmen & Programmierung 1. Gehe nach New York 2. Mache eine Million Dollar 3. Spekuliere an der Börse bis Du 500 Milliarden Dollar zusammen hast 4. Kaufe alle Aktien von Alphabet Inc. 3 auf Die Schritte 2 und 3 sind nicht genau definiert (und wahrscheinlich auch nicht definierbar) Ausführbarkeit Jeder Teil eines Algorithmus sollte direkt oder mit Hilfe eines anderen Algorithmus ausführbar sein Test: Prinzipiell muss alles mit Stift und Papier nachvollziehbar sein Betrachten folgenden Algorithmus zu Primzahlzwillingen: 1. Lese zwei Zahlen x 1 und x 2 ein 2. Wenn x 1 keine Primzahl ist oder wenn x 2 keine Primzahl ist, dann gebe Keine zwei Primzahlen aus und gehe zu 5 3. Wenn abs(x 1 x 2 ) 2, dann gebe Keine Primzahlzwillinge aus und gehe zu 5 4. Wenn x 1 und x 2 die größten Primzahlzwillinge sind, gebe größte Primzahlzwillinge aus, sonst gebe Primzahlzwillinge aus 5. Beende Algorithmus Alle Schritte sind exakt definiert Aber: Bis heute (Herbst 2016) weiß niemand, ob es ein größtes Primzahlzwillingspaar gibt oder wie man dieses ggf. bestimmt Weitere Eigenschaften Mitunter werden noch mehr Eigenschaften verlangt Abstrahierung: Der Algorithmus soll nicht nur ein Problem lösen, sondern eine Klasse von Problemen 3 Alphabet Inc. ist die Muttergesellschaft aller Google-Unternehmen 28

1. Einführung in Algorithmen 1.2 Algorithmenbegriff Terminierung: Nach einer endlichen Anzahl von Schritten ist der Algorithmus beendet Determinismus: Zu jedem Zeitpunkt gibt es höchstens eine Möglichkeit der Fortsetzung Determiniertheit: Unter den gleichen Anfangsbedingungen gelten am Ende stets die gleichen Endbedingungen Dynamische Finitheit, Ressourcenbeschränkung: Ein Algorithmus darf stets nur eine endliche Menge von Ressourcen benutzen Merke Es gibt Algorithmen, die eine oder mehrere dieser Eigenschaften nicht haben Für uns sind (hier) aber nur die Algorithmen interessant, die abstrahierend, terminierend, determiniert, deterministisch und ressourcenbeschränkt sind (... und natürlich aus einer endlichen Menge von wohldefinierten und effektiven Schritten bestehen) Außerdem: Uns interessieren Algorithmen, die (vor allem) auf einem Computer ausgeführt werden Betrachten diese Eigenschaften im Folgenden genauer Computeralgorithmen Computer: der, von lat. ( computare = zusammenrechnen) eng. ( to compute = rechnen) Computer können Daten manipulieren, aber nicht ohne weiteres Objekte der realen Welt Objekte der realen Welt benötigen eine Daten-Repräsentation ( Abbildung) Abbildung erfolgt über Computerperipherie (Ein-/Ausgabegeräte) Eigentlicher Algorithmus betrachtet nur Daten Struktur der Daten kann sehr komplex sein siehe Vorlesung Algorithmen und Datenstrukturen 29

M. Werner: Algorithmen & Programmierung Abstrahierung Um den gleichen Algorithmus für eine Vielzahl von Fällen nutzen zu können, wird der Algorithmus parameterisiert Parameterisierung erfolgt über die Eingabedaten Ergebnis des Algorithmus wird in den Ausgabedaten dargestellt Eingabe Algorithmus Ausgabe Dies entspricht dem Modell einer mathematischen Funktion: A = f(e) E entspricht der Eingabe, A der Ausgabe, und f dem Algorithmus Durch die Äquivalenz mit einer Funktion wird ein Computeralgorithmus zu einem Berechnungsproblem Lässt sich also alles berechnen (also programmieren)? Nein! Z.B. gibt es keinen Algorithmus, der für zwei beliebige andere Algorithmen berechnen kann, ob sie dieselbe Funktion berechnen Es gibt noch nicht mal einen Algorithmus, der stets berechnen kann, ob ein beliebig gegebener anderer Algorithmus zum Ende kommt (terminiert) oder nicht Solche Probleme der Grenzen der Machbarkeit sind Gegenstand der theoretischen Informatik Terminierung Betrachten folgenden Algorithmus: 1. Gehe zu Schritt 2 2. Gehe zu Schritt 1 3. Beende Algorithmus Obwohl die Beschreibung des Algorithmus endlich ist, ist die Ausführung nie beendet Schritt 3 wird nie erreicht 30

1. Einführung in Algorithmen 1.2 Algorithmenbegriff Falls ein Algorithmus Ausgaben produziert, weiß man bei einem nichtterminierenden Algorithmus nicht, wann die Ausgabe vollständig/gültig ist Es gibt nichtterminierende Algorithmen, die aber hier nicht betrachtet werden Quelle: xkcd - A webcomic of romance, sarcasm, math, and language http://xkcd.com/1195/ Effizienz In der Praxis sollen Algorithmen nicht nur nicht unendlich lange laufen, sondern sogar nicht sehr lange Die Dauer der Ausführung wird als Gütekriterium eines Algorithmus angesehen Die Dauer hängt typischerweise von der Größe des Problems ab Beispiel: Der Sortieralgorithmus aus Beispiel 12 dauert für 20 Spielkarten in der Regel länger als für 10 Karten Um den Algorithmus unabhängig von der ausführenden Hardware beurteilen zu können, wird meist ein normiertes Maß benutzt: (Zeit-)Komplexität Später mehr darüber Determinismus und Determiniertheit Betrachten folgenden Algorithmus: 1. Lasse Dir eine Zahl geben 2. Werfe eine Würfel 3. Wenn der Würfel mehr als 3 anzeigt, multipliziere die Zahl mit 2 und gehe zu Schritt 2 31

M. Werner: Algorithmen & Programmierung 4. Gebe die Zahl aus Dieser Algorithmus ist nicht deterministisch: Es ist nicht (a priori) klar, welcher Schritt nach Schritt 3 ausgeführt wird Er ist auch nicht determiniert: Auch bei gleichem Eingabewert können unterschiedliche Ausgangswerte vorkommen Nichtdeterministische Algorithmen werden auch randomisierte Algorithmen genannt Ein deterministischer Algorithmus kann mit einem Zufallswert gefüttert werden Merke Ein terminierender und deterministischer Algorithmus ist stets auch determiniert Aber: Das Ergebnis eines randomisierten Algorithmus kann auch determiniert sein Randomisierte Algorithmen bilden eine wichtige Klasse von Algorithmen Mitunter sind sie schneller oder effizienter als deterministische Algorithmen mehr bei Prof. Lefmann Ressourcenbeschränkung Theoretisch kann ein Algorithmus fast unendlich viel Ressourcen nutzen, in der Praxis steht immer nur eine beschränkte Anzahl zur Verfügung Betrachten folgenden Fall: Sie erhalten einen Kettenbrief mit 8 Namen und folgenden Instruktionen: Schicke an die Person, die oben auf der Liste steht, einen Eurocent. Nun streiche den obersten Namen und füge Deinen unten an die Liste an. Dann fertige 12 Kopien dieses Briefes und schicke ihn an 12 Menschen, die noch nicht an diesem Spiel teilgenommen haben. Nach einiger Zeit wirst Du Eurocents im Wert von fast 5 Millionen Euro erhalten. Selbst, wenn derjenige, der sich dieses Spiel ausgedacht hat, Ihnen einen der ersten zwölf Briefen geschickt hat, wären 5628851293 (ca. 5,6 Milliarden 4 ) verschiedene Menschen nötig, die sich am Spiel beteiligen, damit dieses Schneeballsystem funktioniert und Sie ihren Gewinn 5 erhielten 4 Zum Vergleich: Die Gesamtbevölkerung der Erde wurde zum Jahresbeginn 2016 auf ca. 7,4 Mrd. geschätzt. 5 Der übrigens auch nur ca. 4,3 Millionen betragen würde. 32

1. Einführung in Algorithmen 1.3 Modelle Das Beispiel zeigt, dass der Ressourcenverbrauch auch scheinbar einfacher Algorithmen sehr schnell steigen kann Bei Computeralgorithmen bezieht sich der Ressourcenverbrauch auf den benötigten Speicher Wie die Ausführungsdauer wird auch der Speicherverbrauch normiert, um Algorithmen vergleichen zu können (Speicher)-Platzkomplexität Die Platzkomplexität ist neben der Zeitkomplexität das wichtigste Bewertungsmaß für Algorithmen 1.3 Modelle Ein Modell für Algorithmen haben wir bereits kennengelernt: die mathematische Funktion Ausgangsdaten als Funktion von Eingangsdaten Die Eingangsdaten sind von den Ausgangsdaten unabhängig Alternativer Ansatz: Es wird nicht zwischen Eingangsdaten und Ausgangsdaten unterschieden Daten werden durch den Algorithmus bearbeitet Zu jedem gegebenen Zeitpunkt während des Ablauf des Algorithmus besitzen die Daten einen bestimmten Zustand Die folgenden Abbildungen zeigt den konzeptionellen Unterschied zwischen beiden Modellen: Funktion: Eingabe Algorithmus Ausgabe Zustandsänderung: Algorithmus Daten 33

M. Werner: Algorithmen & Programmierung Zustandsänderung als Zeitreihe Im Zustandsmodell 6 können die Werte der Daten als Reihe d 1, d 2, d 3,..., bzw. als Zeitreihe: d t1, d t2, d t3,... aufgefasst werden Ein einzelner Schritt des Algorithmus kann wieder als Funktion aufgefasst werden: d t+1 = f St (d t ) Um nicht ständig Indizes zu schreiben, lässt man sie bei der Beschreibung von Algorithmen häufig weg und schreibt: d f St (d) Dabei ist auf der linken Seite der neue und auf der rechten Seite der alte Wert von d gemeint Interpretation: Folgezustand ist Funktion des Vorzustandes Achtung Viele Programmiersprachen (u.a. auch C und Java) nutzen die Schreibweise wenn eigentlich gemeint ist. d = f(d) d f(d) Das Gleichheitszeichen = ist hier nicht als mathematisches Gleichheitszeichen zu verstehen Bei anderen Programmiersprachen wird versucht, diese Verwirrung zu vermeiden, indem dort :=, <- o.ä. benutzt wird Konditionalmodell Prinzipiell kann jeder Algorithmus ausschließlich aus einer Menge von Wenn-Dann- Regeln (Konditionalklauseln) bestehen: Wenn A gilt, dann geschehe X Wenn B gilt, dann geschehe Y Wenn C gilt, dann geschehe Z 6 Achtung, der Begriff Zustandsmodell hat in anderen Gebieten eine z.t. völlig andere Bedeutungen, z.b. in der Regelungtechnik 34

1. Einführung in Algorithmen 1.3 Modelle Die Reihenfolge der Regeln ist dabei nicht (unbedingt) entscheidend Die Bedingung kann sowohl von einem Zustand als auch von einer Eingabe abhängen, ist also mit dem Funktionsmodell und dem Zustandsmodell kompatibel Das Konditionalmodell ist orthogonal 7 zu Funktions- und Zustandsmodell Beispielalgorithmus 11 (Ableitung) ist nach diesem Modell gestaltet Diskussion Alle drei Modelle sind gleichmächtig Programmiersprachen nutzen in der Regel alle drei Modelle, jedoch in unterschiedlicher Ausprägung Welches Modell zur Formulierung eines Algorithmus tatsächlich genutzt wird, hängt von ab der Art des Problems (manche lassen sich besser in einem bestimmten Modell ausdrücken) den vorgegebenen Möglichkeiten zur Problembeschreibung (z.b. Programmiersprache) persönlichen Vorlieben Elemente eines Algorithmus Computeralgorithmen bestehen aus wenigen Klassen von abstrakten Elementen: Was machen? Ausdrücke auswerten, z.b.: b+ b 2 4 a c 2 a...die Spielkarte, die am weitesten links liegt... der erste Buchstabe im Wort Zustandsänderungen, z.b.: Linken Fuß an den rechten Fuß heranziehen i i + 1 Tausche zwei Karten Andere Algorithmen nutzen, z.b.: 7 Eigentlich: rechtwinklig; wird im Sinne des orthogonalen Koordinatensystems für frei kombinierbare Parameter genutzt. 35

M. Werner: Algorithmen & Programmierung berechne den ggt... Funktionsruf Wie zusammensetzen? Sequenzen, z.b.: erst Limette in Achtelstücke schneiden, dann in ein Longdrinkglas geben... Verzweigungen, z.b.: Wenn x > y, dann... sonst... Wiederholungen, z.b.: 10 mal wiederholen wiederholen bis keine Spalte mehr übrig ist Starten Sie den Algorithmus erneut mit den Parametern... Knobelaufgaben Aufgabe 1.1 Überlegen Sie sich, wie oft sie im Algorithmus aus Beispiel 12 jeweils im günstigsten und im ungünstigsten Fall zwei Karten miteinander tauschen müssen, wenn Sie auf diese Weise n Karten sortieren wollen. Aufgabe 1.2 Beweisen Sie, dass der Algorithmus aus Beispiel 8 tatsächlich die Strecke AB halbiert! Aufgabe 1.3 Formulieren Sie die Algorithmen aus den Beispielen 4 und 8 in der Konditionalform! 36