Algorithmen und Datenstrukturen

Programm heute
Algorithmen und Datenstrukturen (f¨ur ET/IT)
Sommersemester 2015
1 Organisation
Dr. Tobias Lasser
2 Einf¨
uhrung
Ziele und Inhalt der Vorlesung
Anwendungen von Algorithmen und Datenstrukturen
Einf¨
uhrung Algorithmen
Einf¨
uhrung Datenstrukturen
Einordnung in Computer-Schema
Computer Aided Medical Procedures
Technische Universit¨
at M¨
unchen
2
Personen
Termine
• Vorlesung: Dr. Tobias Lasser
• Akademischer Rat am
Lehrstuhl Prof. Nassir Navab, I16
Computer Aided Medical Procedures
Vorlesung
• Zentral¨
ubung:
• Matthias Wieczorek
¨
Ubung
Montag, 8:00 - 9:30, Raum 1200
Donnerstag 8:00 - 9:30, Raum 1200
• Wiss. Mitarbeiter I16
Zentral¨
ubung: Mittwoch, 9:45 - 11:15, Raum 1200
• Tutoren:
• Markus Steppberger
• Benedict Simlinger
Tutorfragestunden:
Dienstag nachmittags (Zeit und Raum: tba)
Freitag vormittags (Zeit und Raum: tba)
3
4
Informationen online
Kontakt und Feedback
F¨
ur Fragen:
• Pers¨
onlich
Vorlesungs-Website
¨
• z.B. vor oder nach der Vorlesung/Ubung
• in Tutorfragestunden
http://campar.in.tum.de/Chair/TeachingSs15AuD
• Email
• [email protected]
• Diskussions-Forum
• Moodle: https:
//www.moodle.tum.de/mod/forum/view.php?id=292073
• Sprechstunde
• nach Vereinbarung
• aktuelle Nachrichten
• Vorlesungs-Folien
¨
• Ubungsbl¨
atter
• zus¨
atzliche Materialien
Moodle
https://www.moodle.tum.de/course/view.php?id=17994
Feedback
• Diskussions-Forum
¨
Feedback zur Vorlesung/Ubung
ist jederzeit willkommen!
6
5
¨
Ablauf: Ubung
Ablauf: Vorlesung
• Erste Zentral¨
ubung: Mittwoch, 15.04.2015
¨
• Jede Woche ein Ubungsblatt
• 3-5 Aufgaben
• zur Anwendung und Vertiefung der Vorlesung
• In der Zentral¨
ubung
• Besprechung der Aufgaben
• Beantwortung von Fragen
• In den Tutorfragestunden
• Individuelle Beantwortung von Fragen
• 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!
¨
• Eigene Bearbeitung der Ubungsbl¨
atter dringend empfohlen!
• z.B. auch in kleinen Gruppen
7
8
Leistungsnachweis
Literatur
• Klausur am 29.07.2015
• Schriftliche Pr¨
ufung
• Dauer: 120 Minuten
• erlaubte Hilfsmittel: handbeschriebenes DIN A4 Blatt
Cormen, Leiserson, Rivest, Stein:
Algorithmen - Eine Einf¨
uhrung
Oldenbourg, 3. Auflage 2010
• Vorbereitung durch aktive Teilnahme und Bearbeitung des
¨
Ubungs-Programms
Verf¨
ugbar in der Lehrbuchsammlung
• Zwei Probeklausuren Mitte und Ende des Semesters in
Zentral¨
ubung
10
9
Erg¨anzende 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
Wissen:
1 Organisation
• Algorithmische Prinzipien verstehen und anwenden
• Grundlegende Algorithmen kennen lernen
• Grundlegende Datenstrukturen kennen lernen
2 Einf¨
uhrung
• Bewertung von Effizienz und Korrektheit lernen
Ziele und Inhalt der Vorlesung
Anwendungen von Algorithmen und Datenstrukturen
Einf¨
uhrung Algorithmen
Einf¨
uhrung Datenstrukturen
Einordnung in Computer-Schema
Methodenkompetenz:
• f¨
ur Entwurf von effizienten und korrekten Algorithmen
• zur Analyse von Algorithmen
14
13
¨
Ubersicht
der Inhalte
Grundlagen:
http://xkcd.com/835/
15
1
Einf¨
uhrung 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¨atsanalyse, Sortieren
6
Grundlagen des Algorithmen-Entwurfs
Entwurfs-Prinzipien
16
¨
Ubersicht
der Inhalte
¨
Ubersicht
der Inhalte
Fortgeschrittene Algorithmen und Datenstrukturen:
7
Fortgeschrittene Datenstrukturen
B¨aume, Graphen, Priority-Queue
8
Such-Algorithmen
Elementare Suchmethoden, Suchb¨aume
11
Datenkompression
Huffmann-Codes, JPEG
9
Graph-Algorithmen
Elementare Algorithmen, k¨
urzeste Pfade, Spannbaum
12
Kryptographie
symmetrische und asymmetrische Verschl¨
usselungsverfahren
10
Numerische Algorithmen
Matrizen-Operationen, Fast Fourier Transform
Ausgew¨ahlte Themen (je nach verf¨
ugbarer Zeit, nicht
Klausur-relevant!):
17
Wo kommen Algorithmen und Datenstrukturen vor?
18
Wo kommen Algorithmen und Datenstrukturen vor?
22
23
Was ist ein Algorithmus?
Was ist ein Algorithmus?
H. Rogers: Theory of Recursive Functions and Effective
Computability
Duden online:
Rechenvorgang nach einem bestimmten (sich wiederholenden)
”
Schema“
Ein Algorithmus ist eine
”
• deterministische Handlungsvorschrift,
• benannt nach dem Mathematiker Al’Khwarizmi (ca. 780 –
• die auf eine bestimmte Klasse von Eingaben angewendet
850) aus Persien, t¨atig im Haus der Weisheit“ in Baghdad
”
• Beispiele f¨
ur Algorithmen bereits in der Antike, etwa der
Euklidsche Algorithmus zur Berechnung des ggT:
werden kann,
• und f¨
ur jede dieser Eingaben eine korrespondierende Ausgabe
liefert.“
Wenn CD aber AB nicht misst, und man nimmt bei AB, CD
”
abwechselnd immer das kleinere vom gr¨oßeren weg, dann muss
(schließlich) eine Zahl u
¨brig bleiben, die die vorangehende misst.“
Im weiteren Verlauf des Buches wird mathematische Theorie zur
Berechenbarkeit entwickelt
aus Euklid: Die Elemente, Buch VII (Clemens Thaer)
−→ theoretische Informatik
24
Was ist ein Algorithmus?
25
Was ist ein Algorithmus?
Mathematische Definition Algorithmus
M. Broy: Informatik: Eine grundlegende Einf¨uhrung
Eine Berechnungsvorschrift zur L¨
osung eines Problems heißt
Algorithmus genau dann, wenn
Ein Algorithmus ist ein Verfahren
”
• mit einer pr¨
azisen (d.h. in einer genau festgelegten Sprache
abgefassten),
• eine zu dieser Berechnungsvorschrift ¨
aquivalente
Turingmaschine exisitiert,
• endlichen Beschreibung,
• unter Verwendung
• effektiver (d.h. tats¨
achlich ausf¨
uhrbarer),
• elementarer (Verarbeitungs-) Schritte.“
• die f¨
ur jede Eingabe, die eine L¨
osung besitzt, terminiert.
Alan Turing (1936): Turingmaschine als mathematisches Modell
eines Computers
Diese Beschreibung ist f¨
ur unsere Zwecke ausreichend.
−→ theoretische Informatik
26
27
Beispiel Algorithmus
Beispiel Kochrezept
R¨
uhrei
Euklidscher Algorithmus
Input: Eier, Salz, Pfeffer
Output: R¨
uhrei
Input: nat¨
urliche Zahlen a, b
Output: gr¨oßter gemeinsamer Teiler von a, b
1
Setze m := a und n := b
1
Butter in Pfanne zerlaufen lassen
2
Falls m < n vertausche m und n
2
Eier in Pfanne hauen
3
Berechne r := m − n
3
Prise Salz und Pfeffer hinzuf¨
ugen und gut durchr¨
uhren
4
Setze m := n und n := r
4
In Pfanne brutzeln lassen und umr¨
uhren bis die Eier durch sind
5
Falls r > 0, gehe zu Schritt 2
6
Der Output ist m
−→ dies ist kein Algorithmus!
28
Eigenschaften von Algorithmen
29
Beispiel Kochrezept
• Input (Eingabe): definiert eine Instanz des Algorithmus
R¨
uhrei
• Output (Ausgabe): das Ergebnis
Input: Eier, Salz, Pfeffer
Output: R¨
uhrei
Input −→ Algorithmus −→ Output
• Determiniertheit:
• Schrittfolge ist eindeutig festgelegt
• vorgegebener Input liefert immer eindeutigen Output
• Endlichkeit: der Algorithmus terminiert, d.h. er bricht bei
1
Butter in Pfanne zerlaufen lassen
2
Eier in Pfanne hauen
3
Prise Salz und Pfeffer hinzuf¨
ugen und gut durchr¨
uhren
4
In Pfanne brutzeln lassen und umr¨
uhren bis die Eier durch sind
jeder Eingabe nach endlich vielen Schritten ab
• Korrektheit: der Algorithmus produziert den richtigen Output
30
31
Beispiel Algorithmus
Analyse von Algorithmen
Euklidscher Algorithmus
Input: nat¨
urliche Zahlen a, b
Output: gr¨oß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 Komplexit¨
at −→ 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 repr¨
asentieren,
Piz
za
#
• den Zugriff auf die repr¨
asentierte Information u
¨ber
za
za
#
1
Operationen auf Daten erm¨
oglichen und
• die Information verwalten.
Operationen:
• Element auf Stapel legen – push
• Element von Stapel nehmen – pop
Operationen jeweils nur auf oberstem Element!
34
35
Algorithmen und
Algorithmus
Datenstrukturen
Hochsprache (z.B. C, C++)
Betriebssystem
• Felder, Listen, Stack, Queue −→ Kapitel 3
Assembler
• B¨
aume, Graphen −→ Kapitel 7, 8, 9
Computertechnik
Maschinensprache
Mikroarchitektur
Digitale Logik
Digitaltechnik
Transistoren, Verdrahtung
Schaltungstechnik
Masken-Layout, Halbleiter
Software
Wie funktioniert ein Computer?
Hardware
Weitere Beispiele von Datenstrukturen
Schema nach Prof. Diepold: Grundlagen der Informatik.
36
Beispiel-Problem Navigationssystem Auto:
Algorithmen und
Algorithmus
Datenstrukturen
Hochsprache (z.B. C)
Finde k¨
urzesten Weg von Berlin nach M¨
unchen.
Berlin
−→
−→
Betriebssystem
M¨
unchen
Assembler
• Datenstruktur: gewichteter Graph (→ Kapitel 7)
Maschinensprache
• Algorithmus: k¨
urzester Pfad (→ Kapitel 9)
Mikroarchitektur
• Algorithmus-Beschreibung: Programmiersprache (z.B. C)
Digitale Logik
¨
• Ubersetzung
in Maschinensprache: Compiler (z.B. GCC)
Transistoren, Verdrahtung
• Aufruf des Programms: Betriebssystem (z.B. Linux)
Masken-Layout, Halbleiter
• Ausf¨
uhrung des Programms: Computer (z.B. Laptop)
Software
Einordnung Algorithmen und Datenstrukturen
Hardware
Einordnung Algorithmen und Datenstrukturen
37
Schema nach Prof. Diepold: Grundlagen der Informatik.
38
39
Zusammenfassung
1 Organisation
2 Einf¨
uhrung
Ziele und Inhalt der Vorlesung
Anwendungen von Algorithmen und Datenstrukturen
Einf¨
uhrung Algorithmen
Einf¨
uhrung Datenstrukturen
Einordnung in Computer-Schema
40