WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer
2WS 06/07 Organisatorisches Vorlesung:Mo Uhr, HS , Geb.101 Do Uhr, HS , Geb.101 alle 14 Tage Übungen:Do Uhr alle 14 Tage (erster Termin: 9. November) Einteilung und Räume werden noch bekanntgegeben. Termin- und Themenübersicht auf Kurs-Website:
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
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
5WS 06/07 Algorithmen und Datenstrukturen Entwurfsprinzipien und Analysetechniken für Algorithmen Divide and Conquer Greedy Prinzip Dynamische Programmierung Randomisierung Amortisierte Analyse
6WS 06/07 Algorithmen und Datenstrukturen Problem-/Anwendungsbereiche Geometrische Algorithmen Algebraische Algorithmen Graphenalgorithmen Datenstrukturen Internet-Algorithmen Optimierungsverfahren Zeichenkettenverarbeitung
WS 06/07 Divide and Conquer Teile und herrsche lat. divide at impera
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
9WS 06/07 Quick(F l ) v Quick(F r ) Quicksort: Sortieren durch Teilen F F l < vvF r > 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 F l mit Elementen < v und in F r mit Elementen > v Quick := } end;
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 n 1,...,n k 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
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, n 1 = n 2 = n/2 Divide- und Mergeaufwand : DM(n) T(1) = a T(n) = 2T(n/2) + DM(n)
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)
13WS 06/07 Divide-and-Conquer Ansatz 1.Divide :Teile S in zwei gleichgroße Mengen S l und S r 2.Conquer:d l = mindist(S l ) d r = mindist(S r ) 3.Merge:d lr = min {d(p l,p r ) | p l S l, p r S r } return min {d l, d r,d lr } SrSr SlSl S dldl d lr d r
14WS 06/07 Divide-and-Conquer Ansatz 1.Divide :Teile S in zwei gleichgroße Mengen S l und S r 2.Conquer:d l = mindist(S l ) d r = mindist(S r ) 3.Merge:? SrSr SlSl S dldl d r
15WS 06/07 Divide-and-Conquer Ansatz 1.Divide :Teile S in zwei gleichgroße Mengen S l und S r 2.Conquer:d l = mindist(S l ) d r = mindist(S r ) 3.Merge:d lr = min {d(p l,p r ) | p l S l, p r S r } return min {d l, d r,d lr } Berechnung von d lr : SrSr SlSl S p d d = min {d l, d r }
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
17WS 06/07 Merge-Schritt d d dd d = min { d l, d r } p S SlSl SrSr p1p1 p3p3 p4p4 p2p2
18WS 06/07 Implementierung Sortiere Eingabepunkte anfangs einmal gemäß steigenden x-Koordinaten O(n log n) Sind Teilprobleme S l, S r gelöst, so erzeuge Liste der Punkte in S gemäß steigenden y-Koordinaten (Mergesort)
19WS 06/07 Laufzeit (Divide-and-Conquer) Rate Lösung durch wiederholtes Einsetzen Verifiziere durch Induktion Lösung: O(n log n)
20WS 06/07 Rate durch wiederholtes Einsetzen T(n) =
21WS 06/07 Verifiziere durch Induktion Annahme: n = 2 i i = 1: i-1 i: