WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Kap. 13 Sweep-Line Algorithmen Kap Schnittprobleme
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten KMP, BM.
Kapitel 6: Klassifizierung von Sortiertechniken
G.Heyer Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Wintersemester 2000 / 2001 Prof. Dr. Gerhard Heyer Institut für Informatik.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Algorithmentheorie 04 –Hashing
Algorithmentheorie 6 – Greedy-Verfahren
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Prof.Dr.S. Albers Prof. Dr. Th. Ottmann
WS 03/04 Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Dynamische Programmierung (2) Matrixkettenprodukt
Algorithmentheorie 02 – Polynomprodukt und Fast Fourier Transformation
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Prof. Dr. S. Albers Prof. Dr. Th. Ottmann
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (3) Konstruktion optimaler Suchbäume Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmentheorie 03 – Randomisierung (Closest Pair)
Algorithmen und Datenstrukturen
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Union-Find-Strukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (09 - Weitere Sortierverfahren) Prof. Th. Ottmann.
Geometrisches Divide and Conquer
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Punktbeschriftung mit vier Rechtecken gleicher Höhe (Anzahlmaximierung) Julia Löcherbach.
Diskrete Mathe 9 Vorlesung 9 SS 2001
Geoinformation II Vorlesung 4 SS 2001 Voronoi-Diagramme.
Konstruktion der Voronoi-Diagramme II
Geoinformation II (6. Semester)
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 5 SS 2001 Segmentschnitt II (n Segmente)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 7 SS 2000 Punkt-in-Polygon-Verfahren I (Trapezkarte)
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Polynome und schnelle Fourier-Transformation
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Auslegung eines Vorschubantriebes
Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Diskrete Mathematik II
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Analyse der Laufzeit von Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Voronoi-Diagramme.
Geoinformation II 6. Sem. Vorlesung April 2000 Geometrische Algorithmen - ein einführendes, größeres Beispiel für ein Semester-begleitendes Programmier.
Algorithmen und Datenstrukturen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung 4 4. Mai 2000 Voronoi-Diagramm.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen
 Präsentation transkript:

WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann

2WS 03/04 Organisatorisches Vorlesung:Mo 9.00 – Uhr Mi 9.00 – Uhr, alle 14 Tage HS , Geb.101 Übungen:alle 14 Tage Klausur:März 2004 Teilnahmevoraussetzung: 50% der Übungspunkte

3WS 03/04 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 Orginalliteratur Genauere Angaben zum Thema werden jeweils im Web veröffentlicht

4WS 03/04 Algorithmen und Datenstrukturen Entwurfsprinzipien und Analysetechniken für Algorithmen Divide and Conquer Greedy Prinzip Dynamische Programmierung Randomisierung Amortisierte Analyse

5WS 03/04 Algorithmen und Datenstrukturen Problem-/Anwendungsbereich Geometrische Algorithmen Algebraische Algorithmen Graphenalgorithmen Datenstrukturen Internet-Algorithmen Optimierungsverfahren Zeichenkettenverarbeitung

WS 03/046 Divide and Conquer

7WS 03/04 Das Divide - and - Conquer Prinzip Quicksort Formulierung und Analyse des Prinzips Geometrisches Divide – and – Conquer -Closest-Pair -Segmentschnitt -Voronoi-Diagramm

8WS 03/04 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 then 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;

9WS 03/04 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 berechneten Teillösungen zu einer Gesamtlösung zusammen

10WS 03/04 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)

11WS 03/04 Geometrisches Divide - and - Conquer Closest Pair Problem: Bestimme für eine Menge S von n Punkten ein Paar mit minimaler Distanz

12WS 03/04 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

13WS 03/04 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 }

14WS 03/04 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

15WS 03/04 Merge - Schritt d d dd d = min {d l, d r } p S SlSl SrSr p1p1 p3p3 p4p4 p2p2

16WS 03/04 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)

17WS 03/04 Laufzeit (Divide-and-Conquer) Rate Lösung durch wiederholtes Einsetzen Verifiziere durch Induktion Lösung: O(n log n)

18WS 03/04 Rate durch wiederholtes Einsetzen T(n) = 2T(n/2) + an = 2(2T(n/4) + an/2) + an = 4T(n/4) + 2an = 4(2T(n/8) + an/4) + 2an = 8T(n/8) + 3an

19WS 03/04 Verifiziere durch Induktion

20WS 03/04 Segmentschnittproblem Bestimme alle Paare sich schneidender Segmente

21WS 03/04 Segmentschnittproblem Bestimme alle Paare sich schneidender Segmente A B C D E A. B. C. D. E..A.D.B.C.E Die getrennte Repräsentation der Segmente erlaubt eine Aufteilung

22WS 03/04 ReportCuts Input: Menge S bestehend aus vertikalen Segmenten und Endpunkten von horizontalen Segmenten. Output: Alle Schnittpunkte von vertikalen Segmenten mit horizontalen Segmenten, von denen mindestens ein Endpunkt in S ist. 1. Divide if |S| > 1 then teile S mittels einer vertikalen Geraden in zwei gleichgroße Mengen S 1 und S 2 else S enthält keine Schnitte

23WS 03/04 ReportCuts A B C D E A D B C E S S1S1 S2S2 1. Divide-Schritt 2. Conquer ReportCuts(S 1 ); ReportCuts(S 2 )

24WS 03/04 ReportCuts 3. Merge: ??? Mögliche Schnitte für ein horizontales Segment in S 1 Fall 1: beide Endpunkte in S 1 h S1S1 S2S2

25WS 03/04 ReportCuts Fall 2: nur ein Endpunkt von h in S 1 2 a) rechter Endpunkt in S 1 h S1S1 S2S2

26WS 03/04 ReportCuts 2 b) linker Endpunkt von h in S 1 h S1S1 rechter Endpunkt in S 2 h S1S1 rechter Endpunkt nicht in S 2 S2S2 S2S2

27WS 03/04 Verfahren: ReportCuts(S) 3. Merge: Gib Schnitte aus zwischen vertikalen Segmenten in S 2 und horizontalen Segmenten in S 1, bei denen linker Endpunkt in S 1 und rechter Endpunkt weder in S 1 noch S 2 Analog für S 1 S1S1 S2S2

28WS 03/04 Implementierung Menge S L(S): y-Koordinaten aller linken Endpunkte in S, deren rechter Partner nicht in S R(S): y-Koordinaten aller rechten Endpunkte in S, deren linker Partner nicht in S V(S): y-Intervalle der vertikalen Segmente in S

29WS 03/04 Basisfälle Fall 1: S enthält nur ein Element Fall 1.1: s = (x,y) ist ein linker Endpunkt L(S) = {y} R(S) = V(S) = Fall 1.2: s = (x,y) ist ein rechter Endpunkt L (S)= R(S) = {y} V(S) = Fall 1.3: s = (x,y 1,y 2 ) ist ein vertikales Segment L(S) = R(S) = V(S) = {[y 1,y 2 ]}

30WS 03/04 Merge-Schritt L(S i ), R(S i ), V(S i ) i=1,2 seien berechnet S = S 1 S 2 L(S) = (L(S 1 ) \ R(S 2 )) L(S 2 ) R(S) = (R(S 2 ) \ L(S 1 )) R(S 1 ) V(S) = V(S 1 ) V(S 2 ) L,R: sortiert nach steigenden y-Koordinaten verkettete Listen V: sortiert nach steigenden unteren Endpunkten verkettete Liste

31WS 03/04 Ausgabe der Schnittpunkte V(S 2 ) h1h1 h2h2 h3h3 L(S 1 )

32WS 03/04 Laufzeit Eingabe (vertikale Seg., linke/rechte Endpunkte horizontale Seg.) wird anfangs einmal sortiert; abgespeichert in Array. Divide-and-Conquer: T(n) = 2T(n/2) + an + Größe der Ausgabe T(1) = O(1) O(n log n + k) k = #Schnittpunkte

33WS 03/04 Berechnung des Voronoi-Diagramms Gegeben: Eine Menge von Orten (sites) Gesucht: Eine Unterteilung der Ebenen in Regionen gleicher nächster Nachbarn Divide : Einteilung der Menge der Orte in zwei Hälften

34WS 03/04 Berechnung des Voronoi-Diagramms Conquer: Rekursive Berechnung der beiden kleineren Voronoi-Diagramme Abbruchbedingung: Voronoi-Diagramm eines einzelnen Ortes ist die gesamte Ebene Merge: Verbindung der Diagramme durch einen Kantenzug

35WS 03/04 Berechnung des Voronoi-Diagramms Ergebnis: Das fertige Voronoi-Diagramm Laufzeit: Bei n gegebenen Orten O(n log n)