Algorithmik - Kompaktkurs Sommersemester 2012 Steffen Lange 0/1, Folie 1 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
Organisatorisches Vorlesung Folien im Netz (/* bitte zur Vorlesung mitbringen */) Übung Übungsblätter im Netz bitte zur Übung durcharbeiten http://www.fbi.h-da.de/~slange Anregungen / Kommentare / Fragen per e-mail: slange@fbi.h-da.de per Telefon: 06151 16 8417 0/1, Folie 2 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
Literatur Th.H. Cormen, Ch.E. Leiserson, R. Rivest, C. Stein, Algorithmen - Eine Einführung, 2. Auflage, Oldenbourg Verlag, 2007. Uwe Schöning, Algorithmik, Spektrum Akademischer Verlag, 2001. Rolf Klein, Algorithmische Geometrie, 2. Auflage, Springer 2005. Juraj Hromkovič, Algorithmics for Hard Problems, 2nd Edition, Springer, 2003. 0/1, Folie 3 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
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 Kursä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. 0/1, Folie 4 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
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. 0/1, Folie 5 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
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 0/1, Folie 6 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
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 (/* 1 i k */), so daß die Summe der Kursänderungen für die Tage i, i+1,..., k maximal ist 0/1, Folie 7 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
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 also 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 } 0/1, Folie 8 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
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 0/1, Folie 9 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
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 0/1, Folie 10 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik C rechts (1,4) = 2 C links (5,8) = 3.5
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 0/1, Folie 11 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
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 } 0/1, Folie 12 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
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 0/1, Folie 13 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
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 0/1, Folie 14 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
Zielstellungen Verständnis ausgewählter Prinzipien zum Entwurf effizienter Algorithmen Kenntnis von der Umsetzung dieser Prinzipien im Gebiet algorithmische Geometrie Fähigkeit, komplizierte Algorithmen in Bezug auf deren Laufzeit zu analysieren 0/1, Folie 15 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik
Gliederung 1. Grundlagen 2. Sortier- und Selektionsverfahren 3. Paradigmen des Algorithmenentwurfs 4. Ausgewählte Datenstrukturen 5. Algorithmische Geometrie 6. Umgang mit algorithmisch schwierigen Problemen 0/1, Folie 16 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik