• Keine Ergebnisse gefunden

Maschinelle Repräsentation

N/A
N/A
Protected

Academic year: 2022

Aktie "Maschinelle Repräsentation"

Copied!
17
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Was bisher geschah

I Motivation, Beispiele

I geometrische Objekte imR2:

Punkt, Gerade, Halbebene, Strecke, Polygon

I maschinelle Repräsentation geometrischer Objekte

effiziente Algorithmen und Datenstrukturen zur Berechnung

I der konvexen Hülle conv(P)endlicher Punktmengen P ⊆R2

I aller Schnittpunkte aller Strecken aus einer endlichen Menge von Strecken imR2

(2)

Motivation

Art Gallery Problem (Wächterproblem):

Überwachung eines Museums (evtl. mit stark verwinkelten Räumen) durch möglichst wenige Kameras (omnidirektional)

I gegeben: Grundriss des Museums

begrenzt durch einfachen geschlossenen Polygonzug

I gesucht: Menge (minimaler Mächtigkeit) von Positionen der Überwachungskameras

(3)

Abschätzung der notwendigen Kameraanzahl

Beobachtung:

Jedes Dreieck lässt sich durch eine Kamera überwachen

Idee:

I Zerlegung des Polygons in Dreiecke

I |Kameras| ≤ |Dreiecke|

AG-AufgabeTriangulierung

(4)

Triangulierung einfacher Polygone

einfaches Polygon P:

durch einen geschlossenen Polygonzug, deren nicht benachbarte Kanten keinen gemeinsamen Punkte enthalten, begrenztes Gebiet imR2 Repräsentation als GraphP= (V,E)(Kreis) Diagonale in einem einfachen PolygonP:

vollständig inP enthaltene Strecke zwischen zwei Ecken vonP

Triangulierung eines einfachen PolygonsP= (V,E):

Zerlegung vonPin Dreiecke durch maximale Menge (bzgl.⊆) von Diagonalen, die einander paarweise nicht schneiden

(GraphT = (V0,E0)mitV0 =V undE ⊆E0 )

(5)

Maschinelle Repräsentation

Begrenzung von Polygonen und Triangulierungen sind planare GraphenP= (V,E).

Begrenzung von Polygonen: Kreise

maschinelle Repräsentation von Kreisen(V,E)als

I einfach verkettete Liste von Ecken (oder Kanten) z.B. als Ergebnis der Berechnung der konvexen Hülle (Angabe der Durchquerungsrichtung wichtig)

I doppelt verkettete Liste von Ecken oder Kanten (Angabe der Durchquerungsrichtung wichtig) Vereinbarung: Kanteei = (vi,vi+1)

Transformation der einfach in eine doppelt verkettete Liste in O(|V|)möglich.

maschinelle Repräsentation planarer Graphen als doppelt verkettete Liste von Kanten

(6)

Anzahl der Dreiecke in Triangulierungen

Satz

I Jedes einfache Polygon hat wenigstens eine Triangulierung.

I Jede Triangulierung eines einfachen Polygons mit n Ecken besteht aus n−2Dreiecken.

Beweis durch Induktion übern

(7)

Kamerapositionen in Triangulierungen

Beobachtungen:

I Jede Kamera auf einer Diagonalen überwacht (wenigstens) zwei Dreiecke.

I Jede Kamera in einer Eckep des Polygons überwacht (wenigstens) alle Dreiecke mit Eckep.

Bestimmung der Kamerapositionen bei gegebener TriangulierungT vonP:

1. 3-Färbung der Ecken der TriangulierungT = (V0,E0) Wie ?

2. Bestimmung der am seltensten vorkommenden Farbec (höchstensbn/3cEcken haben Farbec)

3. Kamerapositionen: Ecken mit Farbec Anzahl der Kameras≤ bn/3c(optimal)

(8)

Triangulierung – Schritte

I gegeben: einfaches PolygonP

I gesucht: TriangulierungT vonP Beobachtung:

Konvexe Polygone lassen sich einfach triangulieren.

Wie? Laufzeit?

Idee:

Triangulierung beliebiger einfacher PolygoneP in zwei Schritten

1. Zerlegung vonP in MengeP0einfach triangulierbarer Polygone

2. (einfache) Triangulierung aller Polygone inP0 Problem: Zerlegung in konvexe Polygone aufwendig

(9)

Monotone Polygone

PolygonP heißtmonoton(y-monoton) gdw.

∀y ∈R:P∩ {(x,y)|x ∈R}(Schnitt vonPmit horizontaler Linie) ist zusammenhängend (also Strecke, Punkt oder leer)

Idee: Triangulierung vonPin zwei Schritten

1. Zerlegung vonP in MengeP0monotone Polygone 2. (einfache) Triangulierung aller monotonen Polygone inP0

(10)

Triangulierung monotoner Polygone

Idee:

falls möglich, Diagonalen zwischen Paaren aus je einer Ecke auf demrechten Randund demlinken Randeinfügen

Problem bei Ecken mit Innenwinkeln> π

Sweep-Line-Algorithmus (absteigendey-Koordinate)

I Ereignisse:

geordnete Liste aller Ecken des Polygons

I Zustand:

Verwaltung der Ecken oberhalb der Sweep-line, die noch Eckpunkte neuer Diagonalen werden könnten, als Stack

(11)

Triangulierung monotoner Polygone

Algorithmus : Triangulierung-monoton

Eingabe: monotones PolygonP= (VP,EP)(als doppelt verkettete Liste) Ausgabe: TriangulierungTvonP(als doppelt verkettete Liste)

TP,E = [v1, . . . ,vn]Vp(sortierte Liste oder PQ) S← ∅,Spush(S,v1),Spush(S,v2)(Zustand, Stack) für jedesj3, . . . ,n1:

wenn vjund top(S)auf verschiedenen Randseitendann solange pop(S)6=:

ptop(S),Spop(S)

T T(p,vj)(Diagonalen hinzufügen) Spop(S),Spush(vj−1),Spush(vj) sonst

ptop(S),Spop(S)

solangeS6=und Diagonale(vj,top(S))innerhalb P: ptop(S),Spop(S)

T T(p,vj)(Diagonalen hinzufügen) Spush(p),Spush(vj)

Spop(S)

solangepop(S)6=:

ptop(S),Spop(S),TT(p,vn)(Diagonalen hinzufügen)

(12)

Zerlegung in y -monotone Polygone

Beobachtung:

In nichty-monotonen PolygonenP

(dargestellt als Kreis(V,E)) existierenturn points, d.h. Eckenp∈V, in denen sich die

Richtung (nach oben, nach unten) ändert

Idee zur Zerlegung beliebiger einfacher PolygoneP in y-monotone Polygone:

Zerlegung der Winkel an den turn points inV durch Hinzufügen geeigneter Diagonalen

(13)

Zerlegung in y -monotone Polygone

Klassifikation der turn pointsq in einem PolygonP= (V,E) abhängig von

I y-Koordinaten vonpund seinen Nachbar-Eckenq,r

I Winkelϕzwischenpqundqr innerhalb des Polygons Klassen von turn points

start :p,r beide unterhalbqundϕ < π end :p,r beide oberhalbq undϕ < π split :p,r beide unterhalbq undϕ > π merge :p,r beide oberhalbq undϕ > π alle übrigen Ecken heißen regulär

Problem nur bei turn poins mitϕ > π

(14)

Sweep-line-Algorithmus

I gegeben: einfaches PolygonP

I gesucht: TriangulierungT vonP

Idee: Sweep-line-Algorithmus (fallendey-Koordinate) mit Ereignisse: geordnete Menge aller Ecken vonP

(PQ oder sortierte Liste)

Zustand: nachx-Koordinate geordnete Menge von Paaren

I KantesausP

I Helfer-Punkthszur Kantes:

zuletzt gefundener nächster Punkt rechts von der Seite sim Inneren des Polygons,

potentieller Endpunkt einer Diagonalen zur Trennung eines turn points oberhalb oder unterhalb der aktuellen Sweep-line (balancierter Suchbaum)

(15)

Zerlegung in monotone Polygone

Algorithmus : Mono

Eingabe: PolygonPals doppelt verkettete Liste von Kanten Ausgabe: ZerlegungP0 vonPals doppelt verkettete Liste von

Kanten

P0←P (doppelt verkettete Liste von Kanten) E ← ∅(Priority queue oder sortierte Liste) Z ← ∅(binärer Suchbaum)

für jedess∈P :

E ←E ∪ {sa,sb}mity-Koordinate als Priorität solangeE 6=∅:

p←max(E) E ←E \ {p}

(E,Z)←Mono-Ereignisbehandlung(p,E,Z)

(16)

Mono-Ereignisbehandlung

Mono-Ereignisbehandlung(p,E,Z)

abhängig vom Eckentyp des Ereignissesp=vi

start : Kanteei(= (vi,vi+1)) mit Helferhej =viinZeinfügen end : Kanteei−1(= (vi−1,vi)) ausZ löschen

fallshei−1merge-Punkt: Diagonale(vi,hei−1)inP0einfügen split : Kanteejdirekt links vonviinZ finden

Diagonale(vi,hej)inP0einfügen

hej vi(Helfer für Kanteejaktualisieren) Kanteeimithei =vi inZ einfügen merge : Kanteei−1ausZ löschen

fallshei−1merge: Diagonale(vi,hei−1)inP0einfügen Kanteejdirekt links vonvi inZ finden

fallshej merge: Diagonale(vi,hej)inP0einfügen hej vi(Helfer für Kanteejaktualisieren) regulär : falls Inneres vonPrechts vonvi:

fallshei−1merge: Diagonale(vi,hei−1)inP0einfügen, ei−1ausZlöschen undeimit HelferheiviinZ einfügen sonst (Inneres vonPlinks vonvi):

Kanteejdirekt links vonvi inZ finden und

fallshej merge: Diagonale(vi,hej)inP0einfügen und

(17)

Triangulierung – Laufzeit

Triangulierung beliebiger einfacher PolygoneP mitnEcken in zwei Schritten:

1. Zerlegung vonP in MengeP0monotoner Polygone O(nlogn)(für Sortieren / Verwaltung der Ereignismenge) 2. (einfache) Triangulierung aller Polygone inP0

O(mi)je PolygonPi ∈P0 (insgesamtO(n) =P

Pi∈P0O(mi)

Ordnung der Ereignisse (Ecken inP0) kann aus vorigem Schritt übernommen werden (kein erneutes Sortieren notwendig)

GesamtlaufzeitO(nlogn)

Referenzen

ÄHNLICHE DOKUMENTE

struct dolili *elem_ptr = NULL; // Erzeugen eines Zeigers auf ein Element der Liste Damit Sie dynamisch neue Elemente einer Liste hinzufügen können, müssen Sie einen Teil des

Markiere die kurzen Selbstlaute (Vokale ) mit einem Punkt.. Suche

Implementieren Sie eine doppelt verkettete Liste für Objekte in der Klasse ​ LinkedList sowie einen List Iterator in der Klasse ​ LinkedListIterator ​.. Die Schnittstellen

Die Schnittstellen sind durch die abstrakten Klassen ​ List ​ und Iterator ​ gegeben (für Methodenbeschreibungen siehe Java-Dokumentation in dem Vorgabeprojekt).. ● Fügen Sie

non valde abnormes (esceptis non- nuliis generibus) flillant, fundo parum impuro et a colofe flxucturaque normali non admo- dum avio, paulisper taraen ut plurimum afthe-

Mein Kaninchen frisst gerne Blatsalat, aber Blatsalat..

Mein Vater macht die besten Waf___eln der Welt.. Im Zoo mag ich besonders die

Wir hof___en auf gutes Wet___er für den Ausflug hofen, Weter 7.. Die Tü___r schlägt zu mit