Original
Eingabe
Ausgabe
Wintersemester 2016/2017
Ubungsbl
atter und Tutorien
Ubungsbl
atter werden jeweils donnerstags online gestellt.
Sie sind eine Woche spater vor der Vorlesung abzugeben.
Wintersemester 2016/2017
Feedback
Bitte ermoglichen Sie uns, die Vorlesung laufend zu verbessern!
https:
//halma.mpi-inf.mpg.de/internet/survey.nsf/Survey?OpenForm
Achtung
Die Daten sind so anonym, wie Sie sich durch das Internet bewegen.
Ich habe keinen Zugriff auf IP-Adressen.
Bei strafrechtlicher Relevanz k
onnen die Systemadministratoren gema
Datenschutzgesetz auf u
bermittelte und gespeicherte personenbezogene
Daten zugreifen.
Wintersemester 2016/2017
Literatur
Bucher (im Semesterapparat: http://goo.gl/cEvGoK)
Cormen, Leiserson, Rivest, Stein: Algorithmen - Eine Einf
uhrung,
Oldenbourg 2010
Dietzfelbinger, Mehlhorn, Sanders: Algorithmen und Datenstrukturen
- Die Grundwerkzeuge, Springer 2014
Mehlhorn, Sanders: Algorithms and data structures
- The basic toolbox, Springer 2008
Skripte/Folien
Skript von Prof. Blaser (Winter 2015/2016)
http://www-cc.cs.uni-saarland.de/course/50/
Folien von Prof. Seidel (Winter 2014/2015)
http://www-tcs.cs.uni-sb.de/course/60/
Wintersemester 2016/2017
Lernziele
Die Studierenden lernen
die wichtigsten Methoden des Entwurfs von Algorithmen und
Datenstrukturen kennen: Teile-und-Herrsche, Dynamische
Programmierung, inkrementelle Konstruktion, Greedy, Dezimierung,
Hierarchisierung, Randomisierung.
Algorithmen und Datenstrukturen bzgl. Zeit- und Platzverbrauch f
ur das
u
bliche RAM Maschinenmodell zu analysieren und auf Basis dieser
Analysen zu vergleichen.
verschiedene Arten der Analyse (schlechtester Fall, amortisiert, erwartet)
einzusetzen.
wichtige effiziente Datenstrukturen und Algorithmen kennen.
Wintersemester 2016/2017
Kompetenzen
Sie sollen
die Fahigkeit erwerben, vorhandene Methoden durch theoretische
Analysen und Abwagungen f
ur ihre Verwendbarkeit in tatsachlich
auftretenden Szenarien zu pr
ufen.
die Fahigkeit trainieren, Algorithmen und Datenstrukturen unter dem
Aspekt von Performanzgarantien zu entwickeln oder anzupassen.
Aktuelles
Warum Merkel an die Algorithmen will
Spiegel Online, 26.10.16, http://goo.gl/KonnOE
Softwarefehler lie Schiaparelli abst
urzen
Spiegel Online, 26.10.16, http://goo.gl/FMy78m
Wintersemester 2016/2017
Algorithmus
Was sagt Wikipedia dazu?
http://de.wikipedia.org/wiki/Algorithmus
Ein Algorithmus ist eine eindeutige Handlungsvorschrift zur Losung eines
Problems oder einer Klasse von Problemen. Algorithmen bestehen aus
endlich vielen, wohldefinierten Einzelschritten.[1] Somit konnen sie zur
Ausf
uhrung in einem Computerprogramm implementiert, aber auch in
menschlicher Sprache formuliert werden. Bei der Problemlosung wird eine
bestimmte Eingabe in eine bestimmte Ausgabe u
uhrt.[2]
berf
1 Hartley Rogers, Jr.: Theory of Recursive Functions and
Effective Computability, S. 2
2 Cormen, Leiserson, Rivest, Stein: Algorithmen - Eine
Einf
uhrung, S. 5
Wintersemester 2016/2017
Beispiel
Problem 1 (Auswahlproblem)
Bestimme das k-kleinste von n Elementen
gegeben: Elemente a1 , . . . , an mit einer Ordnung sowie ein
k [n] := {1, . . . , n}
gesucht: a(k) f
ur eine Permutation : [n] [n] mit
a(1) a(2) a(n)
Wintersemester 2016/2017
Das RAM-Modell
Definition 2 (Random Access Machine)
Die Random Access Machine (RAM) ist ein abstraktes Maschinenmodell
mit
abzahlbar unendlich vielen Speicherzellen Si , i Z0 ,
endlich vielen Registern R1 , . . . , Rk und
einer arithmetisch-logischen Einheit (ALU).
Zu Beginn ist R1 = 1 und das Programm steht in S1 , . . . , SR2 .
Das Programm terminiert, wenn R1 auerhalb von [R2 ] liegt.
Ansonsten f
uhrt die ALU die Anweisung in SR1 aus und erhoht R1 um 1
sofern R1 in der Anweisung selbst nicht u
berschrieben wird:
Ri SRj , SRj Ri , Ri Rj Rh
Wintersemester 2016/2017
Komplexit
at
Wintersemester 2016/2017
Asymptotische Notation
Definition 3 (Landau-Symbole)
Sei f : Z0 R eine Funktion.
O(f (n)) := {g : Z0 R : c, n0 > 0n n0 : |g(n)| c |f (n)|}
die Menge der Funktionen, die h
ochstens so schnell wachsen wie f .
(f (n)) := {g : Z0 R : c, n0 > 0n n0 : |f (n)| c |g(n)|}
die Menge der Funktionen, die mindestens so schnell wachsen wie f .
(f (n)) := {g : Z0 R : c1,2 , n0 > 0n n0 :
c1 |f (n)| |g(n)| c2 |f (n)|}
die Menge der Funktionen, die genauso so schnell wachsen wie f .
o(f (n)) := {g : Z0 R : c > 0n0 > 0n n0 : |g(n)| c |f (n)|}
die Menge der Funktionen, die gegen
uber f verschwinden.
(f (n)) := {g : Z0 R : c > 0n0 > 0n n0 : |f (n)| c |g(n)|}
die Menge der Funktionen, denen gegen
uber f verschwindet.
Wintersemester 2016/2017
Veranschaulichung
Wintersemester 2016/2017
Eigenschaften
Theorem 4
1. g O(f ) f (g), (f ) = O(f ) (f ), g (f ) f (g).
2. logb n (log2 n) f
ur alle b > 1
3. logd2 (n) o(n ) f
ur alle d 0 und > 0
Beweisskizze
1. Einsetzen der Definitionen
2. Logarithmengesetz: logb a =
logc a
logc b
Wintersemester 2016/2017
Wintersemester 2016/2017
Theorem 5
F
ur alle n Z0 gilt
P
1. Hn := nk=1 k1 = ln(n) + O(1)
n
2. n! = 2n ne 1 + n1
(harmonische Zahlen)
(Sterlingformel)
Wintersemester 2016/2017
Wintersemester 2016/2017
F
alle
Wintersemester 2016/2017
Pseudocode
Es gibt keinen einheitlichen Standard f
ur Pseudocode.
Leitlinien
Pseudocode soll leicht lesbar, aber eindeutig interpretierbar sein.
D.h. von Experten in ein RAM-Programm u
bersetzt werden konnen,
evtl. u
ber den Umweg einer hinreichend hardware-nahen imperativen
Sprache wie z.B. C/C++.
Sinnvoll abstrahieren durch Prozeduren/Funktionen/Klassen.
Aquivalenz
zu RAM-Programmen
Man kann es axiomatisch hinnehmen oder sich induktiv klarmachen,
d.h. Makros bauen: JZ ; while(C){I; }
Wintersemester 2016/2017
Wintersemester 2016/2017
Wintersemester 2016/2017
Rechenregeln
Sei Tn (I) die max. Laufzeit der Anweisungen I auf Eingaben der Groe n.
Sequenzielle Anweisungen: Tn (I; J) = Tn (I) + Tn (J)
P`(n)
Tn (while(C){I; }) = Tn (C) + i=1 Tn (I, C, i) mit `(n) als Schranke
an die Interationen und Tn (I, C, i) als Laufzeit von Iteration i mit
anschlieendem Test von C.
Wintersemester 2016/2017
f
ur n > 2
Wintersemester 2016/2017
Master-Theorem
Theorem 6 (Master-Theorem)
Wenn T : Z R0 die Rekurrenzen
(
a
f
ur n n0 ,
T (n)
s
c n + d T (dn/be + en ) f
ur n > n0
f
ur Konstanten a, c, d > 0, b > 1, s, e 0 und einer Folge von ganzen
Zahlen en mit dn/be < en e f
ur alle n n0 erf
ullt, dann gilt
f
ur d < bs ,
O(n )
T (n) = O(ns log n) f
ur d = bs ,
O(nlogb d )
f
ur d > bs .
Wintersemester 2016/2017
Beweisskizze f
ur das Master-Theorem
k1
X
di Nis
i=0
dk a
+ c2s ns
k1
X
i=0
Falle
T (n)
d < bs
2s ns
n
s0
s s
c2 n
+ 1d/b
s
= O(ns )
d
bs
i
d = bs
2s ns
n
s0
+ c2s ns logb ( 2n
n
0 )
s
= O(n log n)
d > bs
c2s n
s dk
dk a
+ d/bs01
= O(dk )
Wintersemester 2016/2017
//Invariante: 2i +
Pn1
j=0
A[j] 2j
if i < n then
A[i] 1
return A
Laufzeitkomplexitat
worst-case: T (n) := max{time(A) : A In } n
P
average-case: T (n) := |I1n | AIn time(A) 2
In = {0, 1}n
[Tafel]
Wintersemester 2016/2017
reelle Zufallsvariable X : R
Messbarkeitsbedingung: x R : { : X() x}
Erwartungswert E[X]
Sei X eine diskrete, reelle Zufallsvariable,
die die Werte xi , i I Z1 ,
P
annehmen kann, dann ist E[X] := iI xi p(X = xi ).
Wintersemester 2016/2017
1
1+i
= Hn 1 + ln n
Wintersemester 2016/2017
Las-Vegas-Algorithmus
berechnet immer das richtige Ergebnis,
aber die Laufzeit ist eine Zufallsvariable.
Monte-Carlo-Algorithmus
immer die gleiche Laufzeit,
aber das Ergebnis kann mit einer durch eine Konstanten c < 1
beschrankte Wahrscheinlichkeit falsch sein.
Wintersemester 2016/2017