Algorithmik - fbi.h

Werbung
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
Herunterladen