Datenstrukturen, Algorithmen und Programmierung 2

Ähnliche Dokumente
Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Informatikgrundlagen (WS 2015/2016)

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

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

Algorithmen und Datenstrukturen CS1017

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Algorithmen und Berechnungskomplexität I

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen

Kap. 4.2: Binäre Suchbäume

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Laufzeitabschätzung

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Algorithmik - Kompaktkurs

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Grundlagen der Programmierung

Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen Einführung

Grundlagen der Programmierung

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

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

Einführung in die Informatik I Kapitel II.3: Sortieren

Informatik II, SS 2014

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

Sortieralgorithmen. Vorlesung Algorithmen und Datenstrukturen 2. Prof. Dr. W. P. Kowalk Universität Oldenburg

Teil 2 - Softwaretechnik. Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 2. Übersicht. Softwaretechnik

Grundlegende Sortieralgorithmen

Informatik I Komplexität von Algorithmen

Algorithmen und Datenstrukturen (für ET/IT)

Kapitel 8. Rekursionsgleichungen. Landau-Symbole. Lösen von Rekursionsgleichungen Allgemeines Iterationsmethode Spezialfälle Erzeugende Funktionen

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Komplexität von Algorithmen

Datenstrukturen und Algorithmen

Datenstrukturen, Algorithmen und Programmierung II

Algorithmen & Datenstrukturen 1. Klausur

Einführung in die Programmierung

Abschnitt: Algorithmendesign und Laufzeitanalyse

Sortierverfahren für Felder (Listen)

Grundlagen der Informatik I (Studiengang Medieninformatik)

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Algorithmen mit Python

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben

Folge 13 - Quicksort

3. Ziel der Vorlesung

Tutoraufgabe 1 (2 3 4 Bäume):

Programmiertechnik II

Webbasierte Programmierung

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Grundlagen: Algorithmen und Datenstrukturen

Suchen und Sortieren Sortieren. Heaps

Die Programmiersprache C Eine Einführung

Algorithmen und Datenstrukturen 1 VL Übungstest WS 2010/ November 2010

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

14. Rot-Schwarz-Bäume

4.Grundsätzliche Programmentwicklungsmethoden

Logik und diskrete Strukturen

1. Grundlagen Sortieren Vertauschen Selektion Einfügen Quicksort Suchen...

Datenstrukturen und Algorithmen

Kombinatorische Optimierung Vorlesung für den Bereich Diplom/Master Informatik

JAVA - Suchen - Sortieren

Vorkurs Informatik WiSe 15/16

Kapitel 0: Organisatorisches

Laufzeit und Komplexität

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Datenstrukturen & Algorithmen

VBA-Programmierung: Zusammenfassung

Theoretische Informatik 1

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Algorithmik II. SS 2003 Prof. Dr. H. Stoyan Lehrstuhl für Informatik 8 ( Künstliche Intelligenz) stoyan@informatik.uni-erlangen.

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Einführung in die Informatik 1

Programmiertechnik II

Algorithmik Funke/Bahrdt/Krumpe/Mendel/Seybold SS Übungsblatt 4

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Kapitel 5: Dynamisches Programmieren Gliederung

Prof. Dr. Margarita Esponda

Übung zur Vorlesung Multimedia im Netz

Programmieren I + II

Programmieren I + II

Algorithmische Methoden zur Netzwerkanalyse

Programmiertechnik II

2. Übungstest. Motivation Überblick. Motivation für B-Bäume. B-Bäume. Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

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

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

Modulbeschreibung Fakultät Gebäudetechnik und Informatik gültig ab WS 2010/11. Niveaustufe: Bachelor

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

(Stand: )

(27 - Selbstanordnende lineare Listen)

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Einführung und Motivation

Wintersemester 2010/2011 Rüdiger Westermann Institut für Informatik Technische Universität München

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 2008 8. April 2008 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 als Text (Deutsch, Englisch, ) als Computerprogramm (Java, C++, ) 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 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 Analyse: Datenstruktur: ARRAY oder LISTE? 11

InsertionSort(ref A) 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

Ablauf von InsertionSort(ref A) 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

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 17

Analyse von InsertionSort(ref A) 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 t 3 t 4 s k t 5 t 6 t 7 t 8 t 9 (s k 1) (s k 1) (s k 1) Petra Mutzel 18

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

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 t 3 t 4 s k t 5 t 6 (s k 1) (s k 1) T(n)=Lineare Funktion in n mit Konstanten a und b t 7 t 8 t 9 (s k 1) Petra Mutzel 20

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 t 3 t 4 s k t 5 t 6 t 7 (s k 1) (s k 1) (s k 1) T(n)=Quadratische Funktion in n mit Konstanten a, b und c t 8 t 9 Petra Mutzel 21

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 22

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 23

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

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 25

Literatur zur Vorlesung VO-Folien auf Web: ls11-www.cs.uni-dortmund.de/people/gutweng/dap2-08/dap2.jsp Skript auf Web (ab April) 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 A. Levition: Introduction to the Design and Analysis of Algorithms, 2. Auflage, Addison Wesley 2006 26

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 16 kleine Übungsgruppen eine Globalübung Praktikum zu DAP2, 2 SWS kleine Übungsgruppen, C++ Übungstests viel Zeit einplanen Petra Mutzel 27

Klausur: Modulprüfung und Studienleistungen Klausurtermin: Freitag, 25. Juli 2008 Nebentermin: Montag, 6. Oktober 2008 90 Min., Inhalte der Vorlesung, Übung hilfreich! Voraussetzungen für Klausurteilnahme: Erfolgreiche Teilnahme an der Übung zu DAP2 Weitere Studienleistungen: Erfolgreiche Teilnahme am Praktikum zu DAP2 Petra Mutzel 28

Übung zu DAP2 Ablauf: Übungsblätter: Abgabe donnerstags 13 Uhr (Briefkästen Campus Süd), Ausgabe ab Do 10.4. Übungsgruppen, ab 21.4. Globalübung freitags 12:15-14 Uhr in OH14 E23 2 Übungstests (am 13.5. und 10.6. in der VO) Erfolgreiche Teilnahme: Regelmäßige Teilnahme an Übungsgruppen 1 bestandener Übungstest Lernräume: GB IV R. 101-103 Anmeldung: heute in VO Mindestens 60% aller Übungspunkte (inkl. Übungstests) 29

Praktikum zu DAP2 Ablauf: Praktikumsblätter alle 2 Wochen: Abgabe in den Praktikumsgruppen, ab 9.4., Ausgabe 0.-tes Blatt: heute Einführung in C++ am 11.+18.4. statt Globalübung freitags 12:15-14 Uhr in OH14 E23 Challenge ab ca. Juni (freiwillig) Erfolgreiche Teilnahme: Anmeldung: heute in VO Mindestens 60% aller Praktikumspunkte Petra Mutzel 30

Weitere Informationen Verantwortlicher für Übung und Praktikum: Carsten Gutwenger, LS11 Carsten. Gutwenger <at> cs. tu-dortmund. de Sprechstunde von Petra Mutzel: Di 14:15 Uhr in OH14, R. 231 Aktuelle Informationen: ls11-www.cs.tu-dortmund.de/people/gutweng/dap2-08/dap2.jsp Petra Mutzel 31