ws 03/041 algorithmentheorie 01 - einleitung prof. dr. s. albers prof. dr. th. ottmann
TRANSCRIPT
![Page 1: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/1.jpg)
WS 03/04 1
Algorithmentheorie
01 - Einleitung
Prof. Dr. S. Albers
Prof. Dr. Th. Ottmann
![Page 2: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/2.jpg)
2WS 03/04
Organisatorisches
Vorlesung: Mo 9.00 – 11.00 Uhr Mi 9.00 – 11.00 Uhr, alle 14 Tage
HS 00-026, Geb.101
Übungen: alle 14 Tage
Klausur: März 2004 Teilnahmevoraussetzung: 50% der Übungspunkte
![Page 3: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/3.jpg)
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
![Page 4: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/4.jpg)
4WS 03/04
Algorithmen und Datenstrukturen
Entwurfsprinzipien und Analysetechniken für Algorithmen
• Divide and Conquer• Greedy Prinzip• Dynamische Programmierung• Randomisierung• Amortisierte Analyse
![Page 5: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/5.jpg)
5WS 03/04
Algorithmen und Datenstrukturen
Problem-/Anwendungsbereich
• Geometrische Algorithmen• Algebraische Algorithmen• Graphenalgorithmen• Datenstrukturen• Internet-Algorithmen• Optimierungsverfahren• Zeichenkettenverarbeitung
![Page 6: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/6.jpg)
WS 03/04 6
Divide and Conquer
![Page 7: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/7.jpg)
7WS 03/04
Das Divide - and - Conquer Prinzip
• Quicksort• Formulierung und Analyse des Prinzips• Geometrisches Divide – and – Conquer
- Closest-Pair- Segmentschnitt- Voronoi-Diagramm
![Page 8: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/8.jpg)
8WS 03/04
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 then 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 9: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/9.jpg)
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 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 berechneten Teillösungen zu einer Gesamtlösung zusammen
![Page 10: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/10.jpg)
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, n1 = n2 = n/2 Divide- und Mergeaufwand : DM(n)
T(1) = a
T(n) = 2T(n/2) + DM(n)
![Page 11: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/11.jpg)
11WS 03/04
Geometrisches Divide - and - Conquer
Closest Pair Problem:Bestimme für eine Menge S von n Punkten ein Paar mit
minimaler Distanz
![Page 12: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/12.jpg)
12WS 03/04
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 13: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/13.jpg)
13WS 03/04
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
pd
d = min {dl, dr }
![Page 14: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/14.jpg)
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
![Page 15: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/15.jpg)
15WS 03/04
Merge - Schritt
d
d
d d
d = min {dl, dr}
p
S
Sl Sr
p1
p3
p4
p2
![Page 16: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/16.jpg)
16WS 03/04
Implementierung
Sortiere Eingabepunkte anfangs einmal gemäß steigenden
x-Koordinaten O(n log n)
Sind Teilprobleme Sl , Sr gelöst, so erzeuge Liste der Punkte in
S gemäß steigenden y-Koordinaten (Mergesort)
![Page 17: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/17.jpg)
17WS 03/04
Laufzeit (Divide-and-Conquer)
Rate Lösung durch wiederholtes Einsetzen Verifiziere durch Induktion
Lösung: O(n log n)
![Page 18: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/18.jpg)
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
![Page 19: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/19.jpg)
19WS 03/04
Verifiziere durch Induktion
![Page 20: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/20.jpg)
20WS 03/04
Segmentschnittproblem
Bestimme alle Paare sich schneidender Segmente
...........
......
![Page 21: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/21.jpg)
21WS 03/04
Segmentschnittproblem
Bestimme alle Paare sich schneidender Segmente
A
BC
D
E
A.
B.
C.
D.
E.
.A.D
.B.C
.E
Die getrennte Repräsentation der Segmenteerlaubt eine Aufteilung
![Page 22: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/22.jpg)
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 S1 und S2
else S enthält keine Schnitte
![Page 23: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/23.jpg)
23WS 03/04
ReportCuts
A
B
C
D
E
AD
BC
ES
S1 S2
1. Divide-Schritt
2. Conquer
ReportCuts(S1); ReportCuts(S2)
![Page 24: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/24.jpg)
24WS 03/04
ReportCuts
3. Merge: ???
Mögliche Schnitte für ein horizontales Segment in S1
Fall 1: beide Endpunkte in S1
h
S1 S2
![Page 25: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/25.jpg)
25WS 03/04
ReportCuts
Fall 2: nur ein Endpunkt von h in S1
2 a) rechter Endpunkt in S1
h
S1 S2
![Page 26: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/26.jpg)
26WS 03/04
ReportCuts
2 b) linker Endpunkt von h in S1
h
S1
rechter Endpunktin S2
h
S1
rechter Endpunkt nicht in S2
S2
S2
![Page 27: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/27.jpg)
27WS 03/04
Verfahren: ReportCuts(S)
3. Merge:
Gib Schnitte aus zwischen vertikalen Segmenten in S2
und horizontalen Segmenten in S1, bei denen linker Endpunkt in S1 und rechter Endpunkt weder in S1 noch S2
Analog für S1
S1 S2
![Page 28: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/28.jpg)
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
![Page 29: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/29.jpg)
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,y1,y2) ist ein vertikales Segment
L(S) = ∅ R(S) = ∅ V(S) = {[y1,y2]}
![Page 30: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/30.jpg)
30WS 03/04
Merge-Schritt
L(Si), R(Si), V(Si) i=1,2 seien berechnet S = S1 S2
L(S) = (L(S1) \ R(S2)) L(S2)
R(S) = (R(S2) \ L(S1)) R(S1)
V(S) = V(S1) V(S2)
L,R: sortiert nach steigenden y-Koordinaten verkettete ListenV: sortiert nach steigenden unteren Endpunkten verkettete Liste
![Page 31: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/31.jpg)
31WS 03/04
Ausgabe der Schnittpunkte
V(S2)
h1
h2
h3
L(S1)
![Page 32: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/32.jpg)
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
![Page 33: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/33.jpg)
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
![Page 34: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/34.jpg)
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
![Page 35: WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann](https://reader034.vdokument.com/reader034/viewer/2022051400/55204d6249795902118b6856/html5/thumbnails/35.jpg)
35WS 03/04
Berechnung des Voronoi-Diagramms
Ergebnis: Das fertige Voronoi-Diagramm
Laufzeit: Bei n gegebenen Orten O(n log n)