AK Rechnerische Geometrie

Werbung
AK Rechnerische Geometrie
Jan Pöschko
auf Grundlage einer Vorlesung von
Univ.-Prof. Dipl.-Ing. Dr. Franz Aurenhammer
im Wintersemester 2009/2010
2. Oktober 2012
Inhaltsverzeichnis
1 Arrangements von Geraden
1.1 Dualität . . . . . . . . . . . . . .
1.2 Kollinearität von Punkten . . . .
1.3 Levels in Arrangements . . . . .
1.4 Konstruktion von Arrangements
1.5 Dreieck kleinster Fläche . . . . .
1.6 Halbebenen-Suchproblem . . . .
1.7 Partitionsbäume . . . . . . . . .
.
.
.
.
.
.
.
2
2
2
2
2
2
3
3
2 Parametrische Suche
2.1 Median-Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Theil-Schätzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
4
4
3 Rückwärtsanalyse
3.1 Mittelachse von konvexen Polygonen . . . . . . . . . . . . . . . . . . . . .
3.2 Lineares Optimieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Böses Beispiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
4
4
5
4 Monotone Matrizen
4.1 Weiteste Nachbarn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Euclidean Distance Transform . . . . . . . . . . . . . . . . . . . . . . . . .
5
5
6
5 n2 -schwere Probleme
6
.
.
.
.
.
.
.
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 Arrangements von Geraden
L = {g1 , . . . , gn }, A(L) mit |L| = n:
Signatur σ(p) = (σi )i mit
n
2
σi =
Knoten, n2 Kanten, 1 + n +
n
2
Zellen



+
p unter gi
0 p auf gi


− p über g
i
1.1 Dualität
p=
a
b
!
↔ T (p) : y = 2ax − b
Dualität ist eigentlich Polarität bezüglich Parabel y = x2 .
Eigenschafen:
1. erhält relative Lage zwischen Punkten und Geraden: p über g ⇔T(g) über T (p)
2. erhält Inzidenzen: s = g ∩ h ⇔ T (s) durch Punkte T (g) und T (h)
1.2 Kollinearität von Punkten
p, q, r kollinear ⇔ T (p), T (q), T (r) durch gemeinsamen Punkt
1.3 Levels in Arrangements
k-Level: {e | σ(e) hat genau k − 1 +}
√
√
Größe von k-Level in Arrangement von n Geraden: 1971: O(n k) → 2000: neΩ( log k)
1.4 Konstruktion von Arrangements
direkt: pro Gerade n − 1 Schnitte, sortieren: O(n2 log n)
plain sweep: ebenso
Einfügen: konstruiere A(L ∪ {g}) aus A(L); Laufzeit O(n2 )
Zonen-Theorem: Die Anzahl der Kanten der Zellen in der Zone von g (Zellen von A(L),
die von g geschnitten werden) ist ≤ 6n. (Beweis: injektive Abbildung von Rechtskanten
auf Schnittpunkte von g)
1.5 Dreieck kleinster Fläche
Im kleinsten Dreieck (i, j, k) hat pk den kleinsten Abstand von pi pj .
Wird v = T (pi pj ) vertikal bewegt, so ist T (pk ) die erste Gerade, die getroffen wird.
⇒ Knoten v gehört zu einer Zelle in A(T (p1 ), . . . , T (pn )), zu der auch T (pk ) eine Kante
beiträgt.
Algorithmus:
1. Dualisieren der pi
2
2. Konstruiere Arrangement
3. Für alle Zellen F : für alle Knoten v von F : für alle Kanten e (nicht inzident zu v):
betrachte (i, j, k), wobei v = T (pi ) ∩ T (pj ) und e ⊂ T (pk )
Analyse:
X
d2 (F ) ≤ 10n2
F ∈A
weil
P
gi
d(F ) ≤ 10n laut Zonentheorem.
1.6 Halbebenen-Suchproblem
Bestimme alle Punkte in S, die oberhalb von g liegen.
Äquivalent zum Finden aller Geraden, die in A(T (S)) unter T (g) liegen. Speichere
Zeiger von allen oberen Kanten in einer Zelle im Arrangement zu einer unteren Kante e.
Laufzeit Q(n) = O(k + log n), Speicher S(n) = Θ(n2 )
1.7 Partitionsbäume
Halbebenen-Suchproblem mit S(n) = O(n), Q(n) = O(k + n0.7 )
Ham-Sandwich-Theorem: für Gerade g, die S im Verhältnis n1 + n2 : n3 + n4 aufteilt,
gibt es eine weitere Gerade g 0 , sodass S in 4 Teile der Größen n1 , n2 , n3 , n4 zerteilt
wird. (Beweis: α(x): kleinster Winkel in x über g, sodass n1 : n2 -Teilung stimmt; β(x):
kleinster Winkel, sodass n3 : n4 stimmt; α : 0 → π, β : π → 0 stetig)
Balancierter Binärbaum; jeder Knoten hat 2 Pointer auf ersten und letzten Punkt in
seinem Teilbaum.
Q(n) ≤ 3Q( n4 ) + O(1) ⇒ Q(n) = O(n0.77 )
√
genauer: Q(2k+1 ) ≤ Q(2k ) + Q(2k−1 ) + c ⇒ Q(2k+1 ) ≤ 2(k+1) ld(1+ 5)−(k+1) − c
Aufbau HS-Gerade zwischen S1 und S2 (getrennt durch y-Achse): Median-Level in
T (S1 ) (monoton fallend in x) und T (S2 ) (monoton steigend); suche Schnittpunkt r;
T (r) ist HS-Gerade.
Berechnung des Median-Level per Datenstruktur für dynamischen Schnitt von Halb4
ebenen. P (n) = O(n 3 +ε )
2 Parametrische Suche
Paralleler Entscheidungsalgorithmus → serieller Optimierungsalgorithmus.
Betrachte ENT: P (x) monoton, d.h. aus P (x0 ) folgt P (x) für x < x0 .
OPT: finde größtes x∗ mit P (x∗ ).
Wende Algorithmus A für P (x) auf (unbekannte) Lösung x∗ des Optimierungsproblems an. → Entscheidungen Fi (x∗ ) ≤ 0.
• Berechne Nullstellen von Fi : x1 , . . . , xk
• Wende Entscheidungsalgorithmus A auf x1 , . . . , xk and
3
• Weil P monoton: ∃1 Index j mit A(xj ) = T und A(xj+1 ) = F ; somit x∗ ∈ I =
[xj , xj+1 ].
2.1 Median-Level
betrachte Arrangement von Geraden g1 , . . . , gn , Median-Level M (x) = Median von
g(x), . . . , gn (x);
ENT: geg. x, entscheide M (x) ≤ 0 (berechne gi (x), Median davon, teste gm (x) ≤ 0)
OPT: bei Median-Berechnung tritt gi (x∗ ) ≤ gj (x∗ ) auf; berechne also Nullstelle von
fij = ai x + bi − aj x + bj ,
das ist x-Koordinate von gi ∩ gj ; berechne A(xij )
2.2 Theil-Schätzer
Finde Gerade pj pj , die den Median aller n2 Steigungen realisiert.
pi pj hat k-kleinste Steigung ⇔ xij = T (pi pj ) hat k-kleinste x-Koordinate, d.h. xij ist
der k-te Knoten von links im Arrangement A(T (p1 ), . . . , T (pn )).
ENT: geg. x, entscheide L(x) = Anzahl der Knoten in A links von x ≤ 12 n2 . (berechenbar über Anzahl der Inversionen der Permutation π(x) der gi )
OPT: berechne L(xij ), wobei xij ist x-Koordinate von gi ∩ gj , usw.
Rechenzeit: O(n log n · n log n)
Parallelisieren: Bitones Sortieren; O(log2 n) Runden, pro Runde n Vergleiche; betrachte n Nullstellen in O(n), sortiere sie in O(n log n), Binärsuche in dieser sortieren Liste
mit O(log n) Schritten zu O(n log n) Zeit (L(x) berechnen). ⇒ O(n log4 n) Zeit
Verbesserung durch Intervalldrittelung auf O(n log2 n) und Randomisierung
3 Rückwärtsanalyse
3.1 Mittelachse von konvexen Polygonen
M (P ) = {x ∈ P | nächster Nachbar von x bezüglich Rand von P ist mehrdeutig}
teilt P in n Regionen, Baumstruktur: n Blätter (Ecken von P ), n − 2 innere Knoten,
2n − 3 Kanten
Randomisiertes Einfügen: O(|reg(e)|) pro Kante e (merke Nachbarkanten)
E[|reg(e)|] =
1X
1
|reg(ei )| = 2(2n − 3) < 4 = O(1)
n
n
3.2 Lineares Optimieren
Normalvektor z einer Hyperebene in Rd , Menge H von n Halbräumen, h∈H h = P
konvexes Polytop.
Finde x ∈ P , sodass x Tangentialpunkt einer Hyperebene mit Normalvektor z an P .
T
4
d
Größe von P : Θ(nb 2 c )
Rekursiver Algorithmus für LP(H, z):
• d = 1: P = Intervall, Optimallösung = Endpunkt
• d = n: P hat nur eine Ecke ⇒ lineares Gleichungssystem in O(d3 )
• n > d > 1: wähle h ∈ H zufällig, löse LP(H \ {h}, z) mit Lösung w
– w ∈ h: bereits Gesamtlösung
– w∈
/ h (mit Wahrscheinlichkeit nd ): Optimallösung liegt in begrenzender Hyperebene g von h; bilde H 0 = (H \ {h}) ∩ g, projiziere z auf g, löse LP(H 0 , z 0 )
T (n, d) = O(d!n)
√
kann von d! auf 2
d
gedrückt werden.
3.3 Böses Beispiel
Triangulierung von n Punkten pj und Dreieck t, pj ∈ t
4 Monotone Matrizen
n × m-Matrix A (n ≤ m) monoton: aus i1 < i2 folgt j(i1 ) ≤ j(i2 ) (j: Spaltenindex des
linkesten Maximums in Zeile i)
A total! monoton: alle Submatrizen (äquivalent: alle 2 × 2-Submatrizen) monoton
a b
monoton ⇒ aus a < b folgt c < d
d d
Wenn j1 < j2 und A(i, j1 ) ≥ A(i, j2 ), dann sind alle A(x, j2 ) tot für 1 ≤ x ≤ i.
Wenn j1 < j2 und A(i, j1 ) < A(i, j2 ), dann sind alle A(x, j1 ) tot für i ≤ x ≤ n.
⇒ Reduce-Algorithmus, der A auf n × n-Matrix C reduziert, sodass Maxima nicht
verloren gehen.
Zeilenmaxima und globales Maximum in O(m) Zeit.
4.1 Weiteste Nachbarn
in konvexem Polygon: n × (2n − 1)-Matrix
Aij =


j − i

d(p , pj )
i


−1
für j ≤ i
i<j <i+n
für j ≥ i + n
Beweis der Monotonie der 2 × 2-Submatrizen per Vierecksungleichung.
Anwendung: flächengrößtes Dreieck.
5
4.2 Euclidean Distance Transform
Finde zu jedem von n2 Gitterpunkten den Abstand zu seinem nächsten Nachbarn in
einer Gitterpunktmenge B.
mit monotonen Matrizen in O(n2 ) Zeit
5 n2 -schwere Probleme
• 3SUM: geg. ganze Zahlen M ; gefr. ∃a, b, c ∈ M : a + b + c = 0
• 3SUM’: geg. ganze Zahlen A, B, C; gefr. ∃a ∈ A, b ∈ B, c ∈ C : a + b = c (sortiere
B, C; bilde ∀a ∈ A: a + B; gleiche mit C ab)
• Koll: geg. n Punkte; gefr. sind drei davon kollinear (per Arrangements)
3SUM ≤ Koll: für m ∈ M betrachte Punkt p(m) =
Summe 0 ⇔ p(a), p(b), p(c) kollinear.
m
m3 ;
a, b, c ∈ M haben
• Koll’: geg. n Punkte p = xy , x ∈ N, y ∈ {0, 1, 2}; gefr. ∃ nicht-horizontale Gerade,
die mehr als zwei Punkte enthält
3SUM’ ≤ Koll’: b ∈ B → (2b, 2), c ∈ C → (c, 1), a ∈ A → (2a, 0).
• SEP: geg. n Objekte (Spezialfall: Liniensegmente); gefr. ∃ Gerade, die Objekte
vermeidet und in zwei nichtleere Teilmengen zerlegt
Koll’ ≤ SEP: dreizeiliges Gitter mit ausgesparten Punkten
• Strips-Cover-4: geg. Dreieck, n Streifen; gefr. wird Dreieck von Streifen abgedeckt
SEP ≤ Strips-Cover-4: p = ab 7→ T (p) : y = 2ax − b (vertikales Segment 7→
Streifen, Halbstrahl 7→ Halbebene, separierende Gerade 7→ Punkt);
T (g) liegt nicht in Streifen/Halbebenen ⇔ Streifen überdecken Dreieck.
• Triangles-Cover-4 ≥ Strips-Cover-4: baue Dreiecke aus Streifen.
• Hole-in-Union: geg. n Objekte; gefr. enthält ihre Vereinigung ein „Loch“
Triangles-Cover-4 ≤ Hole-in-Union: geg. Menge T von Dreiecken, bilde
t ∩ 4 (triangulieren, wenn nötig) ⇒ Menge T 0 von Dreiecken mit |T 0 | ≤ 4 |T | und
S
T 0 überdeckt 4 (d.h. t0 hat keine Löcher) ⇔ T überdeckt 4.
• Area-of-Union: geg. n Dreiecke; ges. Fläche ihrer Vereinigung
Triangles-Cover-4 ≤ Area-of-Union: T 0 überdeckt 4 ⇔ abgedeckte Fläche
ist Fläche von 4
6
Herunterladen