Algorithmen und Datenstrukturen

Ähnliche Dokumente
Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen II

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen. Große Übung vom Christiane Schmidt

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

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

Algorithmen und Datenstrukturen. Große Übung vom Nils Schweer

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen. Große Übung vom Nils Schweer

Algorithmen und Datenstrukturen II. Arne Schmidt Übung #

Informatik 1 (WS 2018/2019)

Algorithmen und Datenstrukturen 2. Stefan Florian Palkovits, BSc Juni 2016

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (für ET/IT)

Vorlesung Datenstrukturen

Klausur Algorithmen und Datenstrukturen II 29. Juli 2013

Kapitel 1: Informationsverarbeitung durch Programme

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

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Einführung in die Programmierung für NF. Übung

Informatikgrundlagen (WS 2016/2017)

Imperative vs. Funktionale Programmierung

Übung Algorithmen und Datenstrukturen

Kapitel 1: Informationsverarbeitung durch Programme

Übungen zur Vorlesung Datenstrukturen und Algorithmen SS 07 Beispiellösung Blatt 5

Übung Algorithmen und Datenstrukturen

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Algorithmen und Datenstrukturen in der Bioinformatik Erstes Übungsblatt WS 05/06 Musterlösung

INFORMATIK FÜR BIOLOGEN

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Algorithmen und Datenstrukturen

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Grundlagen der Programmierung

Übung Algorithmen und Datenstrukturen

9. Rekursion. 1 falls n 1 n (n 1)!, andernfalls. Experiment: Die Türme von Hanoi. Links Mitte Rechts. Mathematische Rekursion

Übung Algorithmen und Datenstrukturen

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Übung Algorithmen und Datenstrukturen

AuD: große Übung Christian Scheffer Jan-Marc Reinhardt

Vorkurs Informatik WiSe 17/18

Übung Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Ideen und Konzepte der Informatik

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

Übung Algorithmen und Datenstrukturen

Komplexität von Algorithmen

Algorithmen und Datenstrukturen

Einführung in die Informatik I

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

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

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 3

Algorithmen I - Tutorium 28 Nr. 2

Komplexität von Algorithmen:

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Effiziente Algorithmen 2

Mehrband-Turingmaschinen

Algorithmen als systematische Vorgehensweisen zur Lösung eines formal definierten Problems

Einführung in die Informatik Algorithms

Übung Algorithmen und Datenstrukturen

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

Informatik II: Algorithmen und Datenstrukturen SS 2013

Datenstrukturen, Algorithmen und Programmierung 2

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Algorithmische Bioinformatik 1

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Algorithmen und Datenstrukturen

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Algorithmen und Datenstrukturen

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Intensivübung zu Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen. Organisatorisches. Christian Komusiewicz Ernst-Abbe-Platz 2, R3315

2. Algorithmische Methoden 2.1 Rekursion. 18. April 2017

Annehmende Schleife do while

Arrays. Arrays werden verwendet, wenn viele Variablen benötigt werden. Der Vorteil in Arrays liegt darin, dass man nur eine Variable deklarieren muss

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

Transkript:

Algorithmen und Datenstrukturen Übung 1 Stephan Friedrichs Technische Universität Braunschweig, IBR 31. Oktober 2013

Programm für Heute 1 Organisatorisches 2 Übung Probleme und Instanzen Algorithmen (Pseudocode, Kontrollstrukturen,... ) Problemvarianten S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 2

Organisatorisches

Diese Folien...... braucht man nicht abzuschreiben... stehen im Netz unter http://www.ibr.cs.tu-bs.de/courses/ws1314/aud/ S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 4

Apropos Vorlesungshomepage http://www.ibr.cs.tu-bs.de/courses/ws1314/aud/ Alle Termine Materialien zu Vorlesung / großer Übung / kleiner Übung Übungsblätter Ankündigungen S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 5

Mailingliste Natürlich auf http://www.ibr.cs.tu-bs.de/courses/ws1314/aud/ Hier sämtliche Anküdigungen! S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 6

Mailingliste Natürlich auf http://www.ibr.cs.tu-bs.de/courses/ws1314/aud/ Hier sämtliche Anküdigungen! Fragen zum Stoff Auch alle Hiwis erreichbar S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 6

Mailingliste Natürlich auf http://www.ibr.cs.tu-bs.de/courses/ws1314/aud/ Hier sämtliche Anküdigungen! Fragen zum Stoff Auch alle Hiwis erreichbar 1 Registrieren 2 Mail des Listenservers abwarten 3 Darauf antworten S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 6

Algorithmen und Datenstrukturen Vorlesung Große Übung Kleine Übung S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 7

Vorlesung Neuer Inhalt Theorie, Beweise S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 8

Große Übung Aufarbeitung/Ergänzung des Vorlesungsstoffs Fragenstellen ist ausdrücklich erlaubt! :) S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 9

Kleine Übung Rückgabe/Besprechung der Hausaufgaben In kleiner Runde (ca. 20/Gruppe) über den Stoff sprechen Nächste Woche geht s los! S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 10

Kleine Übung Anmeldung Anmeldung auf http://www.ibr.cs.tu-bs.de/courses/ws1314/aud/ Freigeschaltet ab heute 13:00 bis Montag 13:00 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 11

Kleine Übung Anmeldung Anmeldung auf http://www.ibr.cs.tu-bs.de/courses/ws1314/aud/ Freigeschaltet ab heute 13:00 bis Montag 13:00 Je Termin yes/ifneedbe/no Bitte so viele yes/ifneedbes wie möglich! S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 11

Kleine Übung Anmeldung Anmeldung auf http://www.ibr.cs.tu-bs.de/courses/ws1314/aud/ Freigeschaltet ab heute 13:00 bis Montag 13:00 Je Termin yes/ifneedbe/no Bitte so viele yes/ifneedbes wie möglich! Wir werten pro Person die neueste Anmeldung Kein First come, first serve kein Stress :) Bei technischen Problemen: Meldet euch! http://www.ibr.cs.tu-bs.de/users/sfriedr/ S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 11

Apropos Hausaufgaben... 7 Übungsblätter, die ersten 2 unbewertet 14-tägig auf http://www.ibr.cs.tu-bs.de/courses/ws1314/aud/ Bearbeitungszeit: 14 Tage S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 12

Apropos Hausaufgaben... 7 Übungsblätter, die ersten 2 unbewertet 14-tägig auf http://www.ibr.cs.tu-bs.de/courses/ws1314/aud/ Bearbeitungszeit: 14 Tage Abgabe: Bis Mittwoch 13:00, zwischen IZ 337 und IZ 338 Rückgabe/Besprechung: 14 Tage später, kleine Übung S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 12

Apropos Hausaufgaben... S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 13

Apropos Hausaufgaben... zusammen arbeiten, einzeln aufschreiben Studienleistung: 50 % der Hausaufgabenpunkte S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 14

KW (ab) Algorithmen und Datenstrukturen Semesterübersicht VL Di+Mi Gr. UE Do (Winter 2013/2014) Kl. UE Mi/Do/Fr HA Ausgabe Mi abends HA Abgabe Mi bis 13:00 HA Rückgabe (in kleiner UE) 43 (21.10.) 44 (28.10.) 1, 2 1 H0a *, H0b * 45 (4.11.) 3, 4 2 1 H1 H0a * 46 (11.11.) 5, 6 47 (18.11.) 7, 8 3 2 H2 H1 H0b * 48 (25.11.) 9, 10 49 (2.12.) 11, 12 4 3 H3 H2 H1 50 (9.12.) 13, 14 51 (16.12.) 15, 16 5 4 H4 H3 H2 52 (23.12.) Weihnachtsferien 1 (30.12.) 2 (6.1.) 17, 18 6 5 H5 H4 H3 3 (13.1.) 19, 20 4 (20.1.) 21, 22 7 6 H5 H4 5 (27.1.) 23, 24 6 (3.2.) 25, 26 8 7 H5 * ) Geht nicht in die Wertung ein Homepage: http://www.ibr.cs.tu-bs.de/courses/ws1314/aud/ Ohne Gewähr! Mailingliste: http://mail.ibr.cs.tu-bs.de/mailman/listinfo/aud/ Einteilung der Übungsgruppen, Unterlagen, Hausaufgaben, S. Friedrichs Klausurtermin, (TU Braunschweig, IBR) etc.: Algorithmen Siehe Homepage und Datenstrukturen 15

Klausur Die Klausur ist am 25. 02. 2014 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 16

Fragen Fragen sind ausdrücklich erwünscht! :) Zum Beispiel...... vor / während / nach der Vorlesung / großer Übung / kleiner Übung S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 17

Fragen Fragen sind ausdrücklich erwünscht! :) Zum Beispiel...... vor / während / nach der Vorlesung / großer Übung / kleiner Übung... auf der Mailingliste S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 17

Fragen Fragen sind ausdrücklich erwünscht! :) Zum Beispiel...... vor / während / nach der Vorlesung / großer Übung / kleiner Übung... auf der Mailingliste... in Prof. Dr. Sándor P. Feketes Sprechstunde (Mittwoch 13:15 14:00, http://www.ibr.cs.tu-bs.de/users/fekete/)... in meiner Sprechstunde (Nach Vereinbarung, http://www.ibr.cs.tu-bs.de/users/sfriedr/) S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 17

Fragerunde

Algorithmen

Probleme und Instanzen Problem Allgemeine Fragestellung, oft formuliert mit Hilfe von Eingabe (was ist bekannt?) Ausgabe (was ist gesucht?) Instanz Konkrete Eingabe eines Problems S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 20

Probleme und Instanzen Problem Allgemeine Fragestellung, oft formuliert mit Hilfe von Eingabe (was ist bekannt?) Ausgabe (was ist gesucht?) Instanz Konkrete Eingabe eines Problems Lösung des Problems Algorithmus Lösung einer Instanz Konkrete Ausgabe S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 20

Problem und Instanzen Probleme und Instanzen Lösung S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 21

Problem und Instanzen Problem: GGT Probleme und Instanzen Lösung S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 21

Problem und Instanzen Problem: GGT Probleme und Instanzen Lösung Instanz von 144, 729 Instanz von Instanz von 15, 24... S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 21

Problem und Instanzen Problem: GGT Probleme und Instanzen Lösung Instanz von 144, 729 Instanz von 15, 24 Instanz von...... 9 3 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 21

Problem und Instanzen Probleme und Instanzen Lösung Problem: GGT Euklidischer Algorithmus Instanz von 144, 729 Instanz von 15, 24 Instanz von...... 9 3 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 21

Algorithmen Ein Algorithmus ist eine Berechnungsvorschrift, die zu jeder Instanz eines Problems eine Lösung liefert. Wichtig dabei: Endlicher Text Endliche Laufzeit Definiertheit Elementare Operationen (frei nach Knuth) Eingabe Algorithmus endlich, definiert, elementar Ausgabe S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 22

Wie aufschreiben? Notation, Abstraktion S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 23

Wie aufschreiben? Programmiersprache Notation, Abstraktion viele Details viel (uninteressanter) Code abhängig von Maschine (bald?) nicht mehr aktuell Programmieren I und II, SEP, Teamprojekt,... S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 23

Wie aufschreiben? Programmiersprache Notation, Abstraktion viele Details viel (uninteressanter) Code abhängig von Maschine (bald?) nicht mehr aktuell Programmieren I und II, SEP, Teamprojekt,... Pseudocode Abstraktionsgrad frei wählbar Konzentration aufs Wesentliche Unabhängig von aktuellen Sprachen S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 23

Beispiel: Minimum zweier Zahlen Problem Minimum zweier Zahlen Eingabe Zwei Zahlen x, y R Ausgabe x wenn x y, sonst y Instanz 144, 729.78 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 24

Beispiel: Minimum zweier Zahlen Problem Minimum zweier Zahlen Eingabe Zwei Zahlen x, y R Ausgabe x wenn x y, sonst y Instanz 144, 729.78 Lösung des Problems Nächste Folie Lösung der Instanz 144 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 24

Beispiel: Minimum zweier Zahlen 1: function min(x, y) 2: m y 3: if x y then 4: m x 5: end if 6: return m 7: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 25

Lessons Learned: Variablen Variablen liegen im Speicher und enthalten Werte (nicht nur Zahlen!). Diese dürfen verändert werden. 1: i 0 2: i 5 3: i i + 1 4: M {0, 1, 2} 5: M M {2, 3} S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 26

Lessons Learned: Fallunterscheidungen Bool sche Ausdrücke B i sind entweder wahr (true) oder falsch (false). 1: if B 1 then 2: wird ausgeführt, wenn B 1 true ist 3: end if S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 27

Lessons Learned: Fallunterscheidungen Bool sche Ausdrücke B i sind entweder wahr (true) oder falsch (false). 1: if B 1 then 2: wird ausgeführt, wenn B 1 true ist 3: end if alternativ mit else: 1: if B 1 then 2: wird ausgeführt, wenn B 1 true ist 3: else 4: wird ausgeführt, wenn B 1 false ist 5: end if S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 27

Lessons Learned: Fallunterscheidungen Bool sche Ausdrücke B i sind entweder wahr (true) oder falsch (false). 1: if B 1 then 2: wird ausgeführt, wenn B 1 true ist 3: else if B 2 then 4: wird ausgeführt, wenn B 1 false und B 2 true ist 5:. 6: else if B n then 7: wird ausgeführt, wenn alle B 1,..., B n 1 false und B n true ist 8: else 9: wird ausgeführt, wenn alle B 1,..., B n false sind 10: end if S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 27

Beispiel: Fakultät Problem Fakultät einer Zahl berechnen Instanz 5 Eingabe Natürliche Zahl n N Ausgabe 1 2... (n 1) n; oder 1 falls n = 0 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 28

Beispiel: Fakultät Problem Fakultät einer Zahl berechnen Instanz 5 Eingabe Natürliche Zahl n N Ausgabe 1 2... (n 1) n; oder 1 falls n = 0 Lösung des Problems Nächste Folie Lösung der Instanz 1 2 3 4 5 = 120 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 28

Beispiel: Fakultät 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 8: return f 9: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 29

Beispiel: Fakultät 1: function factorial(n) 2: f 1 3: i 1 5! = 1 2 3 4 5 Ablauf für n = 5 Zeitpunkt f i 4: while i n do 5: f f i 6: i i + 1 7: end while 8: return f 9: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 30

Beispiel: Fakultät 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 5! = 1 2 3 4 5 Ablauf für n = 5 Zeitpunkt f i Vor der Schleife 1 1 8: return f 9: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 30

Beispiel: Fakultät 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 5! = 1 2 3 4 5 Ablauf für n = 5 Zeitpunkt f i Vor der Schleife 1 1 Nach dem 1. Durchlauf 1 2 8: return f 9: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 30

Beispiel: Fakultät 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 5! = 1 2 3 4 5 Ablauf für n = 5 Zeitpunkt f i Vor der Schleife 1 1 Nach dem 1. Durchlauf 1 2 Nach dem 2. Durchlauf 2 3 8: return f 9: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 30

Beispiel: Fakultät 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 5! = 1 2 3 4 5 Ablauf für n = 5 Zeitpunkt f i Vor der Schleife 1 1 Nach dem 1. Durchlauf 1 2 Nach dem 2. Durchlauf 2 3 Nach dem 3. Durchlauf 6 4 8: return f 9: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 30

Beispiel: Fakultät 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 5! = 1 2 3 4 5 Ablauf für n = 5 Zeitpunkt f i Vor der Schleife 1 1 Nach dem 1. Durchlauf 1 2 Nach dem 2. Durchlauf 2 3 Nach dem 3. Durchlauf 6 4 Nach dem 4. Durchlauf 24 5 8: return f 9: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 30

Beispiel: Fakultät 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 8: return f 9: end function 5! = 1 2 3 4 5 Ablauf für n = 5 Zeitpunkt f i Vor der Schleife 1 1 Nach dem 1. Durchlauf 1 2 Nach dem 2. Durchlauf 2 3 Nach dem 3. Durchlauf 6 4 Nach dem 4. Durchlauf 24 5 Nach dem 5. Durchlauf 120 6 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 30

Beispiel: Fakultät 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 8: return f 9: end function 5! = 1 2 3 4 5 Ablauf für n = 5 Zeitpunkt f i Vor der Schleife 1 1 Nach dem 1. Durchlauf 1 2 Nach dem 2. Durchlauf 2 3 Nach dem 3. Durchlauf 6 4 Nach dem 4. Durchlauf 24 5 Nach dem 5. Durchlauf 120 6 Nach dem 5. Durchlauf gilt i n nicht mehr S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 30

Lessons Learned: Schleifen Führt einen Codeblock wiederholt aus, bis die bool sche Bedingung B nicht mehr gilt 1: while B do 2: wird so oft ausgeführt, bis B false ist 3: end while S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 31

For-Notation Typische Abkürzung für Standardschleifen: Ursprüngliche Version: 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 8: return f 9: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 32

For-Notation Typische Abkürzung für Standardschleifen: Ursprüngliche Version: 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 8: return f 9: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 32

For-Notation Typische Abkürzung für Standardschleifen: Kurzform I: 1: function factorial(n) 2: f 1 3: for i 1,..., n do 4: f f i 5: end for 6: return f 7: end function Ursprüngliche Version: 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 8: return f 9: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 32

For-Notation Typische Abkürzung für Standardschleifen: Kurzform II: 1: function factorial(n) 2: f 1 3: for all i {1,..., n} do 4: f f i 5: end for 6: return f 7: end function Ursprüngliche Version: 1: function factorial(n) 2: f 1 3: i 1 4: while i n do 5: f f i 6: i i + 1 7: end while 8: return f 9: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 32

Beispiel: Minimum aus Menge Problem Minimum in einer Menge von Zahlen finden Eingabe Reelle Zahlen a 1,..., a n (mindestens eine, n 1) Ausgabe Dasjenige a i mit a i a j für alle j = 1,..., n Instanz a 1 = 4, a 2 = 1, a 3 = 5, a 4 = 7, a 5 = 0.5 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 33

Beispiel: Minimum aus Menge Problem Minimum in einer Menge von Zahlen finden Eingabe Reelle Zahlen a 1,..., a n (mindestens eine, n 1) Ausgabe Dasjenige a i mit a i a j für alle j = 1,..., n Instanz a 1 = 4, a 2 = 1, a 3 = 5, a 4 = 7, a 5 = 0.5 Lösung des Problems Nächste Folie Lösung der Instanz 7 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 33

1: function minimum(a 1,..., a n ) 2: m a 1 Beispiel: Minimum aus Menge 3: for i 2,..., n do 4: m min(m, a i ) Aufruf des Algorithmus von oben! 5: end for 6: return m 7: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 34

1: function minimum(a 1,..., a n ) 2: m a 1 Beispiel: Minimum aus Menge 3: for i 2,..., n do 4: m min(m, a i ) Aufruf des Algorithmus von oben! 5: end for 6: return m 7: end function 1 i n m = min{a 1,..., a i 1 } S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 34

Lessons Learned: Funktionsaufrufe Eben:. m min(m, a i ). Ganz am Anfang: 1: function min(x, y) 2: m y 3: if x y then 4: m x 5: end if 6: return m 7: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 35

Beispiel: Zahl in Menge suchen Problem Herausfinden, ob sich eine Zahl x in einer gegebenen Menge von Zahlen befindet Eingabe Reelle Zahl x, reelle Zahlen a 1,..., a n (mindestens eine, n 1) Ausgabe True, falls x = a i für ein 1 i n; False sonst Instanz x = 6, a 1 = 4, a 2 = 1, a 3 = 5, a 4 = 7, a 5 = 0.5 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 36

Beispiel: Zahl in Menge suchen Problem Herausfinden, ob sich eine Zahl x in einer gegebenen Menge von Zahlen befindet Eingabe Reelle Zahl x, reelle Zahlen a 1,..., a n (mindestens eine, n 1) Ausgabe True, falls x = a i für ein 1 i n; False sonst Instanz x = 6, a 1 = 4, a 2 = 1, a 3 = 5, a 4 = 7, a 5 = 0.5 Lösung des Problems Nächste Folie Lösung der Instanz False S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 36

Beispiel: Zahl in Menge suchen 1: function find(x, a 1,..., a n ) 2: for i 1,..., n do 3: if x = a i then 4: return True 5: end if 6: end for 7: return False 8: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 37

Beispiel: Zahl in Menge suchen 1: function find(x, a 1,..., a n ) 2: for i 1,..., n do 3: if x = a i then 4: return True 5: end if 6: end for Das ist langsam, im schlimmsten Fall n Vergleiche! 7: return False 8: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 37

Beispiel: Zahl in Menge suchen 1: function find(x, a 1,..., a n ) 2: for i 1,..., n do 3: if x = a i then 4: return True 5: end if 6: end for Das ist langsam, im schlimmsten Fall n Vergleiche! Geht das schneller? 7: return False 8: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 37

Beispiel: Zahl in Menge suchen 1: function find(x, a 1,..., a n ) 2: for i 1,..., n do 3: if x = a i then 4: return True 5: end if 6: end for 7: return False 8: end function Das ist langsam, im schlimmsten Fall n Vergleiche! Geht das schneller? Nein, x könnte ja überall sein! S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 37

Problemvariante Es geht so nicht schneller... S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 38

Problemvariante Es geht so nicht schneller... Also das Problem verändern! S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 38

Beispiel: Zahl in sortierter Menge suchen Problem Herausfinden, ob sich eine Zahl x in einer sortierten Menge von Zahlen befindet Eingabe Reelle Zahl x, reelle Zahlen a 1 a n (mindestens eine, n 1) Ausgabe True, falls x = a i für ein 1 i n; False sonst Instanz x = 6, a 1 = 7, a 2 = 0.5, a 3 = 1, a 4 = 4, a 5 = 5 S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 39

Beispiel: Zahl in sortierter Menge suchen Problem Herausfinden, ob sich eine Zahl x in einer sortierten Menge von Zahlen befindet Eingabe Reelle Zahl x, reelle Zahlen a 1 a n (mindestens eine, n 1) Ausgabe True, falls x = a i für ein 1 i n; False sonst Instanz x = 6, a 1 = 7, a 2 = 0.5, a 3 = 1, a 4 = 4, a 5 = 5 Lösung des Problems Nächste Folie Lösung der Instanz False S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 39

Beispiel: Zahl in sortierter Menge suchen 1: function binary search(x, a 1,..., a n ) 2: i 1 3: j n 4: while i < j do 5: k i+j 2 6: if x < a k then 7: j k 1 8: else 9: i k 10: end if 11: end while 12: return a i = x 13: end function S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 40

Beispiel: Zahl in sortierter Menge suchen 1: function binary search(x, a 1,..., a n ) 2: i 1 3: j n 4: while i < j do 5: k i+j 2 6: if x < a k then 7: j k 1 8: else 9: i k 10: end if 11: end while 12: return a i = x 13: end function i i k j i i k j k = j i = j k j S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 40

Beispiel: Zahl in sortierter Menge suchen 1: function binary search(x, a 1,..., a n ) 2: i 1 3: j n 4: while i < j do 5: k i+j 2 6: if x < a k then 7: j k 1 8: else 9: i k 10: end if 11: end while 12: return a i = x 13: end function i i k j i i k j k = j i = j a i x a j (oder x < a 1 oder a n < x) k j S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 40

Beispiel: Zahl in sortierter Menge suchen 1: function binary search(x, a 1,..., a n ) 2: i 1 3: j n 4: while i < j do 5: k i+j 2 6: if x < a k then 7: j k 1 8: else 9: i k 10: end if 11: end while 12: return a i = x 13: end function i i k j i i k j k = j i = j a i x a j (oder x < a 1 oder a n < x) (j i) halbiert sich immer k j S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 40

Beispiel: Zahl in sortierter Menge suchen 1: function binary search(x, a 1,..., a n ) 2: i 1 3: j n 4: while i < j do 5: k i+j 2 6: if x < a k then 7: j k 1 8: else 9: i k 10: end if 11: end while 12: return a i = x 13: end function i i k j i i k j k = j i = j a i x a j (oder x < a 1 oder a n < x) (j i) halbiert sich immer Nur log 2 (n) Vergleiche! k j S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 40

Lessons Learned: Problemvarianten Geänderte Probleme ermöglichen/erfordern andere Algorithmen! S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 41

Programm für Heute 1 Organisatorisches 2 Übung Probleme und Instanzen Algorithmen (Pseudocode, Kontrollstrukturen,... ) Problemvarianten S. Friedrichs (TU Braunschweig, IBR) Algorithmen und Datenstrukturen 42

Fragen?