Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 1 Organisation Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Einführung Ziele und Inhalt der Vorlesung Anwendungen von Algorithmen und Datenstrukturen Einführung Algorithmen Einführung Datenstrukturen Einordnung in Computer-Schema 2 Personen Termine Vorlesung: Dr. Tobias Lasser Akademischer Rat am Lehrstuhl Prof. Nassir Navab, I16 Computer Aided Medical Procedures Zentralübung: Matthias Wieczorek Wiss. Mitarbeiter I16 Tutoren: Markus Steppberger Benedict Simlinger Vorlesung Montag, 8:00-9:30, Raum 1200 Donnerstag 8:00-9:30, Raum 1200 Übung Zentralübung: Mittwoch, 9:45-11:15, Raum 1200 Tutorfragestunden: Dienstag nachmittags (Zeit und Raum: tba) Freitag vormittags (Zeit und Raum: tba) 3 4
Informationen online Vorlesungs-Website http://campar.in.tum.de/chair/teachingss15aud aktuelle Nachrichten Vorlesungs-Folien Übungsblätter zusätzliche Materialien Moodle https://www.moodle.tum.de/course/view.php?id=17994 Diskussions-Forum Kontakt und Feedback Für Fragen: Persönlich z.b. vor oder nach der Vorlesung/Übung in Tutorfragestunden Email algods@mailnavab.in.tum.de Diskussions-Forum Moodle: https: //www.moodle.tum.de/mod/forum/view.php?id=292073 Sprechstunde nach Vereinbarung Feedback Feedback zur Vorlesung/Übung ist jederzeit willkommen! 5 6 Ablauf: Vorlesung Ablauf: Übung Erste Zentralübung: Mittwoch, 15.04.2015 Folienvortrag mit gelegentlichen Annotationen / Tafelanschrieb kein Skript! Folien vor Vorlesung als PDF zum Download http://campar.in.tum.de/chair/teachingss15aud Eigene Notizen sind hilfreich! Jede Woche ein Übungsblatt 3-5 Aufgaben zur Anwendung und Vertiefung der Vorlesung In der Zentralübung Besprechung der Aufgaben Beantwortung von Fragen In den Tutorfragestunden Individuelle Beantwortung von Fragen Eigene Bearbeitung der Übungsblätter dringend empfohlen! z.b. auch in kleinen Gruppen 7 8
Leistungsnachweis Literatur Klausur am 29.07.2015 Schriftliche Prüfung Dauer: 120 Minuten erlaubte Hilfsmittel: handbeschriebenes DIN A4 Blatt Cormen, Leiserson, Rivest, Stein: Algorithmen - Eine Einführung Oldenbourg, 3. Auflage 2010 Vorbereitung durch aktive Teilnahme und Bearbeitung des Übungs-Programms Verfügbar in der Lehrbuchsammlung Zwei Probeklausuren Mitte und Ende des Semesters in Zentralübung 9 10 Ergänzende Literatur Fragen? Sedgewick: Algorithmen, Addison-Wesley, 2001 Ottmann, Widmayer: Algorithmen und Datenstrukturen, Spektrum, 2002 Knuth: The Art of Computer Programming Vol. 1-4A, Addison-Wesley, 1997/98, 2011 11 12
Programm heute Ziele der Vorlesung 1 Organisation 2 Einführung Ziele und Inhalt der Vorlesung Anwendungen von Algorithmen und Datenstrukturen Einführung Algorithmen Einführung Datenstrukturen Einordnung in Computer-Schema Wissen: Algorithmische Prinzipien verstehen und anwenden Grundlegende Algorithmen kennen lernen Grundlegende Datenstrukturen kennen lernen Bewertung von Effizienz und Korrektheit lernen Methodenkompetenz: für Entwurf von effizienten und korrekten Algorithmen zur Analyse von Algorithmen 13 14 Übersicht der Inhalte http://xkcd.com/835/ Grundlagen: 1 Einführung in Algorithmen und Datenstrukturen Motivation, Definitionen, Einordnung 2 Grundlagen von Algorithmen Darstellung, elementare Bausteine, Pseudocode 3 Grundlagen von Datenstrukturen Primitive Datentypen, Felder, abstrakte Datentypen 4 Grundlagen der Korrektheit von Algorithmen Verifikation, Testen, Sortieren 5 Grundlagen der Effizienz von Algorithmen Komplexitätsanalyse, Sortieren 6 Grundlagen des Algorithmen-Entwurfs Entwurfs-Prinzipien 15 16
Übersicht der Inhalte Übersicht der Inhalte Fortgeschrittene Algorithmen und Datenstrukturen: 7 Fortgeschrittene Datenstrukturen Bäume, Graphen, Priority-Queue 8 Such-Algorithmen Elementare Suchmethoden, Suchbäume 9 Graph-Algorithmen Elementare Algorithmen, kürzeste Pfade, Spannbaum 10 Numerische Algorithmen Matrizen-Operationen, Fast Fourier Transform Ausgewählte Themen (je nach verfügbarer Zeit, nicht Klausur-relevant!): 11 Datenkompression Huffmann-Codes, JPEG 12 Kryptographie symmetrische und asymmetrische Verschlüsselungsverfahren 17 18 Wo kommen Algorithmen und Datenstrukturen vor? Wo kommen Algorithmen und Datenstrukturen vor? 22 23
Was ist ein Algorithmus? Duden online: Rechenvorgang nach einem bestimmten (sich wiederholenden) Schema benannt nach dem Mathematiker Al Khwarizmi (ca. 780 850) aus Persien, tätig im Haus der Weisheit in Baghdad Beispiele für Algorithmen bereits in der Antike, etwa der Euklidsche Algorithmus zur Berechnung des ggt: 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. aus Euklid: Die Elemente, Buch VII (Clemens Thaer) Was ist ein Algorithmus? H. Rogers: Theory of Recursive Functions and Effective Computability Ein Algorithmus ist eine deterministische Handlungsvorschrift, die auf eine bestimmte Klasse von Eingaben angewendet werden kann, und für jede dieser Eingaben eine korrespondierende Ausgabe liefert. Im weiteren Verlauf des Buches wird mathematische Theorie zur Berechenbarkeit entwickelt theoretische Informatik 24 25 Was ist ein Algorithmus? Was ist ein Algorithmus? Mathematische Definition Algorithmus Eine Berechnungsvorschrift zur Lösung eines Problems heißt Algorithmus genau dann, wenn eine zu dieser Berechnungsvorschrift äquivalente Turingmaschine exisitiert, die für jede Eingabe, die eine Lösung besitzt, terminiert. Alan Turing (1936): Turingmaschine als mathematisches Modell eines Computers theoretische Informatik M. Broy: Informatik: Eine grundlegende Einführung Ein Algorithmus ist ein Verfahren mit einer präzisen (d.h. in einer genau festgelegten Sprache abgefassten), endlichen Beschreibung, unter Verwendung effektiver (d.h. tatsächlich ausführbarer), elementarer (Verarbeitungs-) Schritte. Diese Beschreibung ist für unsere Zwecke ausreichend. 26 27
Beispiel Algorithmus Beispiel Kochrezept Euklidscher Algorithmus Input: natürliche Zahlen a, b Output: größter gemeinsamer Teiler von a, b 1 Setze m := a und n := b 2 Falls m < n vertausche m und n 3 Berechne r := m n 4 Setze m := n und n := r 5 Falls r > 0, gehe zu Schritt 2 6 Der Output ist m Rührei Input: Eier, Salz, Pfeffer Output: Rührei 1 Butter in Pfanne zerlaufen lassen 2 Eier in Pfanne hauen 3 Prise Salz und Pfeffer hinzufügen und gut durchrühren 4 In Pfanne brutzeln lassen und umrühren bis die Eier durch sind dies ist kein Algorithmus! 28 29 Eigenschaften von Algorithmen Beispiel Kochrezept Input (Eingabe): definiert eine Instanz des Algorithmus Output (Ausgabe): das Ergebnis Input Algorithmus Output Determiniertheit: Schrittfolge ist eindeutig festgelegt vorgegebener Input liefert immer eindeutigen Output Endlichkeit: der Algorithmus terminiert, d.h. er bricht bei jeder Eingabe nach endlich vielen Schritten ab Korrektheit: der Algorithmus produziert den richtigen Output Rührei Input: Eier, Salz, Pfeffer Output: Rührei 1 Butter in Pfanne zerlaufen lassen 2 Eier in Pfanne hauen 3 Prise Salz und Pfeffer hinzufügen und gut durchrühren 4 In Pfanne brutzeln lassen und umrühren bis die Eier durch sind 30 31
Beispiel Algorithmus Analyse von Algorithmen Euklidscher Algorithmus Input: natu rliche Zahlen a, b Output: gro ßter gemeinsamer Teiler von a, b Entscheidende Fragestellungen: Darstellung Kapitel 2 1 Setze m := a und n := b Robustheit und Korrektheit Kapitel 4 2 Falls m < n vertausche m und n Effizienz und Komplexita t Kapitel 5 3 Berechne r := m n Entwurfstechniken Kapitel 6 4 Setze m := n und n := r 5 Falls r > 0, gehe zu Schritt 2 6 Der Output ist m 32 Definition Datenstruktur 33 Beispiel Datenstruktur Stapel (oder Englisch: Stack), z.b. Pizza-Stapel Definition Datenstruktur (nach Prof. Eckert) neu e Eine Datenstruktur ist eine Piz Piz logische Anordnung von Datenobjekten, 3 za # 2 Piz die Informationen repra sentieren, Piz za # den Zugriff auf die repra sentierte Information u ber za za # 1 Operationen auf Daten ermo glichen und die Information verwalten. Operationen: Element auf Stapel legen push Element von Stapel nehmen pop Operationen jeweils nur auf oberstem Element! 34 35
Weitere Beispiele von Datenstrukturen Wie funktioniert ein Computer? Algorithmen und Algorithmus Datenstrukturen Hochsprache (z.b. C, C++) Felder, Listen, Stack, Queue Kapitel 3 Bäume, Graphen Kapitel 7, 8, 9 Computertechnik Betriebssystem Assembler Maschinensprache Software Digitaltechnik Mikroarchitektur Digitale Logik Transistoren, Verdrahtung Hardware Schaltungstechnik Masken-Layout, Halbleiter 36 Schema nach Prof. Diepold: Grundlagen der Informatik. 37 Einordnung Algorithmen und Datenstrukturen Beispiel-Problem Navigationssystem Auto: Finde kürzesten Weg von Berlin nach München. Berlin München Datenstruktur: gewichteter Graph ( Kapitel 7) Algorithmus: kürzester Pfad ( Kapitel 9) Algorithmus-Beschreibung: Programmiersprache (z.b. C) Übersetzung in Maschinensprache: Compiler (z.b. GCC) Aufruf des Programms: Betriebssystem (z.b. Linux) Einordnung Algorithmen und Datenstrukturen Algorithmen und Algorithmus Datenstrukturen Hochsprache (z.b. C) Betriebssystem Assembler Maschinensprache Mikroarchitektur Digitale Logik Transistoren, Verdrahtung Masken-Layout, Halbleiter Software Hardware Ausführung des Programms: Computer (z.b. Laptop) Schema nach Prof. Diepold: Grundlagen der Informatik. 38 39
Zusammenfassung 1 Organisation 2 Einführung Ziele und Inhalt der Vorlesung Anwendungen von Algorithmen und Datenstrukturen Einführung Algorithmen Einführung Datenstrukturen Einordnung in Computer-Schema 40