Erste Vorlesung: Motivation/Einordnung Algorithmik - Kompaktkurs Sommersemester 2012 Steffen Lange 0/1, Folie 1 © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Organisatorisches Vorlesung • Folien im Netz (/* bitte zur Vorlesung mitbringen */) Übung http://www.fbi.h-da.de/~slange • Übungsblätter im Netz • bitte zur Übung durcharbeiten Anregungen / Kommentare / Fragen • • 0/1, Folie 2 per e-Mail: per Telefon: © 2012 Prof. Steffen Lange [email protected] 06151–16 –8417 - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Literatur • • • • 0/1, Folie 3 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. © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel 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 Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel 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 Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Beispiel – Daten für die Aktie xyz • 0/1, Folie 6 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 € © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel 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 ... • 0/1, Folie 7 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 © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel 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 0/1, Folie 8 zulässige Eingabe: • Folge a[1],...,a[n] von rationalen Zahlen zulässige Ausgabe: • bestimme z = max { f(i,k) | 1≤ i ≤ k ≤ n } © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Algorithmus 1 (/* normal */) 1. 2. 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 */) Bestimme ein Paar (i,k) für das f(i,k) maximal ist und gib f(i,k) aus. Analyse von Algorithmus 1 • • • 0/1, Folie 9 A(n) = ... = 1/2*(n*(n-1)) V(n) = ... = 1/2*(n*(n+1)) - 1 T(n) = A(n) + V(n) = n2 - 1 © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel 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 Crechts(i,k) und Clinks(i,k) wie folgt definiert: • Crechts(i,k) = max { f(j,k) | i ≤ j ≤ k } • Clinks(i,k) = max { f(i,j) | i ≤ j ≤ k } für alle zulässigen Paare (i,k) sei Cmax(i,k) wie folgt definiert: • Cmax(i,k) = max { f(j,m) | i ≤ j ≤ m ≤ k } Cmax(1,8) = 8 Tag 1 2 3 4 5 6 7 8 K-änd. -0.5 2 -1 1 3.5 -13 3 5 Crechts(1,4) = 2 0/1, Folie 10 © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Clinks(5,8) = 3.5 Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Algorithmus 2 (/* divide and conquer; Berechnung von cmax(1,n) */) 1. 2. Falls n = 1, so gib a[n] aus. Falls n > 1, so gehe gehe wie folgt vor: • • • Berechne mit diesem Algorithmus Cmax(1,n/2) und Cmax(n/2+1,n). Berechne Crechts(1,n/2) und Clinks(n/2+1,n). Bestimme M = max { Cmax(1,n/2),Cmax(n/2+1,n),Crechts(1,n/2)+Clinks(n/2+1,n) } und gib M aus. Analyse von Algorithmus 2 • 0/1, Folie 11 T(n) = 2*T(n/2) + 2n - 1 = ... = 2n*log(n) - n + 1 © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Algorithmus 3 (/* clever */) 1. 2. 3. Setze Max = max { a[1],0 } und Max* = Max. Für z = 2,...,n: • Bestimme Max* = max { Max*+a[z],0 }. • Max = max { Max*,Max } 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: • • 0/1, Folie 12 Max = max { Cmax(1,z),0 } Max* = max { Crechts(1,z),0 } © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Algorithmus 3 (/* clever */) 1. 2. Setze Max = max { a[1],0 } und Max* = Max. Für z = 2,...,n: • Bestimme Max* = max { Max*+a[z],0 }. • Max = max { Max*,Max } Falls Max > 0, so gib Max aus. Sonst bestimme z = max { a[1],...,a[n] } und gib z aus. 3. Analyse von Algorithmus 3 • • • 0/1, Folie 13 A(n) = n - 1 V(n) ≤ 1 + 2*(n - 1) + 1 + n - 1 = 3n - 1 T(n) = A(n) + V(n) ≤ 4n - 2 © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Vergleich der Algorithmen 0/1, Folie 14 Anzahl der Elemente normal divide & conquer clever 4 (= 22) 15 13 14 16 (=24) 255 113 62 64 (=26) 4095 705 254 256 (=28) 65535 3841 1022 1024 (=210) 1048575 19457 4094 © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Zielstellungen • • • 0/1, Folie 15 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 © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Gliederung 1. 2. 3. 4. 5. 6. 0/1, Folie 16 Grundlagen Sortier- und Selektionsverfahren Paradigmen des Algorithmenentwurfs Ausgewählte Datenstrukturen Algorithmische Geometrie Umgang mit algorithmisch schwierigen Problemen © 2012 Prof. Steffen Lange - HDa/FbI - Algorithmik