Algorithmik - Kompaktkurs - fbi.h

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