Erste Vorlesung: Motivation/Einordnung Algorithmik Sommersemester 2009 Steffen Lange 0/1, Folie 1 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Organisatorisches Vorlesung • • wöchentlich; ein bzw. zwei Blöcke Folien im Netz (/* bitte zur Vorlesung mitbringen */) Übung http://www.fbi.h-da.de/~slange • • 14-tägig; ein Block; in Gruppen Übungsblätter im Netz • bitte zur Übung durcharbeiten Anregungen / Kommentare / Fragen • • 0/1, Folie 2 per e-Mail: per Telefon: © 2009 Prof. Steffen Lange [email protected] 06151–16 –8417 - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Literatur • • 0/1, Folie 3 Juraj Hromkovič, Randomisierte Algorithmen, B.G. Teubner Verlag, 2004. Juraj Hromkovič, Algorithmics for Hard Problems, 2nd Edition, Springer, 2003. • Rolf Klein, Algorithmische Geometrie, 2. Auflage, Springer 2005. • Uwe Schöning, Algorithmik, Spektrum Akademischer Verlag, 2001. © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Grundbegriffe • es seien a[1] = 1, a[2] = 3, a[3] = -5, a[4] = 2, a[5] = -1, a[6] = 4 • (einige) Teilsummen dieser Folge: • • • • a[1] + ... + a[6] = 4 (/* Bezeichnung: f(1,6) */) a[2] + ... + a[4] = 0 (/* Bezeichnung: f(2,4) */) a[4] + ... + a[6] = 5 (/* Bezeichnung: f(4,6) */) ... ... das Ziel besteht darin, für eine gegebene Zahlenfolge die größte Teilsummen zu bestimmen und das möglichst effizient (/* d.h. mit möglichst wenigen Elementaroperationen */) 0/1, Folie 4 © 2009 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 klein sein */) • es sei a[1],...,a[n] eine Folge rationaler Zahlen und 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: • eine Zahl z, so daß gilt: • • 0/1, Folie 5 © 2009 Prof. Steffen Lange - HDa/FbI - es gibt i,k mit f(i,k) = z es gibt kein i‘,k‘ mit f(i‘,k‘) > z 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 gibt f(i,k) aus. Analyse von Algorithmus 1 • • • 0/1, Folie 6 A(n) = ... = 1/2*(n*(n-1)) V(n) = ... = 1/2*(n*(n+1)) - 1 T(n) = A(n) + V(n) = n2 - 1 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Algorithmus 2 (/* divide and conquer */) • • • 0/1, Folie 7 a[1],...,a[n] sei eine Folge rationaler Zahlen, wobei n eine Zweierpotenz ist für alle zulässigen Paare (i,k) seien Crr(i,k) und Clr(i,k) wie folgt definiert: • Crr(i,k) = max { f(j,k) | i ≤ j ≤ k } • Clr(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 } © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Algorithmus 2 (/* divide and conquer */) 1. 2. Falls n = 1, so gib a[1] aus. Falls n > 1, berechne mit Algorithmus 2 die Werte Cmax(1,n/2) und Cmax(n/2+1,n) sowie separat die Werte für Crr(1,n/2) und Clr(n/2+1,n). Bestimme M = max { Cmax(1,n/2),Cmax(n/2+1,n),Crr(1,n/2)+Clr(n/2+1,n) } und gib M aus. 3. Analyse von Algorithmus 2 • 0/1, Folie 8 T(n) = 2*T(n/2) + 2n - 1 = ... = 2n*log(n) - n + 1 © 2009 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 gib das a[i] mit a[i] = max { a[1],...,a[n] } aus. Schleifeninvariante ... für jedes z mit 2 ≤ z ≤ n gilt: • • 0/1, Folie 9 Max = max { Cmax(1,z),0 } Max* = max { Crr(1,z),0 } © 2009 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 gib das a[i] mit a[i] = max { a[1],...,a[n] } aus. Analyse von Algorithmus 3 • • • 0/1, Folie 10 A(n) = n - 1 V(n) ≤ 1 + 2*(n - 1) + 1 + n - 1 = 3n - 1 T(n) = A(n) + V(n) ≤ 4n - 2 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Vergleich der Algorithmen 0/1, Folie 11 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 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Beziehung zu „realeren“ Fragestellungen 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. ... 0/1, Folie 12 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Beispiel – Daten für die Aktie xyz Tag 0 1 2 3 4 5 6 ... Info 120 -0.5 2 -1 1 3.5 -13 ... Aufgabe ... Bestimme anhand der gegebenen Zahlenfolge nachträglich einen besten Einkaufstag, einen besten Verkaufstag und den dabei erzielbaren (absoluten) Gewinn. 0/1, Folie 13 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel Beispiel – Daten für die Aktie xyz Tag 0 1 2 3 4 5 6 ... Info 120 -0.5 2 -1 1 3.5 -13 ... Einkaufstag: 0 Verkaufstag: 1 Einkaufstag: 0 Verkaufstag: 2 Einkaufstag: 1 Verkaufstag: 5 Gewinn: -0.5 € Gewinn: 1.5 € Gewinn: 5.5 € Lösungsansatz ... • 0/1, Folie 14 finde Tage i und k (/* 0 < i ≤ k */), so daß die Summe der Kursänderungen der Tage i, i + 1, ..., k maximal ist • in diesem Fall ist der Tag i - 1 der beste Einkaufstag und der Tag k der beste Verkaufstag © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Einführendes Beispiel „angepaßte“ Variante des Algorithmus 3 1. 2. 3. 0/1, Folie 15 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 } (/* Bei der Berechnung wird sich gemerkt, für welches Paar (i,k) aktuell f(i,k) = Max gilt. */) Falls Max > 0, so gib das Paar (i,k) mit f(i,k) = Max und den Wert Max aus. (/* Der beste Einkaufstag ist dann der Tag i-1 und der zugehörige Verkaufstag der Tag k */) Sonst gib das Paar (i,i) mit a[i] = max { a[1],...,a[n] } und den Wert a[i] aus. (/* Der beste Einkaufstag ist dann der Tag i-1 und der zugehörige Verkaufstag der Tag i */) © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Zielstellungen • • • 0/1, Folie 16 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 © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik Erste Vorlesung: Motivation/Einordnung Gliederung 1. 2. 3. 4. 5. 6. 0/1, Folie 17 Laufzeit von Algorithmen Sortier- und Selektionsverfahren Paradigmen des Algorithmenentwurfs Ausgewählte Datenstrukturen Algorithmische Geometrie Randomisierte Algorithmen © 2009 Prof. Steffen Lange - HDa/FbI - Algorithmik