Lehrstuhl für Informatik I Algorithmen und Datenstrukturen Wintersemester 2013/14 Organisatorisches Vorlesung: Alexander Wolff (E29) Übungsbetreuung: Krzysztof Fleszar (E13) Übungen: Markus Ankenbrand Thomas Prantl Florian Wisheckel Alexej Grigorjew David Pfrang Anna Seufert Programmiertutorium: Florian Wisheckel (E40) Algorithmen. . . . . . sind (wohldefinierte, endliche) Folgen von Anweisungen, die aus einer Eingabe eine Ausgabe produzieren. Algorithmus Eingabe Beispiele: Ausgabe Kochrezepte Algorithmen zur Verknüpfung (+, −, ·, :) zweier Zahlen in Dezimaldarstellung Euklidscher Algorithmus Dijkstras Algorithmus Algorithmen. . . Frage: Ist ein ausführbares Java-Programm ein Algorithmus? Ein Algorithmus ist eine (wohldefinierte, endliche) Folge von ” Anweisungen, die aus einer Eingabe eine Ausgabe produziert.“ Antwort: Dem Buchstaben der Definition nach: JA. Dem Geiste nach: NEIN. Ich würde sagen: Ein Algorithmus ist ein abstraktes Konzept; ein Programm ist eine Instanz dieses Konzeptes. Algorithmus in natürlicher Sprache oder in Pseudocode fixiert Programmierer ausführbares Programm – maschinenlesbar – meist länger als Beschreibung des Algorithmus . . . und Datenstrukturen Datenstruktur: Konzept, mit dem man Daten speichert und anordnet, so dass man sie schnell finden und ändern kann. Abstrakter Datentyp: beschreibt die Schnittstelle“ einer Datenstruktur – ” welche Operationen werden unterstützt? Implementierung: wie wird die gewünschte Funktionalität realisiert: – wie sind die Daten gespeichert (Feld, Liste, . . .)? – welche Algorithmen implementieren die Operationen? Algorithmen & Datenstrukturen Lernziele: In dieser Veranstaltung werden Sie lernen. . . die Effizienz von Algorithmen zu messen und miteinander zu vergleichen, grundlegende Algorithmen und Datenstrukturen in Java zu implementieren, selbst Algorithmen und Datenstrukturen zu entwerfen sowie deren Korrektheit und Effizienz zu beweisen. Inhalt: Grundlagen und Analysetechniken Sortierverfahren Entwurfstechniken für Algorithmen Datenstrukturen Algorithmen für Graphen Systematisches Probieren Ihre Voraussetzungen Schulmathematik, insbesondere: logb x = logy x z.B. logb y ? – Grundrechenarten & Logarithmus Pn – Drei Summen: 1) i =1 i arithmetische Reihe Pn 2) i =0 q i geometrische Reihe Pn 1 3) i =1 i harmonische Reihe – Linearität des Erwartungswerts E [X + Y ] = E [X ] + E [Y ] – Beweise mit vollständiger Induktion – Widerspruchsbeweise ... 1 2 3 ... n n+1 Bereitschaft sich in Java hineinzudenken und -zuüben Keine Angst vorm Fragenstellen!!! Studienverlaufsplan BA Informatik 0 10 20 ECTS SWS: ca. 20 30 6 5 4 3 2 1 Seminar Hardwareprakt. Softwareprakt. Mathe Inf III Bachelorarbeit Wahl pflicht Theo. Inf. Progr.-Prakt. Koll. Sem. Allgemeine Schlüsselqualifikationen Algorithmische Graphentheorie Seminar Logik Mathe Inf II Rechenanlagen Softwaretech. Mathe Inf I Algorithmen+ Datenstrukt. Inf-Übertrag. 10 ECTS ≈ 20 h/Woche Organisation I: Wochenplan Montag Dienstag Mittwoch Zuse-HS 10–12 Vorlesung Zuse-HS Programmiertutorium E40 10:00–12:00 12–14 Übung Übung SE I SE II 16–18 Freitag Vorlesung 08–10 14–16 Donnerstag Finden diese Woche schon statt! Übung Übung E40 SE II Übung Übung SE I SE II Abgabe Ausgabe Lösungen Ü-Blatter WueCampus 12:00 Laptop nötig! (Außer E40 ) Organisation II: Semesterplan 15.10. 17.10. 22.10. 24.10. 29.10. 31.10. 05.11. 07.11. 12.11. 14.11. 19.11. 21.11. 26.11. 28.11. 03.12. 05.12. 10.12. 12.12. 17.12. 19.12. 24.12. –06.01. 07.01. 09.01. 14.01. 16.01. 21.01. 23.01. 28.01. 30.01. 04.02. 06.02. 14.02. Start: heute! Spielregeln. Sie kriegen Ihre ETCS, wenn Sie 1. Test zur Klausur zugelassen werden. Dazu brauchen Sie: – 40% aller Testpunkte (Einzelarbeit) 2. Test Weihnachten Hl. 3 Könige 3. Test – 50% aller Übungspunkte (Arbeit in 2er/3er-Gruppen) – 0% Plagiate und die Klausur bestehen: – 1. Termin oder 2. Termin – Sie dürfen (∞ oft) wiederholen, solange Sie nicht bestehen. 1. Klausur 10:00–12:00 Turing+Zuse 2. Klausur: 31.03., 10:00–12:00, Zuse-HS Literatur I Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms MIT Press, 3. Aufl., 2009. Ca. 52 e. oder Algorithmen – eine Einführung Oldenbourg, 3. Aufl., 2010. Ca. 80 e. Ottmann & Widmayer: Algorithmen und Datenstrukturen Spektrum-Verlag, 5. Aufl., 2012. Ca. 50 e. Mehlhorn & Sanders: Algorithms and Data Structures: The Basic Toolbox Springer, 2008. Ca. 38 e. Goodrich & Tamassia: Data Structures & Algorithms in Java. Wiley, 5. Aufl., 2010. Ca. 115 e. Literatur II D. Ratz, J. Scheffler, D.Seese, J.Wiesenberger: Grundkurs Programmieren in Java (Band 1) Hanser Verlag http://www.grundkurs-java.de/ C. Ullenboom: Java ist auch eine Insel Galileo Computing openbook.galileocomputing.de/javainsel/ TO DO Erfüllen Sie die Voraussetzungen? logb x =? logb y Lesen Sie Anhang A im Buch von Corman et al.! Lösen Sie die Übungsaufgaben dazu! Schreiben Sie sich in die VL ein! – Vorlesungsfolien und Übungsblätter: wuecampus2.uni-wuerzburg.de WueCampus“ ” – Übungseinteilung bis Do, 13:00 Uhr: https://www-sbhome1.zv.uni-wuerzburg.de sb@home“ ” Installieren Sie vor Ihrer Übung – das Java Development Kit (JDK 7u40 Standard Edition): www.oracle.com/technetwork/java/javase/downloads – die Java-Entwicklungsumgebung Eclipse (neuste Version): www.eclipse.org/downloads