WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.

21
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer

Transcript of WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.

Page 1: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

20WS 06/07

Rate durch wiederholtes Einsetzen

T(n) =

Page 21: WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.

21WS 06/07

Verifiziere durch Induktion

Annahme: n = 2i

i = 1:

i-1 i: