Andreas Gemsa · Ubung Algorithmische Geometrie
Andreas Gemsa
Ubung Algorithmische Geometrie
LEHRSTUHL FUR ALGORITHMIK I · INSTITUT FUR THEORETISCHE INFORMATIK · FAKULTAT FUR INFORMATIK
Einfuhrung & Konvexe Hulle
21.04.2011
Andreas Gemsa · Ubung Algorithmische Geometrie
AlgoGeom-Team
Martin [email protected]
Raum 319Sprechzeiten: Termin per Mail vereinbaren
Dozent
Ubungsleiter
Andreas [email protected]
Raum 322Sprechzeiten: Termin per Mail vereinbaren
TermineVorlesung: Di 9:45 – 11:15 Uhr, Raum 131Ubung: Do 10:15 – 11:00 Uhr, Raum 131 (ab 21.04.)
Andreas Gemsa · Ubung Algorithmische Geometrie
AlgoGeom-Team
Martin [email protected]
Raum 319Sprechzeiten: Termin per Mail vereinbaren
Dozent
Ubungsleiter
Andreas [email protected]
Raum 322Sprechzeiten: Termin per Mail vereinbaren
TermineVorlesung: Di 9:45 – 11:15 Uhr, Raum 131Ubung: Do 10:15 – 11:00 Uhr, Raum 131 (ab 21.04.)
Andreas Gemsa · Ubung Algorithmische Geometrie
Ubungsbetrieb
Ausgabe Blatt 1for Woche i = 2 . . . 14 do
if Tag == Dienstag thenAusgabe Blatt iAbgabe Blatt (i− 1)
if Tag == Donnerstag & !isFeiertag(Tag) thenBesprechung Blatt (i− 1)
Bearbeitung der Aufgaben und Abgabe der Losungen inZweiergruppen erwunschtUbung wochentlich 45 Minutenabweichende Regelung an FeiertagenAchtung: erste Ubung am 21.04. in Raum −118
Andreas Gemsa · Ubung Algorithmische Geometrie
Ablauf
Besprechung UB1EinstiegGrundlegendesOptimalitat!
Kontextsensitiver Algorithmus
Optimalitat?!
Andreas Gemsa · Ubung Algorithmische Geometrie
Fragen
Fragen zur Vorlesung
Fragen zum Ablauf der Ubung
AlgorithmenLaufzeiten...
...
Einfuhrung & Konvexe Hulle
Andreas Gemsa · Ubung Algorithmische Geometrie
Ubungsblatt 1 - Aufgabe 1 - a)
Gerichtete Gerade g durch p = (px, py) und q = (qx, qy)
Punkt r = (rx, ry)
Andreas Gemsa · Ubung Algorithmische Geometrie
Ubungsblatt 1 - Aufgabe 1 - a)
A =
1 px py1 qx qy1 rx ry
Gerichtete Gerade g durch p = (px, py) und q = (qx, qy)
Punkt r = (rx, ry)
Andreas Gemsa · Ubung Algorithmische Geometrie
Ubungsblatt 1 - Aufgabe 1 - a)
A =
1 px py1 qx qy1 rx ry
Gerichtete Gerade g durch p = (px, py) und q = (qx, qy)
Punkt r = (rx, ry)
Beweise: Vorzeichen von det(A) zeigt an ob r linksoder rechts von g liegt.
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
p
q
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
p
q
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
p
qr
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
p
qr
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
p
qr
rp =
(rx − pxry − py
)
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
p
qr
rp =
(rx − pxry − py
)
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
p
qr
rp =
(rx − pxry − py
)
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
p
qr
npq =
(py − qyqx − px
)rp =
(rx − pxry − py
)
rp · npq = det(A)
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
A =
1 px py1 qx qy1 rx ry
Gerichtete Gerade g durch p = (px, py) und q = (qx, qy)
Punkt r = (rx, ry)
Beweise: Vorzeichen von det(A) zeigt an ob r linksoder rechts von g liegt.
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
A =
1 px py1 qx qy1 rx ry
Gerichtete Gerade g durch p = (px, py) und q = (qx, qy)
Punkt r = (rx, ry)
Beweise: Vorzeichen von det(A) zeigt an ob r linksoder rechts von g liegt.
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
A =
1 px py1 qx qy1 rx ry
Gerichtete Gerade g durch p = (px, py) und q = (qx, qy)
Punkt r = (rx, ry)
Beweise: Vorzeichen von det(A) zeigt an ob r linksoder rechts von g liegt.
+ b)
Beweise: |det(A)| = doppelter Flacheninhalt desDreiecks pqr
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - b)
p
q
r
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - b)
p
q
r
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - b)
p
q
r
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - b)
p
q
r
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - b)
p
q
r
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - b)
p
q
r
Apqr = |pq| · hh
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - b)
p
q
r
Apqr = |pq| · hhϕ
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - b)
p
q
r
Apqr = |pq| · hhϕ
ϕ
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
A =
1 px py1 qx qy1 rx ry
Gerichtete Gerade g durch p = (px, py) und q = (qx, qy)
Punkt r = (rx, ry)
Beweise: Vorzeichen von det(A) zeigt an ob r linksoder rechts von g liegt.
+ b)
Beweise: |det(A)| = doppelter Flacheninhalt desDreiecks pqr
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 1 - a)
A =
1 px py1 qx qy1 rx ry
Gerichtete Gerade g durch p = (px, py) und q = (qx, qy)
Punkt r = (rx, ry)
Beweise: Vorzeichen von det(A) zeigt an ob r linksoder rechts von g liegt.
+ b)
Beweise: |det(A)| = doppelter Flacheninhalt desDreiecks pqr
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 2Lemma:Fur eine endliche Punktmenge P ⊆ R2
ist CH(P ) ein konvexes Polygon, das Penthalt und dessen Ecken in P liegen.
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 2Lemma:Fur eine endliche Punktmenge P ⊆ R2
ist CH(P ) ein konvexes Polygon, das Penthalt und dessen Ecken in P liegen.
Mathematik: CH(P ) =⋂
C⊇P : C konvex
C
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 2Lemma:Fur eine endliche Punktmenge P ⊆ R2
ist CH(P ) ein konvexes Polygon, das Penthalt und dessen Ecken in P liegen.
a) Die konvexe Hulle CH(P ) enthalt alle Punkte aus P .
Mathematik: CH(P ) =⋂
C⊇P : C konvex
C
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 2Lemma:Fur eine endliche Punktmenge P ⊆ R2
ist CH(P ) ein konvexes Polygon, das Penthalt und dessen Ecken in P liegen.
a) Die konvexe Hulle CH(P ) enthalt alle Punkte aus P .
Mathematik: CH(P ) =⋂
C⊇P : C konvex
C
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 2Lemma:Fur eine endliche Punktmenge P ⊆ R2
ist CH(P ) ein konvexes Polygon, das Penthalt und dessen Ecken in P liegen.
a) Die konvexe Hulle CH(P ) enthalt alle Punkte aus P .
Mathematik: CH(P ) =⋂
C⊇P : C konvex
C
b) Schnitt zweier konvexen Mengen ist konvex.
Def: Eine Menge P ⊆ R2 heißt konvex, wenn fur je zweiPunkte p, q ∈ P auch gilt pq ∈ P .
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 2Lemma:Fur eine endliche Punktmenge P ⊆ R2
ist CH(P ) ein konvexes Polygon, das Penthalt und dessen Ecken in P liegen.
a) Die konvexe Hulle CH(P ) enthalt alle Punkte aus P .
Mathematik: CH(P ) =⋂
C⊇P : C konvex
C
b) Schnitt zweier konvexen Mengen ist konvex.
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 2Lemma:Fur eine endliche Punktmenge P ⊆ R2
ist CH(P ) ein konvexes Polygon, das Penthalt und dessen Ecken in P liegen.
a) Die konvexe Hulle CH(P ) enthalt alle Punkte aus P .
Mathematik: CH(P ) =⋂
C⊇P : C konvex
C
b) Schnitt zweier konvexen Mengen ist konvex.
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 2Lemma:Fur eine endliche Punktmenge P ⊆ R2
ist CH(P ) ein konvexes Polygon, das Penthalt und dessen Ecken in P liegen.
a) Die konvexe Hulle CH(P ) enthalt alle Punkte aus P .
Mathematik: CH(P ) =⋂
C⊇P : C konvex
C
b) Schnitt zweier konvexen Mengen ist konvex.
c) CH(P ) ist ein Polygon.
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 2Lemma:Fur eine endliche Punktmenge P ⊆ R2
ist CH(P ) ein konvexes Polygon, das Penthalt und dessen Ecken in P liegen.
a) Die konvexe Hulle CH(P ) enthalt alle Punkte aus P .
Mathematik: CH(P ) =⋂
C⊇P : C konvex
C
b) Schnitt zweier konvexen Mengen ist konvex.
c) CH(P ) ist ein Polygon.
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 2Lemma:Fur eine endliche Punktmenge P ⊆ R2
ist CH(P ) ein konvexes Polygon, das Penthalt und dessen Ecken in P liegen.
a) Die konvexe Hulle CH(P ) enthalt alle Punkte aus P .
Mathematik: CH(P ) =⋂
C⊇P : C konvex
C
b) Schnitt zweier konvexen Mengen ist konvex.
c) CH(P ) ist ein Polygon.
d) Alle Ecken von CH(P ) liegen in P.
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 2Lemma:Fur eine endliche Punktmenge P ⊆ R2
ist CH(P ) ein konvexes Polygon, das Penthalt und dessen Ecken in P liegen.
a) Die konvexe Hulle CH(P ) enthalt alle Punkte aus P .
Mathematik: CH(P ) =⋂
C⊇P : C konvex
C
b) Schnitt zweier konvexen Mengen ist konvex.
c) CH(P ) ist ein Polygon.
d) Alle Ecken von CH(P ) liegen in P.
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 3
a) Berechnung konvexer Hulle benotigt Ω(n log n).
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 3
a) Berechnung konvexer Hulle benotigt Ω(n log n).
b) Gegeben: einfaches [nicht notwendigerweise kovexes]Polygon. Konstruiere daraus in O(n) seine konvexe Hulle.Warum ist das kein Widerspruch zu a) ?
Andreas Gemsa · Ubung Algorithmische Geometrie
Aufgabe 3
a) Berechnung konvexer Hulle benotigt Ω(n log n).
b) Gegeben: einfaches [nicht notwendigerweise kovexes]Polygon. Konstruiere daraus in O(n) seine konvexe Hulle.Warum ist das kein Widerspruch zu a) ?
UpperConvexHull(P )
〈p1, p2, . . . , pn〉 ← sortiere P von links nach rechtsL← 〈p1, p2〉for i← 3 to n do
L.append(pi)while |L| > 2 and letzte 3 Punkte in L kein Rechtsknick do
entferne vorletzten Punkt aus L
return L
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
O(n)
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
O(n)O(h)
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Kontextsensitiver Algorithmus
O(n)O(h)
Laufzeit: O(nh)
GiftWrapping(P )
p0 = (0,∞), p1 = linkester Knoten in Pwhile true do
Berechne pk+1 ∈ P der den Winkel pj−1pjqi maximiert.if pk+1 == p1 then
break
return (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Optimalitat?!
Wann ist welcher Algorithmus besser?
Andreas Gemsa · Ubung Algorithmische Geometrie
Optimalitat?!
Viele Punkte auf CH(P ): O(n log n)
Wenige Punkte auf CH(P ): O(nh)
Wann ist welcher Algorithmus besser?
Graham Scan
Gift Wrapping
Andreas Gemsa · Ubung Algorithmische Geometrie
Optimalitat?!
Viele Punkte auf CH(P ): O(n log n)
Wenige Punkte auf CH(P ): O(nh)
Wann ist welcher Algorithmus besser?
Geht es vielleicht noch besser?
Graham Scan
Gift Wrapping
Andreas Gemsa · Ubung Algorithmische Geometrie
Optimalitat?!
Viele Punkte auf CH(P ): O(n log n)
Wenige Punkte auf CH(P ): O(nh)
Wann ist welcher Algorithmus besser?
Geht es vielleicht noch besser?
ja
Graham Scan
Gift Wrapping
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
Angenommen, wir kennen h:ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
Angenommen, wir kennen h:ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
Angenommen, wir kennen h:
Gift Wrapping
GrahamScan
ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
Angenommen, wir kennen h:ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
Angenommen, wir kennen h:ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
O(h log h)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
Angenommen, wir kennen h:ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
O(h log h)
O(n/h)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
Angenommen, wir kennen h:ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
O(h log h)
O(n/h)
O(n
logh
)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
O(logm)
Angenommen, wir kennen h:ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
O(h log h)
O(n/h)
O(n
logh
)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
O(logm)
Angenommen, wir kennen h:ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
O(h log h)
O(n/h)
O(n
logh
)
O(h) · O(n/h) = O(n)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
O(logm)
Angenommen, wir kennen h:ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
O(h log h)
O(n/h)
O(n
logh
)
O(h) · O(n/h) = O(n)
O(n
logh
)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
O(logm)
Angenommen, wir kennen h:ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
O(h log h)
O(n/h)
O(n
logh
)
O(h) · O(n/h) = O(n)
O(n
logh
)
O(n log h)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
O(logm)
ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
O(h log h)
O(n/h)
O(n
logh
)
O(h) · O(n/h) = O(n)
O(n
logh
)
Im Allgemeinen ist h aber unbekannt.
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
O(logm)
ChanHull(P ,h)
Unterteile P in Mengen Pi mit je h Knotenfor i von 1 bis n/h do
Berechne per GrahamScan CH(Pi)
p0 = (0,∞)p1 = linkester Knoten in Pfor j von 1 bis h do
for i von 1 bis n/h doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/hreturn (p1, . . . , ph)
O(h log h)
O(n/h)
O(n
logh
)
O(h) · O(n/h) = O(n)
O(n
logh
)
Im Allgemeinen ist h aber unbekannt.m
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
Im Allgemeinen ist h aber unbekannt.ChanHull(P ,m)
Unterteile P in Mengen Pi mit je m Knotenfor i von 1 bis n/m do
Berechne per GrahamScan CH(Pi)
p0 = (0,−∞)p1 = linkester Knoten au Pfor j von 1 bis m do
for i von 1 bis n/m doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/mreturn (p1, . . . , pm)
O(m logm)
O(n/m)
O(n
logm
)
O(logm)
O(m) · O(n/m) = O(n)
O(n
logm
)
O(n logm)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
Im Allgemeinen ist h aber unbekannt.ChanHull(P ,m)
Unterteile P in Mengen Pi mit je m Knotenfor i von 1 bis n/m do
Berechne per GrahamScan CH(Pi)
p0 = (0,−∞)p1 = linkester Knoten au Pfor j von 1 bis m do
for i von 1 bis n/m doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/mreturn (p1, . . . , pm)
O(m logm)
O(n/m)
O(n
logm
)
O(logm)
O(m) · O(n/m) = O(n)
O(n
logm
)
O(n logm)
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
ChanHull(P ,m)
Unterteile P in Mengen Pi mit je m Knoten...p0 = (0,−∞)p1 = linkester Knoten au Pfor j von 1 bis m do
for i von 1 bis n/m doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/mif pj+1 == p1 then
return (p1, . . . , pj)
return failure
O(n
logm
)
O(log h)
O(m) · O(n/m) = O(n)
O(n
logm
)
Im Allgemeinen ist h aber unbekannt.
Andreas Gemsa · Ubung Algorithmische Geometrie
Chans Algorithmus
ChanHull(P ,m)
Unterteile P in Mengen Pi mit je m Knoten...p0 = (0,−∞)p1 = linkester Knoten au Pfor j von 1 bis m do
for i von 1 bis n/m doBerechne Punkt qi ∈ Pi der den Winkelpj−1pjqi maximiert.
pj+1 = maxq1, . . . , qn/mif pj+1 == p1 then
return (p1, . . . , pj)
return failure
O(n
logm
)
O(log h)
O(m) · O(n/m) = O(n)
O(n
logm
)
Im Allgemeinen ist h aber unbekannt.
O(n logm)
Andreas Gemsa · Ubung Algorithmische Geometrie
Was ist mit m?
Vorschlage?
Andreas Gemsa · Ubung Algorithmische Geometrie
Was ist mit m?
FullChanHull(P )
for t = 0, 1, 2, . . . do
m = minn, 22tresult = ChanHull(P , m)if result != failure then
break
return result
Andreas Gemsa · Ubung Algorithmische Geometrie
Was ist mit m?
FullChanHull(P )
for t = 0, 1, 2, . . . do
m = minn, 22tresult = ChanHull(P , m)if result != failure then
break
return result
Laufzeit:
O(n logm) =O(n log 22
t)
Andreas Gemsa · Ubung Algorithmische Geometrie
Was ist mit m?
FullChanHull(P )
for t = 0, 1, 2, . . . do
m = minn, 22tresult = ChanHull(P , m)if result != failure then
break
return result
Laufzeit:
O(n logm) =O(n log 22
t)
?∑t=0
O(n log 22t)
Andreas Gemsa · Ubung Algorithmische Geometrie
Was ist mit m?
FullChanHull(P )
for t = 0, 1, 2, . . . do
m = minn, 22tresult = ChanHull(P , m)if result != failure then
break
return result
Laufzeit:
O(n logm) =O(n log 22
t)
O(log log h)∑t=0
O(n log 22t)
Andreas Gemsa · Ubung Algorithmische Geometrie
Was ist mit m?
FullChanHull(P )
for t = 0, 1, 2, . . . do
m = minn, 22tresult = ChanHull(P , m)if result != failure then
break
return result
Laufzeit:
O(n logm) =O(n log 22
t)
O(log log h)∑t=0
O(n log 22t) = O(n)
O(log log h)∑t=0
O(2t)
Andreas Gemsa · Ubung Algorithmische Geometrie
Was ist mit m?
FullChanHull(P )
for t = 0, 1, 2, . . . do
m = minn, 22tresult = ChanHull(P , m)if result != failure then
break
return result
Laufzeit:
O(n logm) =O(n log 22
t)
O(log log h)∑t=0
O(n log 22t) = O(n)
O(log log h)∑t=0
O(2t)
= O(n) · O(2log log h+1)
Andreas Gemsa · Ubung Algorithmische Geometrie
Was ist mit m?
FullChanHull(P )
for t = 0, 1, 2, . . . do
m = minn, 22tresult = ChanHull(P , m)if result != failure then
break
return result
Laufzeit:
O(n logm) =O(n log 22
t)
O(log log h)∑t=0
O(n log 22t) = O(n)
O(log log h)∑t=0
O(2t)
= O(n) · O(2log log h+1) = O(n) · O(2log log h)
Andreas Gemsa · Ubung Algorithmische Geometrie
Was ist mit m?
FullChanHull(P )
for t = 0, 1, 2, . . . do
m = minn, 22tresult = ChanHull(P , m)if result != failure then
break
return result
Laufzeit:
O(n logm) =O(n log 22
t)
O(log log h)∑t=0
O(n log 22t) = O(n)
O(log log h)∑t=0
O(2t)
= O(n) · O(2log log h+1) = O(n) · O(2log log h)= O(n) · O(log h)
Andreas Gemsa · Ubung Algorithmische Geometrie
Was ist mit m?
FullChanHull(P )
for t = 0, 1, 2, . . . do
m = minn, 22tresult = ChanHull(P , m)if result != failure then
break
return result
Laufzeit:
O(n logm) =O(n log 22
t)
O(log log h)∑t=0
O(n log 22t) = O(n)
O(log log h)∑t=0
O(2t)
= O(n) · O(2log log h+1) = O(n) · O(2log log h)= O(n) · O(log h) = O(n log h)
Andreas Gemsa · Ubung Algorithmische Geometrie
Das war’s!
Nachster Termin:Donnerstag, 28.04, 10:15 Uhr
SegmentschnitteRaum 131, Gebaude 50.34
Fragen?
Top Related