kap. 13 sweep-line algorithmen kap. 13.1 schnittprobleme

26
1 Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme Menge von Linien-Segmenten der Form (a, 1, 9) oder L: (a, (x 1 , y 1 ), (x 9 , y 9 )) Y X 2 8 1 9 7 3 6 5 4 a b c

Upload: luella

Post on 27-Jan-2016

47 views

Category:

Documents


6 download

DESCRIPTION

Y. 2. 7. 9. b. 4. 6. a. 1. 5. c. 8. 3. X. Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme. Menge von Linien-Segmenten der Form (a, 1, 9) oder L: ( a, (x 1 , y 1 ), (x 9 , y 9 ) ). X-Struktur: Anfangspunkte Endpunkte manche Schnittpunkte - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

1

Kap. 13 Sweep-Line AlgorithmenKap. 13.1 Schnittprobleme

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

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

Y

X

2

8

1

97

3

6

5

4a

b

c

Page 2: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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)

Page 3: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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

Page 4: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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

ab

c

Page 5: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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

Page 6: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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 ab aus X, weil (a,b) nicht mehr benachbart, füge ca und cb ein

(liegen rechts von SL, falls existent)

a

p c

bSL

p

c

b

SL

a

Page 7: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

7

2. Endpunkt: q von c

- entferne c aus Y

- enferne q aus X

- ab in X eintragen, falls rechts von SL

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

neue SLSL

b

a

qc

3. Schnittpunkt: ab

- entferne ab aus X

- vertausche a, b in Y

- neue Schnittpunkt ac und bd mit neuen Nachbarn c, d falls existent

und rechts von SLSL

b

a

Page 8: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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

totaktiv schlafend

Y-Struktur repräsentiert nur aktive Linien

SL

Page 9: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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´

)()( 21 LLySLLy

)( SLLy i

21 LLy ≻≺Datenstruktur für Y: balanzierter Baum, AVL oder B-Baum

Ordnungsrelation für Linien:

wobei: y-Koordinate des Schnittpunktes

von Li mit SL

Page 10: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

10

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

SL: X = c

y-koordinate des Punktes P ist bekant

y(P) y(LiSL)

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

Page 11: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

11

In X-Struktur: sind jeweils höchstens:

2n + n-1

Anfangs – n Schnittpunkte Endpunkte benachbarter Linien, weil:

1 12 2 23 3 34

O(log n) pro ... ... Einzeloperation: Min, einfügen, löschen n n-1n

Insgesamt auch 2n+s Einzeloperationen

O ((n+s) log n) Kosten

Page 12: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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

X0X2

R1

Page 13: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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

R2R2

R

R

R R´

Page 14: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

14

Fall 4:R1

R2

R3R3

R4

R1

Gesamtkosten: O ((n+s) log n)

Details für Wartung der Punktfolgen?

Page 15: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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)

Page 16: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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

Page 17: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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

Page 18: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

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.

neup

q

r

Page 19: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

19

Page 20: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

20

Page 21: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

21

Page 22: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

22

Page 23: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

23

Page 24: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

24

Page 25: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

25

Page 26: Kap. 13 Sweep-Line Algorithmen Kap. 13.1 Schnittprobleme

26