• Keine Ergebnisse gefunden

Kap. 13 Sweep-Line Algorithmen

N/A
N/A
Protected

Academic year: 2022

Aktie "Kap. 13 Sweep-Line Algorithmen"

Copied!
26
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

1

Kap. 13 Sweep-Line Algorithmen

Kap. 13.1 Schnittprobleme

Menge von Linien-Segmenten der Form (a, 1, 9) oder L:

(

a, (x1, y1), (x9, y9)

)

Y

X 2

8 1

7 9

3

6 5 4 a

b

c

(2)

2

X-Struktur: Anfangspunkte Endpunkte

manche Schnittpunkte

sortiert nach aufsteigenden X-Koordinaten

Y-Struktur: Status an Sweep-Line (SL),

i.e. Linien die SL schneiden sortiert nach Y-Koordinaten des Schnittpunktes mit SL.

(Y-Koord. selbst nicht benötigt)

(3)

3

Interessante Vorgänge bei nächstem Punkt bzgl. X-Struktur;

Vorstellung: SL wird bis zum nächsten Punkt in X-Struktur verschoben:

- Anfangspunkt von Linie d:

nehme d in Y-Struktur, i.e. einsortieren - Endpunkt von Linie e:

entferne e aus Y-Struktur - Schnittpunkt von f,g:

vertausche f, g in Y-struktur Schnittpunkte in X-Struktur:

Nur Schnittpunkte von benachbarten Linien bzgl. Y-Struktur, die rechts von SL liegen

(4)

4

Lemma: Wenn kleinster “interessanter” Punkt rechts von SL ein Schnittpunkt ist, dann ist er ein Schnittpunkt benachbarter Linien, also in X-Struktur.

Bew: interessante Vorgänge: Linie a muß erst Nachbar b schneiden, bevor a c

schneiden kann!

bei 3 müssen Linien schon in Y-Struktur sein!

1 2 3

a b

c

(5)

5

X-Struktur enthält: Punkte rechts von SL, wenn sie:

1. Anfangspunkt einer Linie 2. Endpunkt einer Linie

3. Schnittpunkt zweier benachbater Linien bzgl. Y-Struktur sind.

 X-Struktur enthält “interessante” Punkte sortiert nach

X-Koordinate plus Zusatzinfo über Linien, zu denen Punkt gehört

(6)

6

Allg. Struktur des Algorithmus:

Nächster Punkt in X-Struktur 1. Anfangspunkt p von c:

- entferne p aus X-Struktur

- füge Linie c in Y-Struktur ein zwischen a und b, d.h.

ändere Nachbarschaften in Y-Struktur

- ersetze Schnittpunkte in X-Struktur, z.B. entferne ab aus X, weil (a,b) nicht mehr benachbart, füge ca und cb ein (liegen rechts von SL, falls existent)

a

p c

b SL

p

c b SL

a

(7)

7

2. Endpunkt: q von c

- entferne c aus Y - enferne q aus X

- ab in X eintragen, falls rechts von SL

Hinw: Nachbarschaften in Y-Struktur ändern sich automatisch, da Linien nach Y-Koord. sortiert sind

neue SL SL

b a q

c

3. Schnittpunkt: ab

- entferne ab aus X - vertausche a, b in Y

- neue Schnittpunkt ac und bd mit neuen Nachbarn c, d falls existent und rechts von SL

SL b

a

(8)

8

Sweep-Line Alg:

initialisiere X-Struktur mit Anfangs und Endpunkten;

initialisiere Y-Struktur = ;

while X-Struktur   do

begin P:= Min (X-Struktur);

{P ist Anfang, Ende oder Schnittpunkt}

transformiere X-Struktur und Y-Struktur abhänging von P

end

tot aktiv schlafend

Y-Struktur repräsentiert nur aktive Linien SL

(9)

9

Operationen auf Y: fallen an, wenn nächster Punkt in X-Struktur bearbeitet wird:

Find (P): Finde SL-Intervall, in dem P liegt Insert (L): Einfüge Linie L in Y-Struktur Delete (L): Entferne Linie L aus Y-Struktur Pred (L), Succ (L): beide Nachbarn von L

Interchange (L,L´): vertausche Nachbarn L,L´

) (

)

( L

1

SL y L

2

L

y   

 )

( L SL

y

i

2

1

L

L

y

≺ ≻

Datenstruktur für Y: balanzierter Baum, AVL oder B-Baum Ordnungsrelation für Linien:

wobei: y-Koordinate des Schnittpunktes von Li mit SL

(10)

10

Hinw: muß bei Suche in Y-Struktur ausgewertet werden.

SL: X = c

y-koordinate des Punktes P ist bekant y(P) y(LiSL)

y

 

?

Analyse: n Linien, s Schnittp.

In Y-Struktur: sind O(n) Linien, deshalb Einzeloperationen erfordert:

suchen

einfügen je O(log n) Kosten löschen

vertauschen

Ingesamt 2n+s Einzeloperationen (Durchläufe durch while – Schleife)

 O ((n+s) log n) Kosten

(11)

11

In X-Struktur: sind jeweils höchstens:

2n + n-1

Anfangs – n Schnittpunkte

Endpunkte benachbarter Linien, weil:

1 12 2 23

3 34 

O(log n) pro ... ...

Einzeloperation: Min,

einfügen, löschen n n-1n

Insgesamt auch 2n+s Einzeloperationen  O ((n+s) log n) Kosten

(12)

12

Verwandtes Problem: Zerlegung eines geschlossenen Polygonzuges in zusammenhängende Polyangebiete

Schnittpunkte nach vorherigen Schema X-Struktur wie bisher

Y-Struktur erweitert um Namen für Gebiet zwischen 2 benachbarten Linien und begrenzendem Polygonzug

X1

R0

X3 X4

P1 R2

X0 X2

R1

(13)

13

Fall 1:

neue Punktfolge für R´ starten

Fall 2:

Punkt in Folgen aufnehmen

Fall 3:

R1  R3

Punktfolgen für R1, R3 konkatenieren Folge für R3 “umkehren”, z.B.

durch dopellte Verkettung beider

Listen. Details? Gebiet liegt links bw.

rechts von Streckenzug?

R3 R1 R2

R1 R1

R2 R2

R R

R R´

(14)

14

Fall 4:

R1 R2

R3 R3 R4 R1

Gesamtkosten: O ((n+s) log n) Details für Wartung der Punktfolgen?

(15)

15

Kap. 13.2 Sweep-Line für Nearest Neighbour Begriffe

H(p, q)

b(p, q)

H(q, p) p

q

b(p, q) : Bisektor für p, q teilt Ebene in b(p, q) = b(q, p) 2 Halbebenen H(p, q) : Halbebene, die p enthält

H(q, p) : “ “ q “ H(p, q)  H(q, p)

(16)

16

die Mittelsenkrechten im Dreieck schneiden sich im einem Punkt = Umkreis Mittelpunkt

. .

. r

1. Teil des Alg: Bestimmung des nächsten Nachbarn nach links:

Voronoi Diagramme für Punktmengen, z.B. für Einzugsbereich von Funktürmen bei Mobilfunk

konvexe Polygone für einzelne Punkte

(17)

17

Sweep-Line Invariante:

Schnitt von SL mit Voronoi-Diagramm der Punkte links von SL

 Unterteilung von SL in Intervalle, die zu Voronoi-Polygonen von Punkten links von SL gehören

Interessante Ereignisse:

E1 neuer Punkt p

E2 Schnittpunkt von aktiven Bisektoren

(18)

18

Aufgabe bei E1 :

1. Bestimme nächsten linken Nachbarn von p, i.e. das q, in dessen Voronoi-Polygon p liegt.

2. Schreibe Voronoi-Polygon fort, wobei p zu Punktmenge links von SL hinzugenommen wird. Aktiviere und

deaktiviere Bisektoren

3. Berechne Unterteilung von SL neu, aber inkrementell.

Aufgabe bei E2 :

1. Aktiviere neuen Bisektor 2. Deaktiviere alte Bisektoren

3. Berechne Unterteilung von SL neu.

neu p

q

r

(19)

19

(20)

20

(21)

21

(22)

22

(23)

23

(24)

24

(25)

25

(26)

26

Referenzen

ÄHNLICHE DOKUMENTE

• der innere Unterbaum von K muss an X angeh¨ angt werden Nach beiden Rotationstypen k¨ onnen die Unterb¨ aume einfach in der richtigen Reihenfolge an die freien stellen geh¨

l Binäre Suche im Array der x-Koordinaten nach dem Streifen, der P enthält:. Binäre Suche in einem Array mit maximaler Länge 2n:

Ohne zeichnen zu können tastet man sich mit einfachen Linien an die Zeichnung heran.. Das Ergebnis der Arbeit ist offen und

b) (Zusatzaufgabe) Welche Folgen h¨atte es, wenn man statt der maximalen ¨ Ahnlichkeit minimale Kosten f¨ur das optimale approximative maximale Pair verlangen w¨urde3.

Offline Bewegungsplanung 16.10.13 K¨ urzeste Wege c Elmar Langetepe WS ’1314 1... Geht

• Lemma 5.2: Genau dann hat ein Punkt p ∈ S eine unbeschr¨ ankte Voronoi-Region, wenn er auf dem Rand der konvexen H¨ ulle von S liegt.. ( Zwei Richtungen! Lemma 5.1

Die durch Licht aus einer Photokathode ausgelösten Elektronen lassen sich unter dem Einfluss von Magnetfeldern in geordneten Bahnen beschleunigen und liefern beim Aufprall auf

Problem: Verwaltung freier Blöcke in einem gege- benen Adressraum {0,…,m-1} zur effizienten Allokation und