ws 06/07 algorithmentheorie 01 - einleitung prof. dr. th. ottmann tobias lauer
TRANSCRIPT
![Page 1: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/1.jpg)
WS 06/07
Algorithmentheorie
01 - Einleitung
Prof. Dr. Th. Ottmann
Tobias Lauer
![Page 2: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/2.jpg)
2WS 06/07
Organisatorisches
Vorlesung: Mo. 14 - 16 Uhr, HS 00-036, Geb.101 Do. 14 - 16 Uhr, HS 00-036, Geb.101
alle 14 Tage
Übungen: Do. 14 - 16 Uhr alle 14 Tage (erster Termin: 9. November)
Einteilung und Räume werden noch bekanntgegeben.
Termin- und Themenübersicht auf Kurs-Website: http://ad.informatik.uni-freiburg.de/lehre/ws0607/algtheo/
![Page 3: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/3.jpg)
3WS 06/07
Organisatorisches
Klausur: Teilnahmevoraussetzungen: - 50% der Übungsaufgaben bearbeitet und
abgegeben - 1-mal in den Übungen vorgerechnet
Bonus bei bestandener Klausur: Verbesserung um
- 1/3 Notenstufe, wenn 50% der Übungspunkte erzielt
- 2/3 Notenstufe, wenn 80% der Übungspunkte erzielt
![Page 4: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/4.jpg)
4WS 06/07
Literatur
Th. Ottmann, P. Widmayer: Algorithmen und Datenstrukturen 4. Auflage, Spektrum Akademischer Verlag, Heidelberg, 2002
Th. Cormen, C. Leiserson, R. Rivest, C. Stein: Introduction to Algorithms, Second Edition, MIT Press, 2001
Originalliteratur
Genauere Angaben zum Thema werden jeweils auf der Kurs-Seite im Web veröffentlicht
![Page 5: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/5.jpg)
5WS 06/07
Algorithmen und Datenstrukturen
Entwurfsprinzipien und Analysetechniken für Algorithmen
• Divide and Conquer• Greedy Prinzip• Dynamische Programmierung• Randomisierung• Amortisierte Analyse
![Page 6: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/6.jpg)
6WS 06/07
Algorithmen und Datenstrukturen
Problem-/Anwendungsbereiche
• Geometrische Algorithmen• Algebraische Algorithmen• Graphenalgorithmen• Datenstrukturen• Internet-Algorithmen• Optimierungsverfahren• Zeichenkettenverarbeitung
![Page 7: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/7.jpg)
WS 06/07
Divide and Conquer
„Teile und herrsche“
lat. „divide at impera“
![Page 8: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/8.jpg)
8WS 06/07
Das Divide-and-Conquer Prinzip
• Auffrischung: Quicksort
• Formulierung und Analyse des Prinzips
• Geometrisches Divide-and-Conquer- Closest-Pair- Segmentschnitt- Voronoi-Diagramm
• Fast Fourier Transformation
![Page 9: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/9.jpg)
9WS 06/07
Quick(Fl) v Quick(Fr)
Quicksort: Sortieren durch Teilen
F
Fl < v v Fr > v
v
function Quick (F : Folge) : Folge;
{liefert zu unsortierter Folge F die sortierte}
begin
if |F| ≤ 1
Quick := F
else { wähle Pivotelement v aus F;
teile F in Fl mit Elementen < v
und in Fr mit Elementen > v
Quick := }
end;
![Page 10: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/10.jpg)
10WS 06/07
Formulierung des D&C Prinzips
Divide-and-Conquer Verfahren zur Lösung eines Problems der Größe n
1. Divide:
n > c: Teile das Problem in k Teilprobleme der Größe n1,...,nk auf (k 2)
n c: Löse das Problem direkt
2. Conquer:
Löse die k Teilprobleme auf dieselbe Art (rekursiv)
3. Merge:
Füge die k berechneten Teillösungen zu einer Gesamtlösung zusammen
![Page 11: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/11.jpg)
11WS 06/07
Analyse
T(n): Maximale Anzahl von Schritten, um ein Problem
der Größe n zu lösen
T(n) =
Spezialfall: k = 2, n1 = n2 = n/2 Divide- und Mergeaufwand : DM(n)
T(1) = a
T(n) = 2∙T(n/2) + DM(n)
![Page 12: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/12.jpg)
12WS 06/07
Geometrisches Divide-and-Conquer
Closest Pair Problem:Bestimme für eine Menge S von n Punkten ein Paar mit
minimaler Distanz (bzw. bestimme die minimale Distanz)
![Page 13: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/13.jpg)
13WS 06/07
Divide-and-Conquer Ansatz
1. Divide : Teile S in zwei gleichgroße Mengen Sl und Sr
2. Conquer: dl = mindist(Sl) dr = mindist(Sr )3. Merge: dlr = min {d(pl ,pr) | pl Sl , pr Sr } return min {dl , dr ,dlr }
SrSl
S dl
dlr
dr
![Page 14: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/14.jpg)
14WS 06/07
Divide-and-Conquer Ansatz
1. Divide : Teile S in zwei gleichgroße Mengen Sl und Sr
2. Conquer: dl = mindist(Sl) dr = mindist(Sr )3. Merge: ?
SrSl
S dl dr
![Page 15: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/15.jpg)
15WS 06/07
Divide-and-Conquer Ansatz
1. Divide : Teile S in zwei gleichgroße Mengen Sl und Sr
2. Conquer: dl = mindist(Sl) dr = mindist(Sr )3. Merge: dlr = min {d(pl ,pr) | pl Sl , pr Sr }
return min {dl , dr ,dlr }Berechnung von dlr :
SrSl
S
p d
d = min {dl , dr }
![Page 16: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/16.jpg)
16WS 06/07
Merge-Schritt
1. Betrachte nur Punkte im Abstand d von der Mittellinie, gemäß aufsteigenden y-Koordinaten
2. Betrachte zu jedem Punkt p alle Punkte q mit y-Abstand höchstens d; es gibt maximal 7 solche Punkte
![Page 17: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/17.jpg)
17WS 06/07
Merge-Schritt
d
d
d d
d = min { dl , dr }
p
S
Sl Sr
p1
p3
p4
p2
![Page 18: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/18.jpg)
18WS 06/07
Implementierung
Sortiere Eingabepunkte anfangs einmal gemäß steigenden
x-Koordinaten O(n log n)
Sind Teilprobleme Sl , Sr gelöst, so erzeuge Liste der Punkte inS gemäß steigenden y-Koordinaten (Mergesort)
![Page 19: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/19.jpg)
19WS 06/07
Laufzeit (Divide-and-Conquer)
Rate Lösung durch wiederholtes Einsetzen Verifiziere durch Induktion
Lösung: O(n log n)
![Page 20: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/20.jpg)
20WS 06/07
Rate durch wiederholtes Einsetzen
T(n) =
![Page 21: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer](https://reader034.vdocuments.site/reader034/viewer/2022051614/55204d6549795902118bad61/html5/thumbnails/21.jpg)
21WS 06/07
Verifiziere durch Induktion
Annahme: n = 2i
i = 1:
i-1 i: