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

Ähnliche Dokumente
Algorithmik - Kompaktkurs

Modul Algorithmik, T-Katalog

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 3: Untere Schranken für algorithmische Probleme Gliederung

Kapitel 3: Sortierverfahren Gliederung

Kapitel 2: Sortier- und Selektionsverfahren Gliederung

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Theoretische Informatik

Algorithmen und Datenstrukturen

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

Algorithmen & Datenstrukturen

Algorithmen und Datenstrukturen

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

Kapitel 1: Motivation / Grundlagen Gliederung

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

Kapitel 8: Bipartite Graphen Gliederung der Vorlesung

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

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Informatik II Algorithmen & Datenstrukturen

Algorithmen und Datenstrukturen

Automaten und Formale Sprachen

Kapitel 4: Minimal spannende Bäume Gliederung der Vorlesung

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Kapitel 4: Minimale spannende Bäume Gliederung der Vorlesung

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

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

Diskrete Algorithmische Mathematik Lorenz ADM 1

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Algorithmen I. Dennis Hofheinz. Übungen: Lukas Barth und Lisa Kohl. Institut für theoretische Informatik Web:

Kapitel 7: Flüsse in Netzwerken und Anwendungen Gliederung der Vorlesung

Informatik II, SS 2014

ADS 2: Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Sommersemester 2007

Algorithmen I. Dennis Hofheinz und Henning Meyerhenke. Übungen: Christian Staudt und Christoph Striecks

Algorithmen und Datenstrukturen CS1017

Datenstrukturen und Algorithmen

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

3.3 Laufzeit von Programmen

Datenstrukturen und Algorithmen

Kapitel 5: Dynamisches Programmieren Gliederung

Klausur Algorithmentheorie

Klausur Algorithmen und Datenstrukturen

Informatikgrundlagen (WS 2016/2017)

Range-Search. Operationen: Welche Datenstrukturen sind geeignet? Arrays? Listen? AVL-Bäume? Splay-Bäume?

Informatik 1 (WS 2018/2019)

Verteilte Algorithmen und Datenstrukturen. Prof. Dr. Christian Scheideler Institut für Informatik Universität Paderborn

Kapitel 2: Zahlentheoretische Algorithmen Gliederung

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

Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Wintersemester 2012/13. Dr. Tobias Lasser. 1 Organisation

Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Sommersemester Dr. Tobias Lasser. 1 Organisation

Kapitel 5: Minimale spannende Bäume Gliederung der Vorlesung

Kapitel 1: Fallstudie Bipartite Graphen Gliederung der Vorlesung

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Personen. Termine. Vorlesung. Sommersemester Dr. Tobias Lasser

Kapitel 9: Lineare Programmierung Gliederung

Übersicht über Informatik und Softwaresystemtechnik WS 99/00, Prof. Dr. Andreas Schwill

... sind (wohldefinierte, endliche) Folgen von Anweisungen, die aus einer Eingabe eine Ausgabe produzieren. Algorithmus.

Institut für Programmierung und Reaktive Systeme 27. Mai Programmieren II. 12. Übungsblatt

Einführung in die Informatik IV

Algorithmen und Berechnungskomplexität I

Algorithmen und Datenstrukturen

Informatik II. Willkommen zur Vorlesung! Das Team. Übungsbetrieb. Vorlesung am D-BAUG der ETH Zürich

Kapitel 4: Netzplantechnik Gliederung der Vorlesung

Algorithmen I. Prof. Jörn Müller-Quade. Übungen: Björn Kaidel, Sebastian Schlag und Sascha Witt

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen, Algorithmen und Programmierung 2

Algorithmen und Datenstrukturen

Übersicht. Datenstrukturen und Algorithmen. Die Teile-und-Beherrsche-Methode. Übersicht. Vorlesung 3: Rekursionsgleichungen (K4)

Uwe Schöning. Algorithmik. Spektrum Akademischer Verlag Heidelberg Berlin

Informatik (für Chemie-Ingenieurwesen) Sommersemester 2014

Algorithmik Kap. 2: Laufzeit von Algorithmen

Learning Object-Oriented Programming. Algorithmen. Algorithmusbegriff. Klärung der Herkunft des Begriffs Formale Definition von Algorithmus

Grundlagen der Programmierung

Kapitel 4: Komplexitätstheorie Gliederung

Aufgaben zur Klausurvorbereitung

Seminar Datenbanken Martin Gerstmann

Theoretische Informatik

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (fu r ET/IT) Personen. Programm heute. Wintersemester 2012/13. Wintersemester 2012/13. Dr.

Algorithmen und Datenstrukturen (für ET/IT)

Organisatorisches und Überblick

Algorithmen & Komplexität

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

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT)

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

Rückblick: Längste gemeinsame Zeichenkette

Kapitel 4: Komplexitätstheorie Gliederung

Proseminar Online Algorithmen, Prof. Dr. Rolf Klein

Kapitel 2: Formale Sprachen Gliederung. 0. Grundbegriffe 1. Endliche Automaten 2. Formale Sprachen 3. Berechnungstheorie 4. Komplexitätstheorie

Klausur Algorithmentheorie

Algorithmen und Datenstrukturen 1

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Personen. Termine. Vorlesung. Sommersemester Dr. Tobias Lasser

Klausur Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Transkript:

Datenstrukturen Sommersemester 2010 Steffen Lange 1/1, Folie 1 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Organisatorisches Vorlesung wöchentlich; zwei Blöcke Folien im Netz (/* bitte zur Vorlesung mitbringen */) Übungsblätter im Netz (/* bei Bedarf */) http://www.fbi.h-da.de/~slange Anregungen / Kommentare / Fragen per e-mail: slange@fbi.h-da.de per Telefon: 06151 16 8417 1/1, Folie 2 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Literatur T. Ottmann, P. Widmayer, Algorithmen und Datenstrukturen, BI Wissenschaftsverlag, 1990. H. Reß, G. Viebeck, Datenstrukturen und Algorithmen in C++, Hanser Verlag, 2003. R. Klein, Algorithmische Geometrie, 2. Auflage, Springer Verlag 2005. U. Schöning, Algorithmik, Spektrum Akademischer Verlag, 2001. Th.H. Cormen, Ch.E. Leiserson, R. Rivest, C. Stein, Algorithmen - Eine Einführung, 2. Auflage, Oldenbourg Verlag, 2007. 1/1, Folie 3 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Aufgabenstellung Ein großes Wirtschaftsmagazin will eine Analyse der Börsenentwicklung der letzten 5 Jahre erstellen... Dabei soll u.a. für jede Aktie nachträglich ein bester Einkaufstag und Verkaufstag festgestellt werden.... Das Wirtschaftsmagazin hat Informationen über die Börsennotierungen gekauft. Für jede Aktie gibt es eine Zahlenfolge. Die erste Zahl ist der Kurs der Aktie am ersten Börsentag und jede folgende Zahl gibt in der Reihenfolge der Börsentage die absolute Kursveränderung gegenüber dem Vortag an.... Anhand der gegebenen Zahlenfolge soll der im gegebenen Zeitraum durch einen einmaligen Kauf und Verkauf der Aktie maximal erzielbare Gewinn bestimmt werden. 1/1, Folie 4 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Beispiel Daten für die Aktie xyz Kurs der Aktie am 0. Tag: 120 Tag 1 2 3 4 5 6... K-änd. -0.5 2-1 1 3.5-13... Aufgabe... Anhand der gegebenen Zahlenfolge soll der im gegebenen Zeitraum durch einen einmaligen Kauf und Verkauf der Aktie maximal erzielbare Gewinn bestimmt werden. 1/1, Folie 5 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Beispiel Daten für die Aktie xyz Kurs der Aktie am 0. Tag: 120 Tag 1 2 3 4 5 6... K-änd. -0.5 2-1 1 3.5-13... Einkaufstag: 0 Verkaufstag: 1 Gewinn: -0.5 Einkaufstag: 0 Verkaufstag: 5 Gewinn: 5.0 Einkaufstag: 0 Verkaufstag: 2 Gewinn: 1.5 Einkaufstag: 1 Verkaufstag: 5 Gewinn: 5.5 1/1, Folie 6 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Beispiel Daten für die Aktie xyz Kurs der Aktie am 0. Tag: 120 Tag 1 2 3 4 5 6... K-änd. -0.5 2-1 1 3.5-13... Lösungsansatz... finde Tage i und k (/* 0 < i k */), so daß die Summe der Kursänderungen für die Tage i, i+1,..., k maximal ist... offenbar ist dann der Tag i-1 der beste Einkaufstag und der Tag k der beste Verkaufstag 1/1, Folie 7 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

algorithmische Fragestellung finde einen möglichst effizienten Algorithmus zur Lösung des folgenden algorithmischen Problems (/* die Anzahl der benötigten Vergleiche V(n) und der benötigten Additionen A(n) soll klein sein */) es sei a[1],...,a[n] eine Folge rationaler Zahlen für alle Paare (i,k) mit 1 i k n sei f(i,k) wie folgt definiert: k f(i,k) = Σ a[j] j=i zulässige Eingabe: Folge a[1],...,a[n] von rationalen Zahlen zulässige Ausgabe: bestimme z = max { f(i,k) 1 i k n } 1/1, Folie 8 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Algorithmus 1 (/* normal */) 1. Berechne nacheinander für jedes zulässige Paar (i,k) den Wert von f(i,k) (/* benutze dabei, daß f(i,k+1) = f(i,k) + a[k+1] gilt */) 2. Bestimme ein Paar (i,k) für das f(i,k) maximal ist und gib f(i,k) aus. Analyse von Algorithmus 1 A(n) =... = 1/2*(n*(n-1)) V(n) =... = 1/2*(n*(n+1)) - 1 T(n) = A(n) + V(n) = n 2-1 1/1, Folie 9 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Algorithmus 2 (/* divide and conquer */) a[1],...,a[n] sei eine Folge rationaler Zahlen, wobei n eine Zweierpotenz ist für alle zulässigen Paare (i,k) seien die Werte C rechts (i,k) und C links (i,k) wie folgt definiert: C rechts (i,k) = max { f(j,k) i j k } C links (i,k) = max { f(i,j) i j k } für alle zulässigen Paare (i,k) sei C max (i,k) wie folgt definiert: C max (i,k) = max { f(j,m) i j m k } C max (1,8) = 8 Tag 1 2 3 4 5 6 7 8 K-änd. -0.5 2-1 1 3.5-13 3 5 C rechts (1,4) = 2 C links (5,8) = 3.5 1/1, Folie 10 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Algorithmus 2 (/* divide and conquer; Berechnung von c max (1,n) */) 1. Falls n = 1, so gib a[n] aus. 2. Falls n > 1, so gehe gehe wie folgt vor: Berechne mit diesem Algorithmus C max (1,n/2) und C max (n/2+1,n). Berechne C rechts (1,n/2) und C links (n/2+1,n). Bestimme M = max { C max (1,n/2),C max (n/2+1,n),c rechts (1,n/2)+C links (n/2+1,n) } und gib M aus. Analyse von Algorithmus 2 T(n) = 2*T(n/2) + 2n - 1 =... = 2n*log(n) - n + 1 1/1, Folie 11 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Algorithmus 3 (/* clever */) 1. Setze Max = max { a[1],0 } und Max* = Max. 2. Für z = 2,...,n: Bestimme Max* = max { Max*+a[z],0 }. Max = max { Max*,Max } 3. Falls Max > 0, so gib Max aus. Sonst bestimme z = max { a[1],...,a[n] } und gib z aus. Schleifeninvariante... für jedes z mit 2 z n gilt: Max = max { C max (1,z),0 } Max* = max { C rechts (1,z),0 } 1/1, Folie 12 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Algorithmus 3 (/* clever */) 1. Setze Max = max { a[1],0 } und Max* = Max. 2. Für z = 2,...,n: Bestimme Max* = max { Max*+a[z],0 }. Max = max { Max*,Max } 3. Falls Max > 0, so gib Max aus. Sonst bestimme z = max { a[1],...,a[n] } und gib z aus. Analyse von Algorithmus 3 A(n) = n - 1 V(n) 1 + 2*(n - 1) + 1 + n - 1 = 3n - 1 T(n) = A(n) + V(n) 4n - 2 1/1, Folie 13 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Vergleich der Algorithmen Anzahl der Elemente normal divide & conquer clever 4 (= 2 2 ) 15 13 14 16 (=2 4 ) 255 113 62 64 (=2 6 ) 4095 705 254 256 (=2 8 ) 65535 3841 1022 1024 (=2 10 ) 1048575 19457 4094 1/1, Folie 14 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Zielstellungen Kenntnis von Entwurfsmethoden für effiziente Algorithmen und Datenstrukturen für wichtige Probleme Kenntnis grundlegender Algorithmen und Datenstrukturen Verständnis für die Wechselwirkung zwischen Datenstrukturen und Algorithmen Fähigkeit, die Effizienz von Algorithmen zu analysieren 1/1, Folie 15 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen

Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 1/1, Folie 16 2010 Prof. Steffen Lange - HDa/FbI - Datenstrukturen