Datenstrukturen, Algorithmen und Programmierung 2

Ähnliche Dokumente
Datenstrukturen, Algorithmen und Programmierung 2

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!

Kap. 3ff: Untere Laufzeitschranke und Lineare Verfahren

Algorithmen und Datenstrukturen

Informatik 1 (WS 2018/2019)

Datenstrukturen, Algorithmen und Programmierung 2

ADS. 1. Vorlesung. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm

Algorithmen und Datenstrukturen

Informatikgrundlagen (WS 2016/2017)

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

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:

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

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

Datenstrukturen, Algorithmen und Programmierung II

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

Vorlesung Datenstrukturen

Informatik II Algorithmen & Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen

Algorithmen und Berechnungskomplexität I

Algorithmen & Datenstrukturen

Kap. 6.6: Kürzeste Wege

Algorithmen und Datenstrukturen

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

Algorithmen und Datenstrukturen

Kap. 6.6: Kürzeste Wege

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

Algorithmen und Datenstrukturen (für ET/IT)

Datenstrukturen. Sommersemester Kapitel 1: Motivation / Grundlagen. Steffen Lange

Kap. 4.7 Skiplisten. 15./16. VO DAP2 SS /10. Juni 2008

Algorithmen & Komplexität

Programmieren und Problemlösen

Algorithmen und Datenstrukturen

Kap. 4.7 Skiplisten. 14./15. VO DAP2 SS /16. Juni 2009

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen CS1017

Motivation Binäre Suchbäume

Informatik II: Algorithmen und Datenstrukturen SS 2013

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Vorlesung Programmieren

Informatik II. Vorlesung am D-BAUG der ETH Zürich. Felix Friedrich & Hermann Lehner FS 2018

Algorithmen und Datenstrukturen II

Übung Algorithmen und Datenstrukturen

Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 17 Sortieren

Abschnitt 7: Komplexität von imperativen Programmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Grundlagen: Algorithmen und Datenstrukturen

Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

Algorithmen und Datenstrukturen Effizienz und Funktionenklassen

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

I.1. Organisatorisches - 1 -

Algorithmen und Berechnungskomplexität I

Algorithmen und Datenstrukturen

Datenstrukturen, Algorithmen und Programmierung II

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

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

7. Sortieren Lernziele. 7. Sortieren

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Informatikgrundlagen (WS 2015/2016)

Datenstrukturen und Algorithmen

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

Algorithmen und Datenstrukturen

Abschnitt 19: Sortierverfahren

Abstrakte Datentypen und Datenstrukturen

Transkript:

Datenstrukturen, Algorithmen und Programmierung 2 Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1. VO SS 2009 14. April 2009 Petra Mutzel

Kurzvorstellung und Forschungsinteressen Algorithmen und Datenstrukturen Graphenalgorithmen Kombinatorische Optimierung Algorithm Engineering Design, theoretische Analyse, anwendungs- Implementierung, und orientiert experimentelle Evaluation von Algorithmen und Datenstrukturen Petra Mutzel 2

Algorithmik Algorithmentheorie Abstrakte Modelle Entwurf Analyse Leistungsgarantien Implementierung Anwendungen 3

Motivation Warum soll ich in DAP2 gehen? MERKE: DAP2 IST WICHTIG!!! Ich kann doch schon programmieren. ABER NICHT IMMER EFFIZIENT! Und noch ein Grund: DAP2 IST TEIL DER ENDNOTE! Petra Mutzel 4

Überblick Einführung Organisatorisches zur Vorlesung Übung Praktikum Petra Mutzel 5

Kapitel 1: Einführung 1.1 Grundbegriffe 1.2 Beispiel: Sortierproblem 1.3 Analyse von Algorithmen Petra Mutzel 6

Konkrete Formulierung abstrakter Algorithmen, die sich auf bestimmte Darstellungen wie Datenstrukturen stützen = Summe aus Algorithmen und Datenstrukturen Algorithmus Datenstruktur Algorithmen, Datenstrukturen und Programm Programmierung Rechenvorschrift Eingabe Berechnung Ausgabe Schema zur Repräsentation der durch einen Algorithmus behandelten Daten Petra Mutzel 7

Konkrete Formulierung abstrakter Algorithmen, die sich auf bestimmte Darstellungen wie Datenstrukturen stützen = Summe aus Algorithmen und Datenstrukturen Algorithmus Datenstruktur Algorithmen, Datenstrukturen und Programm Programmierung Darstellung (, Englisch als Text (Deutsch, (,++ C als Computerprogramm (Java, als Hardwaredesign als Pseudocode DAP2 Petra Mutzel 8

Pseudocode Vereinfachung real existierender Programmiersprachen C / Java int tmp = i; i = j; j = tmp; Pseudocode vertausche i mit j for (int i=0;i<9;i++) { } float f =A[i] for i:=0,,8 { } f = A[i] 9

Beispiel: Sortierproblem Eingabe: Folge von n Zahlen <a 1,a 2,,a n > Ausgabe: Permutation <a 1,a 2,,a n> der Eingabefolge, so dass a 1 a 2 a n Jede konkrete Zahlenfolge ist eine Instanz des Sortierproblems, z.b.: <5,3,11,2,17> <2,3,5,11,17> Gesucht: Korrekter Algorithmus für Problem Petra Mutzel 10

Sortieren durch Einfügen Eingabe: zu sortierende Zahlenfolge (key) Ausgabe: sortierte Zahlenfolge Setze Index k auf 2.-tes Element Setze Index i auf (k 1).-tes Element // vor dem k-ten Element ist alles sortiert // suche den richtigen Platz für k-tes Element Solange i 0 und ( key(k) < key(i) ) Setze Index i auf (i 1).-tes Element Platziere k-tes Element zwischen i-tes und (i+1).-tes Element 11

( A InsertionSort(ref Eingabe/Ausgabe: Zahlenfolge in Feld A[1..n] (1) for k:=2,,n { (2) key:=a[k] (3) i:=k (4) while i>1 and A[i 1]>key { (5) A[i]:=A[i 1] (6) i:=i 1 (7) } (8) A[i]:=key (9) } Petra Mutzel 12

( A Ablauf von InsertionSort(ref Zahlenfolge: k= i= 5 2 4 6 1 3 52 5 4 6 1 3 2 5 4 6 1 3 2 45 5 6 1 3 2 4 5 6 1 3 2 4 5 6 1 3 u.s.w. 13

Analyse von Algorithmen JETZT AUFPASSEN: sehr sehr WICHTIG! Maße für die Effizienz eines Algorithmus: Laufzeit benötigter Speicherplatz Anzahl der Vergleichsoperationen Anzahl der Datenbewegungen Petra Mutzel 14

RAM-Maschinenmodell Eigenschaften der Random Access Machine : Es gibt genau einen Prozessor, der das Programm sequentiell abarbeitet Jede Zahl, die wir in unserem Programm benutzen paßt in eine Speichereinheit Alle Daten liegen in einem direkt zugreifbaren Speicher Alle Speicherzugriffe dauern gleich lang Alle primitiven Operationen benötigen konstante Zeit Petra Mutzel 15

Primitive Operationen Zuweisungen (a:=b) arithmetische Operationen (Addition, Multiplikation, Modulo-Op., Wurzel-Op.) logische Operationen (and, or, not) Vergleichsoperationen (,, ) Befehle zur Ablaufsteuerung (if-then) Die Laufzeit eines Algorithms ist die Anzahl der bei einer Berechnung durchgeführten primitiven Operationen. 16

Abmachung Wir zählen (1) for (i=1...n) { (2)... (3) } als (0) i=1 (1) Ist i n? { (2)... (3) i=i+1 } deswegen 0 Mal n+1 Mal... n Mal Petra Mutzel 17

Laufzeit eines Algorithmus Laufzeit als Funktion der Eingabegröße z.b. für Sortierprobleme: n Laufzeit abhängig von spezieller Instanz, z.b. für Sortierprobleme: sortierte Eingabefolge eventuell schneller als für unsortierte Folge Deswegen: Best-Case, Worst-Case und Average-Case Analyse Petra Mutzel 18

( A Analyse von InsertionSort(ref s k :Anzahl der Durchführungen von (4) (1) for k:=2,,n { (2) key:=a[k] (3) i:=k (4) while i>1 and A[i 1]>key { (5) A[i]:=A[i 1] (6) i:=i 1 (7) } (8) A[i]:=key (9) } Zeit Wie oft? t 1 n t 2 n-1 t 3 n-1 t 4 s k t 5 t 6 t 7 t 8 n-1 t 9 n-1 ( 1 (s k ( 1 (s k ( 1 (s k Petra Mutzel 19

( A Analyse von InsertionSort(ref s k :Anzahl der Durchführungen von (4) Zeit t 1 Wie oft? n t 2 n-1 t 3 n-1 t 4 s k t 5 t 6 t 7 ( 1 (s k ( 1 (s k ( 1 (s k t 8 n-1 abhängig von s k t 9 n-1 Petra Mutzel 20

Best-Case Analyse Kürzeste mögliche Laufzeit über alle möglichen Eingabe-Instanzen bei vorgegebener Eingabegröße. Sortierte Folge: s k =1 Zeit Wie oft? t 1 n t 2 n-1 t 3 n-1 t 4 s k t 5 t 6 ( 1 (s k ( 1 (s k T(n)=Lineare Funktion in n mit Konstanten a und b t 7 t 8 n-1 t 9 n-1 ( 1 (s k Petra Mutzel 21

Worst-Case Analyse Längste mögliche Laufzeit über alle möglichen Eingabe-Instanzen bei vorgegebener Eingabegröße. Umgekehrt sortierte Folge: s k =k Zeit Wie oft? t 1 n t 2 n-1 t 3 n-1 t 4 s k t 5 t 6 t 7 ( 1 (s k ( 1 (s k ( 1 (s k T(n)=Quadratische Funktion in n mit Konstanten a, b und c t 8 n-1 t 9 n-1 Petra Mutzel 22

Average-Case Analyse Durchschnittliche Laufzeit über alle möglichen Eingabe-Instanzen bei vorgegebener Eingabegröße. Problem: Was ist eine durchschnittliche Eingabe Hier: s k =k/2 T(n)=Quadratische Funktion in n mit Konstanten a, b und c Petra Mutzel 23

Laufzeit-Analyse Genaue Laufzeitberechnung ist sehr aufwändig, deswegen Vereinfachung Wir betrachten nur die Ordnung der Laufzeit, wobei n als beliebig groß angenommen wird Wir sagen: f(n)=an+b ist in Θ(n) und g(n)=an 2 +bn+c ist in Θ(n 2 ) Wir sagen: f(n) wächst linear für große n und g(n) wächst quadratisch für große n Formale Definition von Θ: Donnerstag Petra Mutzel 24

Organisatorisches zur Vorlesung Inhalte der Vorlesung Literatur zur Vorlesung Organisatorisches zur Vorlesung, Klausur, Übung und Praktikum Petra Mutzel 25

Inhalte der Vorlesung 1. Einführung / Algorithmen-Analyse (O-Notation) 2. Abstrakte Datentypen und Datenstrukturen 3. Sortieralgorithmen 4. Suchalgorithmen (Binärsuche, B- und AVL- Bäume, Skiplisten) 5. Hashing 6. Graphenalgorithmen (BFS, DFS, Zshgskomp, MST, kürzeste Wege) 7. Optimierung (Heuristiken, B&B, Dyn. Prog.) 8. Geometrische Algorithmen Petra Mutzel 26

Literatur zur Vorlesung VO-Folien auf Web: ls11-www.cs.uni-dortmund.de/people/beume/dap2-09/ dap2.jsp Skript auf Web (demnächst) Bücher: R. Sedgewick: Algorithmen, Pearson Studium 2002, 2. Auflage (oder: Algorithmen in C++) T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein: Algorithmen eine Einführung, Ausgabe März 2007, Oldenbourg-Verlag T. Ottmann und P. Widmayr: Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag 2002, 4. Auflage 27

Organisatorisches zu Modul DAP2: Vorlesung DAP2, 4 SWS Di 12:15-14:00 im Audimax und Do 14:15-16:00 im HS 1, HG II Übung zu DAP2, 2 SWS 23 kleine Übungsgruppen Praktikum zu DAP2, 2 SWS 18 kleine Übungsgruppen, C++ Übungstests viel Zeit einplanen Petra Mutzel 28

Modulprüfung und Studienleistungen Klausur: Klausurtermin: Freitag, 31. Juli 2009 Nebentermin: Montag, 5. Oktober 2009 90 Min., Inhalte der Vorlesung, Übung hilfreich! Voraussetzungen für Klausurteilnahme (Bachelor): Erfolgreiche Teilnahme am DAP1-Praktikum Erfolgreiche Teilnahme an der Übung zu DAP2 Weitere Studienleistungen (Bachelor): Erfolgreiche Teilnahme am Praktikum zu DAP2 Petra Mutzel 29

Ablauf Übungsblätter: Übung zu DAP2 Abgabe Do 14 Uhr (Briefkästen Campus Süd), Ausgabe Do 16 Uhr (homepage) Übungsgruppen, ab 20.4. Anmeldung heute ab 14 Uhr bis Do 16.04.2009 über ASSES: http://ess.cs.uni-dortmund.de/assess/ 2 Übungstests während der Vorlesung (Termine werden noch angekündigt) Petra Mutzel

Erfolgreiche Teilnahme Übung zu DAP2 Anwesenheit (max. 2 mal Fehlen ohne Attest) und aktive Teilnahme bei Übungsgruppen und Präsenzaufgaben 4 Blöcke von Übungsblättern, mind. 40% der Punkte pro Block mind. 1 bestandener Übungstest (aus 2) Petra Mutzel

Übung zu DAP2 (. 20.4 Lernraumbetreuung (ab Mo 10.15-12.15, GB4 101 Di 10.45-11.45, OH14 340 Mi, 11.00-13.00, GB4 101 Fr, 12.00-13.00, OH14 340 Ansprechpartner Dirk Sudholt, Nicola Beume ( Woche Sprechstunde DAP2 (diese 16.4.2009, 16-17 Uhr, Nicola Beume, OH14 233 Petra Mutzel

Ablauf Praktikum zu DAP2 Praktikumsblätter: Ausgabe Di 12 Uhr (Homepage), Abgabe in den Praktikumsgruppen (Präsentation) Kurzaufgaben (Präsenzaufgaben) und Langaufgaben Praktikumsgruppen, ab 21.4. Anmeldung ab 14 Uhr bis Do 16.04.2009 über ASSES: http://ess.cs.uni-dortmund.de/assess/ Petra Mutzel 33

Praktikum zu DAP2 Erfolgreiche Teilnahme Anwesenheit an 11 Terminen (aus 14) Ersatztermine bei Feiertagen mind. 8 von 14 Punkten der Kurzaufgaben mind. 7 von 12 Punkten der Langaufgaben Petra Mutzel

Praktikum zu DAP2 (. 21.4 Lernraumbetreuung (Pools) (ab Di 10:15-11:45, OH14 U04 Mi 12:15-13:45, OH14 U04 Ansprechpartner Carsten Gutwenger Petra Mutzel

Weitere Informationen Sprechstunde von Petra Mutzel: Di 14:15 Uhr in OH14, R. 231 Aktuelle Informationen: ls11-www.cs.tu-dortmund.de/people/beume/dap2-09/dap2.jsp Petra Mutzel 36