Grundlagen der Algorithmen und Datenstrukturen

Ähnliche Dokumente
Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

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

Algorithmen und Datenstrukturen

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

32. Algorithmus der Woche Kreise zeichnen mit Turbo Programmoptimierung: Wie kann man die Zahl der Rechenoperationen minimieren?

Vorlesung Berechenbarkeit und Komplexität. Motivation, Übersicht und Organisatorisches

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

Algorithmen und Berechnungskomplexität I

Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Algorithmen und Berechnungskomplexität I

Vorlesung Datenstrukturen

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

Grundlagen der Programmierung

Algorithmen und Datenstrukturen

Effiziente Algorithmen und Datenstrukturen I Kapitel 1: Einleitung

Algorithmen & Komplexität

Vorlesung Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2015

Algorithmentheorie 1. Vorlesung

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen II

Modul Algorithmik, T-Katalog

Algorithmentheorie 1. Vorlesung

Übung Algorithmen und Datenstrukturen

Vorlesung Programmieren

Diskrete Strukturen WS 2010/11. Ernst W. Mayr. Wintersemester 2010/11. Fakultät für Informatik TU München

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Algorithmen und Datenstrukturen

Informatikgrundlagen (WS 2016/2017)

Algorithmische Mathematik und Programmieren

Grundlagen der Programmierung

Einführung in die Informatik

Datenstrukturen, Algorithmen und Programmierung 2

Theoretische Informatik

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Einführung in die Programmierung. Organisatorisches. Skript zur Vorlesung Einführung in die Programmierung

Algorithmen und Datenstrukturen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Gliederung. Algorithmen und Datenstrukturen I. Eine wichtige Frage. Algorithmus. Materialien zur Vorlesung. Begriffsbestimmung EUKLID Primzahltest

Algorithmen und Datenstrukturen

Einführung in die Programmierung

Algorithmen und Datenstrukturen

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Grundlagen Algorithmen und Datenstrukturen Kapitel 13

Logik und diskrete Strukturen

Übungen zu Algorithmen

Algorithmen & Datenstrukturen

Theoretische Informatik 2 bzw. Formale Sprachen und Berechenbarkeit. Sommersemester Herzlich willkommen!

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert und Dr. Thomas Stibor

Einführung in die Informatik

Übung Algorithmen und Datenstrukturen

Approximationsalgorithmen für NP-harte Optimierungsprobleme

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

Sortieren II / HeapSort Heaps

Organisatorisches. Software Engineering 1 WS 2012/13. Prof. Dr.-Ing. Ina Schaefer. Institut für Softwaretechnik und Fahrzeuginformatik TU Braunschweig

Algorithmen und Datenstrukturen

Herzlich willkommen!!!

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen

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

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

2. Hausübung Algorithmen und Datenstrukturen

Vorlesung Programmierung

Informatikgrundlagen (WS 2015/2016)

String - Matching. Kapitel Definition

Vorlesung Programmierung

Algorithmen und Datenstrukturen

Grundbegriffe der Informatik

Suchen und Sortieren

Institut für Telematik Universität zu Lübeck. Programmieren. Kapitel 0: Organisatorisches. Wintersemester 2008/2009. Prof. Dr.

Grundlagen: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (AuD) Prof. Dr. Claudia Eckert

Theoretische Informatik

7. Übungs-/Wiederholungsblatt zu Einführung in die Numerik (SS 2012)

2λx cos(y) + (4 2λ)y sin(y) e x harmonisch in R 2 ist. Dazu berechnen wir. = e x (2λ(x 2) cos(y) + (4 2λ)y sin(y))

Octave/Matlab-Übungen

Übungen Grundlagen Betriebssysteme WS 07 / 08

1. Asymptotische Notationen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. String Matching 5. Ausgewählte Datenstrukturen

Grundlagen der Programmierung II (GP 2)

= -15 MPa. Zeichnen Sie den Mohrschen Spannungskreis und bestimmen Sie

Vorlesung Modellierung Modellierungsmethoden der Informatik. Wintersemester 2011/12. Lernplattform Moodle. Wer sind wir?

Serie 3 - Komplexe Zahlen II

Vorlesung Informatik II

Algorithmen und Datenstrukturen CS1017

Simulation von Zufallszahlen. Grundlage: zufällige Quelle von Zufallszahlen, durch einfachen rekursiven Algorithmus am Computer erzeugt

Algorithmen und Datenstrukturen

Einführung in die Informatik für Nebenfach. Einleitung

Bioinformatik Für Biophysiker

Informatik II, SS 2016

Transkript:

Grundlagen der Algorithmen und Datenstrukturen Christian Scheideler + Helmut Seidl SS 2009 01.04.09 Kapitel 0 1

Vorlesung: Organisatorisches Di 12:00 13:30 MI HS 1 Do 12:00 12:45 MI HS 1 Übungen: 34 Alternativen (max. 15 Teiln.) 4 englische Übungsleitung: Sylvia Pott, Vivian Prinz uebungsleitung-gad@mailseidl.in.tum.de Anmeldung: Grundstudiumstool 01.04.09 Kapitel 0 2

Organisatorisches Webseite: www2.in.tum.de/hp/?gad09 Literatur (u.a.): Kurt Mehlhorn und Peter Sanders. Algorithms and Data Structures The Basic Toolbox Springer Verlag, Berlin, 2008. Webseite enthält Vorlesungsfolien und Übungsblätter 01.04.09 Kapitel 0 3

Organisatorisches Übungsblätter: Jede Woche ein Übungsblatt. Ausgabe: jeden Dienstag auf der Kurswebseite Abgabe: jeden Dienstag vor der Vorlesung Eine Klausur: voraussichtlich am 25. Juli (Samstag) Anmeldung über TUM Online Endnote: Klausur + Bonus Bonus: Bestehen + 50% der Übungspunkte: 0,3 01.04.09 Kapitel 0 4

Einführung Thema: Algorithmen und Datenstrukturen Theorie? Was ist ein Algorithmus? Was ist eine Datenstruktur? Einführende Beispiele Muss ich Programme schreiben? 01.04.09 Kapitel 0 5

Was ist ein Algorithmus? Definition: Ein Algorithmus ist eine formale Handlungsvorschrift zur Lösung von Instanzen eines Problems in endlich vielen Schritten. Algorithmus: von Muhammad Al Chwarizmi (~783-850), dessen arabisches Lehrbuch Über das Rechnen mit indischen Zahlen in lateinischer Übersetzung mit Dixit Algorismi begann. Im Mittelalter wurde daraus algorismus als Bezeichnung für die Kunst des Rechnens mit den arabischen (bzw. indischen) Ziffern algorismus! Algorithmus 01.04.09 Kapitel 0 6

Was ist ein Algorithmus? Eingabe Algorithmus Ausgabe 01.04.09 Kapitel 0 7

Beispiele Kochrezept Eingabe: Zutaten, Algorithmus: Rezept, Ausgabe: Essen Bauanleitung Eingabe: Teile, Algorithmus: Bauanleitung, Ausgabe: Schrank Weitere Beispiele (später): Ausweg aus Labyrinth Zeichnen eines Kreises 01.04.09 Kapitel 0 8

Was ist eine Datenstruktur? Definition: Eine Datenstruktur ist eine Anordnung / Verknüpfung von Daten, um den Zugriff auf diese und ihre Verwaltung geeignet zu ermöglichen. Operation 1 Datenstruktur Operation 2 Operation 3 01.04.09 Kapitel 0 9

Beispiele Datenstrukturen für schnelles Suchen: Lexikon Operation: Suche(Name) (Algo mit Eingabe Name, Ausgabe Info zu Name ) Kalender Operation: z.b. Wochentag(Datum) (Algo mit Eingabe Datum, Ausgabe Wochentag des Datums) 01.04.09 Kapitel 0 10

Softwareentwicklung Problem Modellierung Algorithmen und Datenstrukturen Implementierung 01.04.09 Kapitel 0 11

Grundsätzliche Probleme Korrektheit Effizienz Komplexität Robustheit / Sicherheit 01.04.09 Kapitel 0 12

Effizienz Wichtig: Laufzeit und Speicheraufwand Warum? Riesige Datenmengen (Bioinformatik) Echtzeitanwendungen (Spiele) Ziel der Vorlesung: Grundstock an effizienten Algorithmen und Datenstrukturen für Standardprobleme 01.04.09 Kapitel 0 13

Beispiele Einige sehr effiziente Algorithmen: Ausweg aus Labyrinth Zeichnen eines Kreises 01.04.09 Kapitel 0 14

Ausweg aus Labyrinth Es ist dunkel! Keine Taschenlampe! 01.04.09 Kapitel 0 15

Ausweg aus Labyrinth 1. Versuch: Linke-Hand-Regel 01.04.09 Kapitel 0 16

Ausweg aus Labyrinth Zwecklos! Ich bin eingemauert 01.04.09 Kapitel 0 17

Ausweg aus Labyrinth Pledge-Algorithmus: setze Umdrehungszähler auf 0 wiederhole, bis Ausgang gefunden geradeaus, bis Wand erreicht Linke-Hand-Regel bis Umdrehungszähler=0 (Linksdrehung um 90 Grad: Zähler-1, Rechtsdrehung um 90 Grad: Zähler+1) Funktioniert, solange das Labyrinth rechtwinklig und eben und der Ausgang an der Seite ist! 01.04.09 Kapitel 0 18

Ausweg aus Labyrinth +1 0 +2 0 +1 Hurra! Geschafft! +1 01.04.09 Kapitel 0 19

Algorithmusbuch Einige dieser Algorithmen sind erschienen in B. Vöcking, H. Alt, M. Dietzfelbinger C. Scheideler, H. Vollmer, D. Wagner Taschenbuch der Algorithmen Springer Verlag, Berlin, 2008 01.04.09 Kapitel 0 20

Kreiszeichnen Wie zeichne ich schnell Kreise im Computer? 01.04.09 Kapitel 1 21

Kreiszeichnen Naiver Ansatz: verwende sin und cos Für α =0...2π : -R α x=r cos(α ) y=r sin(α ) R 01.04.09 Kapitel 1 22

Kreiszeichnen plot(x,y): setze Punkt bei Position (x,y) Algorithmus Kreis1: for (1=0; i<n; i++) plot(r*cos(2*pi*i/n), R*sin(2*pi*i/n)); Kreisumfang: U=2π R. Bei Pixelbreite von 1 Längeneinheit reicht dann n=7r. Problem: Funktionen sin, cos sind teuer! 01.04.09 Kapitel 1 23

Kreiszeichnen Besserer Ansatz: x 2 +y 2 =R 2, also y=±sqrt(r²-x²) Algorithmus Kreis2: for(x=-r;x<=r;x++){ y=sqrt(r*r-x*x); plot(x,y); plot(x,-y); } y -R R x 01.04.09 Kapitel 1 24

Kreiszeichnen Noch besser: Ausnutzung von Spiegelungen (-x,y) (x,y) zu berechnen (y,-x) (-y,-x) (y,x) (-y,x) R (-x,-y) (x,-y) 01.04.09 Kapitel 1 25

Kreiszeichnen Aber: Algo verwendet immer noch Wurzel Kommen wir mit *,+,- aus? innerhalb von Kreis? ja: x=x+1; nein: x=x+1; y=y-1; zeichne nur mit innerhalb 01.04.09 Kapitel 1 26

Kreiszeichnen Mittelpunkt des ersten (x,y)=(0,r) Position seines Punkts: (0,R-1/2) (1x1-Quadrat) Test, ob (x,y) innerhalb Kreis: teste, ob F(x,y):= x 2 +y 2 -R 2 < 0 ist Also Test, ob mit Punkt (0,R-1/2) noch innerhalb des Kreises ist: 0 2 +(R-1/2) 2 -R 2 = -R+0.25 < 0? Es gilt: F(x+1,y) = F(x,y)+2x+1 F(x+1,y-1) = F(x,y)+2x-2y+2 01.04.09 Kapitel 1 27

Bresenham Algorithmus x=0; y=r; F=-R+0.25; plot(0,r); plot(r,0); plot(0,-r); plot(-r,0); while (x<y) { x=x+1; F=F+2*x-1; if (F>=0) { // bei (x,y) hat nicht innerhalb y=y-1; // deshalb zu (x,y-1) F=F-2*y; } plot(x,y); plot(y,x); plot(-x,y); plot(y,-x); plot(x,-y); plot(-y,x); plot(-x,-y); plot(-y,-x); } 01.04.09 Kapitel 1 28

Nächstes Kapitel Eingabekodierung Asymptotische Notation Maschinenmodell Java Laufzeitanalyse Einige Beispiele 01.04.09 Kapitel 1 29