Sie sind auf Seite 1von 67

Geo-Informationssysteme 181

5. Algorithmische Geometrie
Definition
Teilgebiet der Informatik, das sich mit der Komplexitt und Lsung geometrischer
Fragestellungen durch geeignete Algorithmen und Datenstrukturen beschftigt
Anmerkungen
Die algorithmische Lsung einer einfachen geometrischen Fragestellung kann
sehr komplex sein (vom Algorithmus und/oder von der Laufzeit her)
Die Algorithmische Geometrie legt ihren Schwerpunkt auf die Studie der
algorithmischen Komplexitt elementarer geometrischer Probleme
Fr den Einsatz von geometrischen Algorithmen in einem GIS ist insbesondere
deren Anwendbarkeit von hoher Bedeutung;
Diese ist aber bei vielen geometrischen Algorithmen nicht uneingeschrnkt
gegeben:
Komplexitt der Implementierung (viele Sonderflle)
Anflligkeit fr Rundungsfehler
Hohe Konstanten bei dem Laufzeitverhalten der optimalen Lsungen
Geo-Informationssysteme 182
Algorithmische Geometrie (II)
Typische Problemstellungen
Berechnung der konvexen Hlle
Distanzprobleme:
Bestimme das Paar von Punkten mit minimalen Abstand
Inklusionstest und -berechnungen:
Teste, ob ein Punkt im Inneren eines geschlossenen Polygons liegt
Bestimme alle Punkte, die in einem Rechteck liegen
Zerlegungen von Objekten in Primitive:
Zerlege ein Polygon in eine minimale Anzahl von Dreiecken
konvexe
Hlle
minimaler
Abstand
Punkt in
Polygon
Punkte in
Rechteck
Zerlegung in
Dreiecke
Geo-Informationssysteme 183
Algorithmische Geometrie (III)
Wichtigste Paradigmen
Plane-Sweep
Verwendung einer vertikalen Lauflinie
Transformation eines k-dim. geometrischen Problems in ein k-1
dimensionales (dynamisches) Suchproblem.
Divide-and-Conquer
Aufteilen der Probleme in zwei Teilprobleme;
Lsen der Teilprobleme;
Verschmelzen der Lsungsmengen der Teilprobleme.
Bei der Anwendung auf k-dim. geomtrische Probleme erfordert dies eine
effiziente Verwaltung k-1 dimensionaler Mengen.
Geo-Informationssysteme 184
5.1 Schnitt von zwei Strecken (I)
Aufgabe
Teste, ob zwischen zwei Strecken ein Schnitt vorliegt
Fallunterscheidungen
Strecken A und B schneiden sich
Strecken C und D und Strecken E und F schneiden sich nicht, jedoch ihre
zugehrigen Geraden schneiden sich.
Strecken G und H berhren sich
Strecken I und J liegen parallel und berlappen sich
Strecken L und K liegen parallel und schneiden sich nicht
A
B
C
D
E
F
G
H
I
J
K
L
Geo-Informationssysteme 185
Schnitt von zwei Strecken (II)
Gegeben seien die beiden Strecken durch die Eckpunkte P
i1
und P
i2
Parameterdarstellung mit t
1
, t
2
e [0,1]:
s
1
: (1-t
1
) P
11
+ t
1
P
12
s
2
: (1-t
2
) P
21
+ t
2
P
22
3 Flle:
1. s
1
und s
2
liegen auf der gleichen Geraden (3 Unterflle)
2. s
1
und s
2
liegen auf unterschiedlichen parallelen Geraden
3. s
1
und s
2
haben genau einen Schnittpunkt
Schnittpunktberechnung (x
ij
:= P
ij
.x, y
ij
:= P
ij
.y):
(1-t
1
) x
11
+ t
1
x
12
= (1-t
2
) x
21
+ t
2
x
22
(1-t
1
) y
11
+ t
1
y
12
= (1-t
2
) y
21
+ t
2
y
22
t
1
= , t
2
analog
Ist der Nenner gleich 0 Strecken parallel
Gilt 0 s t
1
s 1 und 0 s t
2
s 1 Streckenschnitt (Berechnung durch Einsetzen in s
i
)
x
11
x
21
( ) y
21
y
22
( ) y
11
y
21
( ) x
21
x
22
( )
x
11
x
12
( ) y
21
y
22
( ) y
11
y
12
( ) x
21
x
22
( )
------------------------------------------------------------------------------------------------------------------------------------
Geo-Informationssysteme 186
Schnitt von zwei Strecken (III)
Ungenauigkeiten
Wie viele Schnittpunkte hat ein Paar von Strecken gemeinsam?
Euklidische Geometrie: 1 Schnittpunkt
Computer Geometrie: ???, denn Koordinaten sind diskret reprsentiert
Strecke besitzt mit Strecke keinen gemeinsamen Schnittpunkt
Strecke besitzt mit Strecke drei gemeinsame Schnittpunkte
Geo-Informationssysteme 187
Schnitt von zwei Strecken (IV)
Ungenauigkeiten (Forts.)
Gilt folgende Eigenschaft?
Fr zwei Strecken s
1
und s
2
gibt es drei disjunkte Intervalle I
1
, I
2
und I
3
mit:
s
1
(x) < s
2
(x) fr x eI
1
s
1
(x) = s
2
(x) fr x eI
2
s
1
(x) > s
2
(x) fr x eI
3
Lsungen
Besondere Arithmetik (Intervall-Arithmetik)
Hohe Rechengenauigkeit
0 10 20
10
20
8
(3x + 40) div 5
(2x+20) div 3
Geo-Informationssysteme 188
5.2 Punkt-in-Polygon-Test
Aufgabe
Gegeben:
Ein einfaches geschlossenes Polygon R = (P
1
,,P
n
) und ein Anfragepunkt Q
Gefragt:
Liegt Punkt Q im Inneren des Polygons?
Q
1
Q
2
?
?
R
P
1
P
2
P
3
Geo-Informationssysteme 189
Punkt-in-Polygon-Test (II)
Lsung 1
Grundlage: Jordansches Kurven-Theorem
Jedes Polygon zerteilt den Raum in ein Inneres und ueres.
Idee:
Schicke einen Strahl (der Einfachheit halber parallel zur x-Achse) vom Punkt Q
und zhle, wie oft er die Kanten des Polygons schneidet:
Anzahl ungerade: Q liegt im Inneren
Anzahl gerade: Q liegt im ueren
Beispiel:
Laufzeit: O(n) (n = Anzahl der Kanten)
Q
Sonderflle:
Geo-Informationssysteme 190
Punkt-in-Polygon-Test (III)
Lsung 2
Berechne die Winkelsummen O(R,Q) benachbarter Sektorenstrahlen.
Die zu einem Polygon R und Punkt Q gehrenden Sektorenstrahlen sind durch
die Kanten von Q nach P
i
gegeben.
Es gilt:
O(R,Q) = 2t, so liegt Q im Inneren von R
O(R,Q) = 0, so liegt Q im ueren von R
Ansonsten (0 < O(R,Q) < 2t), liegt Q auf dem Rand von R
Q
Winkel zw. P
1
und P
2
P
2
P
1
Geo-Informationssysteme 191
Punkt-in-Polygon-Test (IV)
Lsung 3 (fr Spezialfall konvexer Polygone)
Zerlegen des Polygons in disjunkte Komponenten
Bestimme die Komponente, die den gesuchten Punkt enthlt
Regionen Z1,,Z5 werden sortiert bzgl. des Winkel der rechten Kante:
binres Suchen ist mglich
Test, ob Q in R liegt, in O(log n) mglich
jedoch: hherer Aufwand fr die Vorarbeit
Q
Z1
Z2
Z3
Z4
Z5
R
Geo-Informationssysteme 192
5.3 Schnitte orthogonaler Strecken (I)
Aufgabe
Gegeben:
Menge von horizontalen und vertikalen (orthogonalen) Strecken
Gesucht:
Alle Paare sich schneidender Strecken
Annahme:
Die Endpunkte verschiedener Strecken besitzen jeweils unterschiedliche
x- und y-Koordinaten
A
B
C
D
E
F
G
Lsung:
(B,C)
(C,D)
(D,E)
(F,G)
Geo-Informationssysteme 193
Schnitte orthogonaler Strecken (II)
Naive Lsung
bentigt O(n
2
) Vergleiche, da jede Strecke mit allen anderen Strecken verglichen
wird
ist optimal, wenn nur n als Parameter auftritt
Alternative:
Bei den Aufwandsbetrachtungen der Algorithmen auch die Anzahl der Antworten
(bezeichnet mit k) bercksichtigen
Weiteres Vorgehen in der Vorlesung
Vorstellung von zwei Lsungen, die auf dem Prinzip
Plane-Sweep
Divide-and-Conquer (Teile und herrsche)
basieren
Beide Lsungen besitzen eine Laufzeit von O(n log n + k)
Geo-Informationssysteme 194
5.3.1 Plane-Sweep-Lsung (I)
Idee
Schiebe eine vertikale Gerade, die sogenannte Sweepline (Lauflinie), von links
nach rechts durch den (2-dim.) Datenraum
Halte dabei nur an interessanten Stellen (Haltepunkte, Event Points)
Beobachte dabei alle Objekte, die die Sweepline schneiden
Datenstrukturen
In dem Event Point Schedule werden alle Haltepunkte der Sweepline
in x-Richtung sortiert organisiert; meist gengt es, eine Menge von Objekten bzgl.
ihrer x-Koordinaten einmal zu sortierten
In dem Sweep-Line-Status werden die aktuell die Sweepline schneidenden
Objekte verwaltet; insbesondere mu hier das Lschen und Einfgen der Objekte
effizient gelst sein
B
C
D
E
F
A
G
Haltepunkt kein Haltepunkt
Haltepunkt
Geo-Informationssysteme 195
Plane-Sweep-Lsung (II)
Beobachtungen fr Schnittproblem orthogonaler Strecken
Horizontale Strecken schneiden die Sweepline in einer festen y-Koordinate
Vertikale Strecken schneiden die Sweepline in einem y-Intervall. Horizontale
Strecken, die diese vertikale Strecke schneiden, erfllen folgende Eigenschaften:
Sie schneiden auch die Sweepline
Ihre y-Koordinate liegt im y-Intervall
Bestimmung der Haltepunkte der Sweepline
Alle x-Koordinate der vertikalen Strecken
Alle minimalen und maximalen x-Koordinaten der horizontalen Strecken
B
C
D
E
F
A
G
Geo-Informationssysteme 196
Plane-Sweep-Lsung (III)
Vorgehen am Beispiel
B
C
D
E
F
A
G
A.x, C.x1, B.x, F.x1, E.x1,
D.x, C.x2, G.x, F.x2, E.x2
B
C
D
E
F
A
G
Haltepunkt: A.x
Stat = {}
Sweep-Line-Status:
B
C
D
E
F
A
G
Haltepunkt: C.x1
Aktion: Fge C in Stat ein
Stat = {C}.
B
C
D
E
F
A
G
Haltepunkt: B.x
Aktion: Finde alle I e Stat
Stat = {C}
mit B.y1 s I.y s B.y2
Ausgabe: (B,C)
Stat = {}
Event Point Schedule mit allen Haltepunkten (sortiert):
Geo-Informationssysteme 197
Plane-Sweep-Lsung (IV)
Vorgehen am Beispiel (Forts.)
B
C
D
E
F
A
G
Haltepunkt: E.x1
Aktion: Fge E in Stat ein
Stat = {C,E,F} (sortiert!)
B
C
D
E
F
A
G
Haltepunkt: D.x
Aktion: Finde alle I e Stat
Stat = {C,E,F}.
mit D.y1 s I.y s D.y2
B
C
D
E
F
A
G
Haltepunkt: C.x2
Stat = {E,F}.
Aktion: Lsche C aus Stat
Ausgabe: (D,C), (D,E)
B
C
D
E
F
A
G
Haltepunkt: F.x1
Stat = {C, F}.
Aktion: Fge F in Stat ein
Geo-Informationssysteme 198
Plane-Sweep-Lsung (V)
Aufwandsberechnung
Zum Abspeichern des Sweep-Line-Status wird ein hhenbalancierter Baum
(z.B. ein 2-3
+
-Baum) verwendet, wobei die Bltter bzgl. der Sortierung
miteinander verkettet sind
Wichtige Eigenschaften (bei n gespeicherten Datenelementen):
Einfgen und Lschen bentigt O(log n) Zeit
Bereichsanfrage (mit r Antworten) bentigt O(log n + r) Zeit
Gesamtkosten:
Sortieren des Event Point Schedule: O(n log n)
Holen des nchsten Elements aus dem Event Point Schedule: O(1)
Einfgen in Sweep-Line-Status: O(n log n)
Lschen aus Sweep-Line-Status: O(n log n)
Bereichsanfragen: O(n log n + k)
Gesamtkosten: O(n log n + k)
Geo-Informationssysteme 199
5.3.2 Divide-and-Conquer-Lsung (I)
Idee
Teile die Menge der Objekte in zwei Teilmengen (Divide)
Lse das Problem fr die Teilmengen (Conquer)
Verschmelze die Lsungen der Teilprobleme zu einer Gesamtlsung (Merge)
Anwendung auf Schnittproblem orthogonaler Strecken
Divide:
Betrachte die Menge S aller x-Koordinaten von vertikalen Strecken und
von den Endpunkten horizontaler Strecken
Teile S in etwa zwei gleichgroe Mengen S
1
und S
2
auf,
so dass fr alle x
1
eS
1
und x
2
e S
2
gilt: x
1
< x
2

Conquer: Lse das Problem fr die Mengen S
1
und S
2
Geo-Informationssysteme 200
Divide-and-Conquer-Lsung (II)
Merge beim Schnittproblem orthogonaler Strecken
Folgende Flle mssen betrachtet werden:
Fall 1: Beide Endpunkte einer Strecke liegen in S
1
Fall 2: Der rechte Endpunkt liegt in S
2
Fall 3: Der rechte Endpunkt liegt rechts von S
2
Dieser Fall ist von besonderem Interesse, da kein Eckpunkt der Strecke
in S
2
liegt, aber dennoch Schnitte auftreten knnen
S
1
S
2
Kante schneidet keine
Kante in S
2
S
1
S
2
Alle Schnitte mit
Strecken in S
2
sind
schon berechnet.
S
1
S
2
Strecke schneidet alle vertikalen
Strecken in S
2
, deren y-Intervall
die y-Koordinate berdeckt
Geo-Informationssysteme 201
Divide-and-Conquer-Lsung (III)
Algorithmus: Mengen und Datenstrukturen
S ist eine nach den x-Koordinaten sortierte Menge (Array) von horizontalen
Eckpunkten bzw. vertikalen Strecken
L ist eine sortierte Liste von y-Koordinaten aller linken Endpunkte in S, deren
rechter Endpunkt nicht in S liegt
R ist eine sortierte Liste von y-Koordinaten aller rechten Endpunkte in S, deren
linker Endpunkt nicht in S liegt
V ist eine sortierte Liste aller vertikalen Strecken in S
V
S
L
R
Geo-Informationssysteme 202
Divide-and-Conquer-Lsung (IV)
Algorithmus StreckenSchnitt (IN S, OUT L, OUT R, OUT V)
IF |S| = 1 THEN
L := C; R := C; V := C;
IF S[1] linker Eckpunkt THEN L := {s}; // s e S
IF S[1] rechter Eckpunkt THEN R := {s};
IF S[1] vertikale Strecke THEN V := {s};
ELSE
Teile S in zwei gleich groe Mengen S
1
und S
2
auf,
so dass fr alle x
1
eS
1
und x
2
e S
2
gilt: x
1
< x
2
;
StreckenSchnitt (S
1
, L
1
, R
1
, V
1
);
StreckenSchnitt (S
2
, L
2
, R
2
, V
2
);
h := L
1
R
2
; // Fall 2
Gebe (L
1
\ h) O V
2
aus; // Fall 3
Gebe (R
2
\ h) O V
1
aus;
L := (L
1
\ h) L
2
;
R := R
1
(R
2
\ h);
V := V
1
V
2
;
Definition: H O V := { (v.x , h.y) | h e H, v eV mit v.y1 s h.y s v.y2}
L
1
R
1
R
2
L
2
L
1
V
1
V
2
R
L
L
V
V
h
Geo-Informationssysteme 203
Divide-and-Conquer-Lsung (V)
Beispiel fr die Anpassung der Datenstrukturen
L
1
R
1
R
2
L
2
L
1
V
1
V
2
R
L
L
V
V
Geo-Informationssysteme 204
Divide-and-Conquer-Lsung (VI)
Aufwandsberechnung
Sortieren von S: O(n log n)
Divide (Einzelschritt): O(1)
Merge:
Die Mengenoperationen auf L, R und V (Einzelschritt) knnen in O(n)
bearbeitet werden
Die Operation H O V kann in O( |H| + |V| + |H O V|) durchgefhrt werden
(d.h. lineare Laufzeit + Anzahl der gefundenen Paare)
Rekursionstiefe: O(log n)
Gesamtaufwand: O(n log n + k)
Gesamtspeicherplatzbedarf: O(n)
Geo-Informationssysteme 205
5.4 Rechteckschnittproblem
Aufgabe
Gegeben: Menge achsenparalleler Rechtecke
Gesucht: Alle Paare von Rechtecken, die sich schneiden
Beobachtung
Falls sich ein Paar Rechtecke schneidet, so gilt
1) entweder es schneidet sich ein Paar von Kanten des Rechteckpaares
2) oder ein Rechteck enthlt das Rechteck vollstndig
Lsungsansatz
zu 1): Rckfhrung auf das Schnittproblem orthogonaler Strecken
zu 2): Lsung des Punkteinschlussproblems
Geo-Informationssysteme 206
5.4.1 Punkteinschlussproblem (I)
Gegeben: Eine Menge P von Punkten und eine Menge R von Rechtecken.
Gesucht: Alle Paare (p,r) mit p e P, r e R, wobei p in r liegt
Plane-Sweep-Ansatz
Betrachte nur die vertikalen Kanten der Rechtecke
Menge der Haltepunkte (Event Point Schedule) setzt sich zusammen aus allen
Punkten P und den x-Koordinaten der vertikalen Kanten (nach x sortiert)
Vorgehen:
Linke Kanten werden in den Sweep-Line-Status eingefgt
Rechte Kanten werden aus dem Sweep-Line-Status entfernt
Fr einen Punkt p e P mssen alle Kanten im Sweep-Line-Status
bestimmt werden, die diesen Punkt enthalten
Segmentbaum: Datenstruktur, die diese Operationen effizient untersttzt
Sweepline
Geo-Informationssysteme 207
Segmentbaum (I)
Beim Initialisieren der Struktur wird ein vorgefertigtes Skelett eines Baums zur
Verfgung gestellt
Sei y
0
,y
N
eine Menge von Punkten im 1-dimensionalen Datenraum mit y
i-1
< y
i

fr 1 s i s N. Dann kann ber diese Menge ein binrer Baum mit minimaler Hhe
erzeugt werden, so dass ein Intervall [y
i-1
,y
i
] einem Blatt zugeordnet ist.
Einem inneren Knoten des Baums ist jenes Intervall (des Datenraums)
zugeordnet, welches sich aus der Vereinigung der Intervalle seiner Shne ergibt
Jedem Knoten wird eine Liste von Intervallen (Datenintervallen) zugeordnet
[y
0
,y
1
] [y
1
,y
2
] [y
N-1
,y
N
]
[y
0
,y
2
]
Geo-Informationssysteme 208
Segmentbaum (II)
Zuordnung der Datenintervalle
Ein Datenintervall I = [l,u] wird in der Liste eines Knotens abgelegt, falls I das
zugehrige Intervall des Knotens berdeckt, jedoch das Intervall des
Vaterknotens nicht berdeckt.
Suche im Baum
Finde zu einem gegebenen Punkt p alle Intervalle I, die p berdecken:
Bestimme den Pfad von der Wurzel zu dem Blatt, so dass das zugeordnete
Intervall des Knotens stets p enthlt. Die zugehrigen Knotenlisten enthalten
genau die Antwortmenge der Anfrage.
Aufwand: O(log N + r), wenn r die Gre der Antwortmenge ist
[y
0
,y
1
] [y
1
,y
2
] [y
N-1
,y
N
]
Geo-Informationssysteme 209
Segmentbaum (III)
Aufwandsanalyse
Aufbau des leeren Baums:
O(N) Zeit und O(N) Speicherplatz
Einfgen in den Baum:
Maximal zwei Knoten auf jeder Stufe des Baums sind durch das Einfgen
betroffen
Einfgen in die Liste bentigt O(1) Zeit
O(log N) Zeit
Gesamtspeicherplatzbedarf: O(N + N log N)
Lschen aus dem Baum:
analog zum Einfgen
O(log N) Zeit
Punktanfrage:
O(log N + r) Zeit
Geo-Informationssysteme 210
Punkteinschlussproblem (II)
Aufwandsanalyse
Bezeichner
n
r
= Anzahl der Rechtecke, n
p
= Anzahl der Punkte, n = n
r
+ n
p
k = Anzahl der gefundenen Paare (bestehend aus Punkt und Rechteck)
Sortieren der Haltepunkte (pro Rechteck 2, pro Punkt 1):
O(n log n) Zeit
Aufbau der leeren Baumstruktur:
Berechne die Intervallstruktur durch die y-Koordinaten der Rechtecke, sortiere
die Koordinaten und erzeuge dadurch den leeren Segmentbaum:
O(n
r
log n
r
) s O(n log n) Zeit
Einfgen und Lschen im Segmentbaum: O(n
r
log n
r
) Zeit
Punktanfragen: O(n
p
log n
r
+ k) Zeit
Gesamtkosten:
O(n log n + k) Zeit
O(n + n
r
log n
r
) Speicheraufwand
Nachteil: hoher Speicherplatzaufwand
Geo-Informationssysteme 211
5.4.2 Intervallbaum (I)
Motivation
Gibt es eine Datenstruktur mit linearem Speicheraufwand, die anstelle des
Segmentbaums beim Punkteinschlussproblem verwendet werden kann?
Aufbau des Skeletts eines Baums
Sei K
1
, K
2
, , K
n
eine Menge von Kanten mit K
i
= [u
i
,o
i
], 1 s i s n.
Sei P = { p
1
, , p
s
} die Menge der Punkte, die Eckpunkt von zumindest einer
Kante sind, s s 2n. Sortiere P, so dass p
i
< p
i+1
gilt.
Erzeuge einen binren Suchbaum mit minimaler Hhe ber die Punkte p
1
,,p
s
2
4 6 8
Menge der Intervalle
4
2
6
5
8 3
0
Skelett eines binren Baums
0
p
1
p
2
p
3
p
4
p
5
p
6
p
7
Geo-Informationssysteme 212
Intervallbaum (II)
Einfgen
Jeder Knoten Node besitzt einen Punkt (Node.p) und eine Menge von Kanten
{K
1
,,K
m
}, wobei jede Kante den Punkt Node.p enthalten.
Die Menge {K
1
,,K
m
} wird durch zwei sortierte Listen implementiert:
u-Liste: alle Kanten sind nach den u-Werten aufsteigend sortiert
o-Liste: alle Kanten sind nach den o-Werten absteigend sortiert
Eine Kante K wird in die beiden Listen des Knotens eingetragen, dessen Wert
beim Durchlauf von der Wurzel beginnend als erster in der Kante enthalten ist:
Algorithmus Insert (K, Node) // erster Aufruf erfolgt mit Node = Wurzel)
IF K.u s Node.p s K.o THEN
InsertIntoList (u_list, K.u);
InsertIntoList (o_list, K.o);
ELSIF K.o < Node.p THEN
Insert (K, Node.left)
ELSE
Insert (K, Node.right)
Geo-Informationssysteme 213
Intervallbaum (III)
Beispiel fr das Einfgen
Aufwand fr das Einfgen
Verwende zur Organisation der Listen balancierte binre Bume (AVL-Baum)
Einfgen in die o- und u-Liste bentigt O(log n) Zeit
Erreichen des Knotens im Intervallbaum: O(log n) Zeit
Gesamtbedarf: O(log n) Zeit
O(n) Speicherplatzbedarf
Lschen wird analog zum Einfgen vorgenommen
4
2
6
5
8 3
0
[0,5]
[0,8]
[3,4]
[0,8]
[0,5]
[3,4]
[0,2] [0,2]
[5,8]
[6,8]
[5,8]
[6,8]
2
4 6 8
0
p
1
p
2
p
3
p
4
p
5
p
6
p
7
u-Liste o-Liste
Geo-Informationssysteme 214
Intervallbaum (IV)
Suchen
Gegeben: Anfragepunkt x
Gesucht: alle Kanten K, die x enthalten
Algorithmus PointQuery (Node, x)
IF x = Node.p THEN
Gib alle Intervalle der u-Liste aus;
ELSIF x < Node.p THEN
Gib sequentiell den Anfang der u-Liste aus, bis ein Intervall rechts von x
liegt;
PointQuery (Node.left, x);
ELSE
Gib sequentiell den Anfang der o-Liste aus, bis ein Intervall links von x
liegt;
PointQuery (Node.right, x);
Geo-Informationssysteme 215
Intervallbaum (V)
Beispiel fr das Suchen
Aufwand fr das Suchen
Jede Antwort wird nur einmal gelesen
Fr jeden Knoten des Intervallbaums wird maximal auf ein Intervall zugegriffen,
das nicht eine Antwort ist.
Die Anfrage ist auf einen Pfad des Baums beschrnkt
Gesamtaufwand: O(log n + k) (k = Gre der Antwortmenge)
4
2
6
5
8 3
0
[0,5]
[0,8]
[3,4]
[1,8]
[1,5]
[3,4]
[0,2] [0,2]
[5,8]
[6,8]
[5,8]
[6,8]
Suche alle
Intervalle,
die Punkt 2
enthalten.
Geo-Informationssysteme 216
5.4.4 Der Prioritts-Suchbaum
Problem
Berechnung aller Paare sich schneidender Rechtecke
Bisherige Vorgehensweise
Lsung des Schnittproblems aller Kanten
Lsung des Punkteinschlussproblems
Probleme
Mehrmaliges Durchlaufen der Daten
Duplikate
Neue Vorgehensweise
Vermeidung der obengenannten Probleme durch direkte Plane-Sweep Lsung
Geo-Informationssysteme 217
Plane-Sweep Lsung
Unter dem y-Intervall eines Rechtecks R verstehen wir die Projektion des Rechtecks auf
die y-Achse.
Haltepunkte
x-Koordinaten des linken und rechten Randes der Rechtecke
Status
Besteht aus den y-Intervallen der Rechtecke, die derzeit die Sweepline
schneiden.
Die x-Intervalle dieser Rechtecke schneiden sich.
Haltepunkte
Geo-Informationssysteme 218
Aktionen
Haltepunkt ist linker Randpunkt eines Rechtecks R
Berechne die mit dem y-Intervall von R sich schneidenden y-Intervalle aus
dem Status. Gib das zugehrige Rechteck und R als Ergebnis aus.
Fge das y-Intervall in den Status ein.
Haltepunkt ist rechter Randpunkt eines Rechtecks R
Entferne das y-Intervall aus dem Status
Satz:
Durch den oben beschriebenen Sweepline Algorithmus wird jedes Paar sich
schneidender Rechtecke genau einmal erzeugt.
Beweisidee:
Zeige, dass jedes Schnittpaar mindestens einmal erzeugt werden muss.
Zeige, dass ein Schnittpaar nicht mehrmals erzeugt werden kann.
Fr die effiziente Implementierung des SwepLine-Verfahrens wird noch eine effiziente
Datenstruktur zur Verwaltung des Status bentigt.
Geo-Informationssysteme 219
Anforderungen
Entwurf einer effizienten (halbdynamischen) Datenstruktur
Verwaltung einer Menge M von Intervallen (maximale Anzahl: n)
Einfgen und Lschen von Intervallen
Zu einem Intervall I sollen in M alle Intervalle gefunden werden, die einen Schnitt
mit I besitzen.
Leistung
Einfgen und Lschen in O(log n)
Suchen in O(log n + k), wobei k die Anzahl der Antworten ist.
Speicherplatz: O(n)
Diese Anforderungen werden durch den von McCreight 1985 vorgestellten Prioritts-
Suchbaum (Priority Search Tree) erfllt. Wesentliche Ideen dabei sind:
Darstellung eines Intervalls I = [x, y] als zweidimensionaler Punkt in einem
zweidimensionalen Datenraum
Kombination von Suchbaum (bzgl. y-Achse) und Heap (bzgl. der x-Achse) in
einer Datenstruktur.
Geo-Informationssysteme 220
Transformation der Intervalle
Ein Intervall I = [x,y] aus einem eindimensionalen Datenraum wird in ein Punkt P = (x,y)
eines zweidimensionalen Datenraums transformiert.
ACHTUNG: Die Koordinaten des zweidimensionalen Datenraums der Punkte
werden wiederum mit x und y bezeichnet.
B = [4, 9]
A = [1, 6]
C = [2, 10]
D = [3, 5]
I = [4, 5]
5
10
5
10
B
A
D
C
I = (5, 4)
Suchraum
Formulierung einer Anfrage:
Gesucht sind alle Punkte P mit
(i) y
low
<= P.y <= y
high
und
(ii) P.x < x
low
X
Y
Geo-Informationssysteme 221
Skelett des Prioritts-Suchbaum
Ein Prioritts-Suchbaum ist ein Blattsuchbaum bzgl. der y-Achse und ein Min-
Heap bzgl. der x-Achse.
Entsprechend zu dem Intervallbaum wird ein Skelett ber der Menge aller von
den Intervallen angenommenen y-Werte aufgebaut.
Jeder Wert wird einem Blatt zugeordnet
Der Wert eines inneren Knotens (Splitwert) ergibt sich aus dem Maximum
des linken Teilbaums
2
2
9 4 8 6 3 5 7 10 1
1 3 5 7 9
4 8
6
Geo-Informationssysteme 222
Einfgen
Vereinfachende Annahme:
Jeder y-Wert des zweidimensionalen Datenraums der Punkte wird hchstens
einmal angenommen.
Eigenschaft der Datenstruktur:
In jedem Knoten des Prioritts-Suchbaum kann neben dem eigentlichen Wert
noch ein zweidimensionaler Punkt (Intervall) abgespeichert werden.
Nach dem Aufbau des Skeletts ist die Struktur leer, d.h. keinem der Knoten wurde
bisher ein Intervall zugeordnet.
Ziel beim Einfgen ist es insbesondere, die Intervalle mglichst nah bei der Wurzel
abzuspeichern.
Das erste Intervall wird deshalb stets in der Wurzel abgelegt.
Beim Einfgen weiterer Intervalle ist darauf zu achten, dass der Prioritts-
Suchbaum seine Heap-Eigenschaft bewahrt.
Geo-Informationssysteme 223
Algorithmus
Algorithmus insertPST (node, point)
// point besteht aus zwei Komponenten x und y:
// x wird als Prioritt interpretiert und y als Suchschlssel
// node besteht aus vier Komponenten: einem Punkt p, dem Splitwert split
// dem linken und rechten Teilbaum (left, right)
IF (node.p is not defined) THEN
node.p = point
ELSE
IF (node.p.x <= point.x)
// point luft in einen der Teilbume hinein
IF (node.split >= point.y) // Suchbaumkriterium
insertPST(node.left, point)
ELSE
insertPST(node.right, point)
ELSE
tmp = node.p;
node.p = point;
insertPST(node, tmp)
Geo-Informationssysteme 224
Beispiel (I)
Punktmenge: {(3,1), (4,2), (7,3), (2,4), (1,5), (6,6), (5,7), (4,8)}
Datenraum der y-Werte: {1,2,,8}
Nach dem Einfgen der ersten drei Punkte:
Beim Einfgen von (2,4) ist die Priorittseigenschaft bereits an der Wurzel
verletzt.
(2,4) wird an der Wurzel abgespeichert
Einfgen wird mit Punkt (3,1) fortgesetzt
7 2 6 4 1 3 5 8
1 3 5 7
2 6
4
(3,1)
(4,2)
(7,3)
Geo-Informationssysteme 225
Beispiel (II)
Nach dem Einfgen des Punkts (1,5)
7 2 6 4 1 3 5 8
1 3 5 7
2 6
4
(3,1)
(4,2) (7,3)
(2,4)
7 2 6 4 1 3 5 8
1 3 5 7
2 6
4
(2,4))
(3,1) (7,3)
(1,5)
(4,2)
Geo-Informationssysteme 226
Beispiel (III)
Nach dem Einfgen aller Punkte ergibt sich folgender Prioritts-Suchbaum
Bisher: Alle Punkte besitzen verschiedene y-Werte!
7 2 6 4 1 3 5 8
1 3 5 7
2 6
4
(2,4))
(3,1) (7,3)
(1,5)
(4,2)
(4,8)
(6,6)
(5,7)
Geo-Informationssysteme 227
Lschen
Zunchst wird beim Lschen stets eine Suche durchgefhrt, wobei hierzu nur der y-Wert
(und die Splitwerte der internen Knoten) benutzt wird.
Sei N der Knoten mit dem zu lschenden Punkt. Es werden folgende Flle betrachtet:
Falls nur N.left oder N.right einen Punkt besitzt, wird der entsprechende Punkt zu
N "hochgezogen".
Falls beide Kinder Punkte besitzen, wird derjenige Punkt mit dem kleineren x-
Wert hochgezogen.
Das Lschen pflanzt sich dann in dem entsprechenden Zweig fort.
Beispiel:
Betrachten wir das Lschen des Punkts (1,5) in unserem Beispiel.
Leistung
Der Aufwand fr das Einfgen und Lschen ist in einem Prioritts-Suchbaum O(log n).
Geo-Informationssysteme 228
Suchen
Gesucht sind alle Punkte (x,y) mit y in [y
low
, y
high
] und x < x
low
.
Strategie:
Wir suchen mit dem Bereich [y
low
, y
high
] zunchst die Wurzel des (kleinsten)
Teilbaums, in dem alle Antworten liegen. Wir nutzen dabei nur die
Suchbaumeigenschaft des Prioritts-Suchbaums.
Dieser Teilbaum wird gezielt rekursiv durchsucht. Findet man nun einen Knoten
mit einer zu hohen Prioritt, wird die Suche nicht (rekursiv) fortgesetzt.
y
low
y
high
Suchbereich
Geo-Informationssysteme 229
Aufwandsbetrachtung beim Suchen
Wichtige Beobachtungen
Jedem Knoten eines Prioritts-Suchbaums kann ein Intervall (Potential)
mglicher y-Werte zugeordnet werden.
Bei einer Suchanfrage mit dem Bereich [y
low
, y
high
] sind Antworten nur in den
Knoten, deren Potential sich mit dem Suchbereich schneidet.
Die relevanten Knoten befinden sich nun rechts von dem Suchpfad von y
low
und
links von dem Suchpfad von y
high
.
7 2 6 4 1 3 5 8
1 3 5 7
2 6
4
y
low
y
high
Geo-Informationssysteme 230
Aufwandsbetrachtung beim Suchen (II)
Ein Knoten, dessen Punkt eine zu hohe Prioritt besitzt, wird nicht mehr
betrachtet. Offensichtlich besitzen dann die Teilbume dieser Knoten keine
Ergebnisse.
Es folgt damit folgendes Resultat
Eine Suchanfrage in einem Prioritts-Suchbaum wird mit O(log n + k) Aufwand
beantwortet.
Damit gilt fr das Rechteckschnittproblem:
Unter Verwendung eines Prioritts-Suchbaums (zur Organisation des Sweep-
Line-Status) kann das Problem mit O(nlog n + k) Aufwand gelst werden.
Geo-Informationssysteme 231
5.5 Schnitte beliebiger Strecken
Bisherige Problemstellung:
Einschrnkung auf orthogonale Kanten
Primr anwendbar fr die Berechnung eines Filterschritts
z. B. Approximation polygonaler Objekte durch MUR
Verallgemeinerung der Probleme fr Objekte mit beliebigen
Strecken.
Kantenschnitttest
Gegegeben: Menge von Kanten
Ergebnis: Gibt es ein Paar sich schneidender Kanten
Kantenschnittberechnung
Gegegeben: Menge von Kanten
Ergebnis: Alle Schnittpunkte eines Paars sich schneidender Kanten
Polygonschnitt
Gegegeben: Zwei einfache Polygone
Ergebnis: Gibt es ein Schnitt der Polygone
Geo-Informationssysteme 232
5.5.1 Kantenschnitttest
Problem
Gegeben: Eine Menge von n Kanten
Ergebnis: Gibt es ein Paar sich schneidender Kanten
Lsungen
Naiver Algorithmus: O(n
2
)
Sweepline-Verfahren: O(n log n)
Idee beim Sweepline-Verfahren
Verwalten der Strecken, die gerade die Sweepline schneiden
X
Geo-Informationssysteme 233
Sweepline-Verfahren
Haltepunkte
Endpunkte der Strecken bzgl. der x-Achse sortiert
Sweep-Line-Status
Strecken, die einen Schnitt mit der Sweepline besitzen. Die Strecken sind sortiert
bezgl. des Schnittpunkts (y-Achse) mit der Sweepline.
Invariante: Kein Paar von benachbarten Strecken im Status schneiden sich.
Aktionen
Haltepunkt ist linker Endpunkt einer Strecke
Einfgen der Strecke in den Sweep-Line-Status
Testen der Strecken mit den beiden Nachbarn im Status, ob ein Schnitt
vorliegt.
Haltepunkt ist rechter Endpunkt einer Strecke
Entfernen der Kante aus dem Status
Testen der neuen Nachbarstrecken im Status, ob ein Schnitt vorliegt.
Geo-Informationssysteme 234
Leistung
Implementierung des Sweep-Line-Status
AVL-Baum, 2-3-Baum oder Rot-Schwarz-Baum
Einfgen und Lschen: O(log n)
Suche des Nachbarn: O(1)
Laufzeit:
O(n log n)
Dies ist auch tatschlich eine untere Schranke fr den schlimmsten Fall (worst-
case) des Problems und somit ist der Sweepline-Algorithmus asymptotisch
optimal.
Geo-Informationssysteme 235
5.5.2 Kantenschnittberechnung
Bisher:
Teste, ob es ein Schnitt zwischen einem Paar von Strecken gibt.
Jetzt:
Gegeben:
LB blaue Menge von sich nicht schneidenden Strecken
LR rote Menge von sich nicht schneidenden Strecken
Gesucht:
Alle Schnittpunkte von roten und blauen Strecken
Lsungsprinzip
Plane-Sweep (siehe auch Kantenschnitttest)
Haltepunkte: Endpunkte der Kanten sortiert nach x-Achse
Ein Status SB fr die blaue Kantenmenge und ein Status SR fr die rote
Kantenmenge.
Geo-Informationssysteme 236
Naiver Ansatz
Strategie der Schnittberechnung
Berechnung aller Schnitte einer roten bzw. blauen Kante, wenn diese aus dem
Status entfernt wird.
Algorithmusskizze
Betrachte alle blauen Kanten, die direkt oberhalb oder unterhalb der roten Kante
liegen.
Problem
Wie viele Nachbarn mssen betrachtet werden?
Geo-Informationssysteme 237
Problemfall
Kante k liegt zwischen der roten Kante und der oberen blauen Kante
Anzahl der dazwischenliegenden Kanten, die nicht schneiden, ist nicht
beschrnkt.
Algorithmus hat quadratische Laufzeit
k
Geo-Informationssysteme 238
Kegeleigenschaft
Ein Kegel ist begrenzt durch eine obere und untere Strecke mit
verschiedenen Farben
und einem gemeinsamen Schnittpunkt.
Beobachtung
Der Schnitt zweier Kanten u und v ist verdeckt, wenn eine dritte Kante im Kegel
von u und v liegt.
Idee
Berichte den Schnitt eines Kegels immer dann, wenn eine dritte Kante diesen
erstmals verdeckt.
k
u
v
p
Geo-Informationssysteme 239
Erweiterter Algorithmus
Falls der Haltepunkt ein Anfangspunkt einer Strecke ist:
Berechne die Kegel, in denen die Strecke liegt, und berichte die entsprechenden
Eckpunkte der Kegel als Ergebnis.
Die Kanten der Kegel sind benachbart in den Status der roten und blauen
Kanten.
Entferne aus den Strecken der Kegelkanten den Teil von der Sweepline bis zum
Schnitt.
Falls der Haltepunkt ein Endpunkt einer Strecke u ist:
Berichte alle im anderen Status liegenden Strecken, die benachbart zu u sind und
die einen gemeinsamen Schnittpunkt besitzen.
Satz
Die Laufzeit des Algorithmus ist O(n log n + k), wobei k die Anzahl der Schnitte
und n die Anzahl der Kanten ist.
Geo-Informationssysteme 240
5.5.3 Polygonschnitt
Polygonschnitt ist eine der wichtigsten Operationen in einem GIS.
Probleme
Testen auf Schnitt
Berechnung des Schnittpolygons
Algorithmusskizze fr den Polygonschnitttest
Gegeben: zwei einfache Polygone P und Q
Fall 1: P liegt in Q
Teste ob ein Eckpunkt von P in Q liegt.
Fall 2: P berdeckt Q
Teste ob ein Eckpunkt von Q in P liegt.
Fall 3: Zwei Kanten von P und Q schneiden sich.
Verwende den Kantenschnitttest.
Geo-Informationssysteme 241
Schnittberechnung (I)
Schritt 1: Klassifizierung der Knoten
Fr alle Punkte der Polygone P und Q wird bestimmt, ob sie sich im Inneren (I),
ueren (A) oder auf dem Rand (R) des jeweils anderen Polygons befinden.
Knotenliste des Beispiels:
K
P
= ((a
1
,A), (a
2
,I), (a
3
,A), (a
4
,A), (a
5
,R), (a
6
,R), (a
7
,A))
K
Q
= ((b
1
,A), (b
2
,A), (b
3
,R), (b
4
,R), (b
5
,A), (b
6
,I), (b
7
,A))
b
7
a
1
a
2
a
3
a
4
a
5
a
7
b
6
b
5
b
4
a
6
= b
3
b
2
b
1
P
Q
Geo-Informationssysteme 242
Schnittberechnung (II)
Schritt 2: Bestimmung der Schnittpunkte zwischen den Kanten
Alle Kanten des Polygons P werden auf Schnitt mit den Kanten von Polygon Q
getestet.
Schnittpunkte werden als Rand markiert und in die beiden Listen
eingefgt.
Beispiel
K
P
= ((a
1
,A),(s
1
,R),(a
2
,I),(s
2
,R),(a
3
,A),(a
4
,A),(s
3
,R),(a
5
,R),(a
6
,R),(a
7
,A))
K
Q
= ( (b
1
,A),(b
2
,A),(b
3
,R),(b
4
,R),(s
4
,R),(b
5
,A),(s
2
,R),(b
6
,I),(s
1
,R),(b7,A))
b
7
a
1
a
2
a
3
a
4
s
4
= a
5
a
7
b
6
b
5
s
3
= b
4
s
5
= a
6
= b
3
b
2
b
1
P
Q
s
1
s
2
Geo-Informationssysteme 243
Schnittberechnung (III)
Schritt 3: Klassifizierung und Selektion von Fragmentkanten
Durch ein Schnitt zweier Kanten zerfallen die Kanten in jeweils zwei
Fragmentkanten.
Eine der Fragmentkanten liegt innerhalb und die andere auerhalb des
jeweils anderen Polygons.
Diese Fragmentkanten werden durch zwei aufeinanderfolgende Punkte in
der Kantenliste definiert (letzter und erster Punkt sind benachbart).
uere
innere
(a1,A)
(a2,I)
(b1,A)
(b2,I)
Fragmentkante
Fragmentkante
(s,R)
Geo-Informationssysteme 244
Klassifizierung
innere Fragmentkante: Ein Punkt im Inneren und ein Punkt auf dem Rand.
uere Fragmentkante: Ein Punkt im ueren und ein Punkt auf dem Rand.
uere Fragmentkanten sind fr die Schnittberechnung irrelevant.
Randfragmentkanten: Beide Punkt auf dem Rand und Kante liegt im Inneren.
Beispiel (Liste der klassifizierten Fragmentkanten)
F
P
= {(s
1
a
2
,I), (a
2
s
2
,I), (s
3
a
5
,R), (a
5
a
6
,I)}
F
Q
= {(b
3
b
4
,I), (b
4
s
4
,R), (s
2
b
6
,I), (b
6
s
1
,I)}
b
7
a
1
a
2
a
3
a
4
s
4
= a
5
a
7
b
6
b
5
s
3
= b
4
s
5
= a
6
= b
3
b
2
b
1
P
Q
s
1
s
2
Geo-Informationssysteme 245
Schnittberechnung (IV)
Schritt 4: Vereinigung der Listen F
P
und F
Q
Gibt es in F
P
und F
Q
die gleiche Kante mit gleicher Orientierung
Entferne eine der beiden Kanten
Gibt es in F
P
und F
Q
die gleich Kante mit unterschiedlicher Orientierung
Entferne beide Kanten aus den Listen
Beispiel (Vereinigte Liste der Kanten)
F = {(s
1
a
2
), (a
2
s
2
), (s
3
a
5
), (a
5
a
6
), (b
3
b
4
), (s
2
b
6
), (b
6
s
1
)}
Generierung der Schnittpolygone:
Wiederhole die folgenden Schritte solange es noch Kanten in F gibt:
Nimm Kante aus F und danach iterativ die nachfolgende Kante.
Falls es keine solche Kante mehr gibt, wurde ein Schnittpolygon erzeugt
(d. h. der Endpunkt der letzten Kante mu gleich dem Anfangspunkt der
ersten Kante sein.)
Geo-Informationssysteme 246
Beispiel
Schnittpolygone:
(s
1
a
2
), (a
2
s
2
), (s
2
b
6
), (b
6
s
1
)
(s
3
a
5
), (a
5
a
6
), (b
3
b
4
)
b
7
a
1
a
2
a
3
a
4
s
4
= a
5
a
7
b
6
b
5
s
3
= b
4
s
5
= a
6
= b
3
b
2
b
1
P
Q
s
1
s
2
Geo-Informationssysteme 247
Zusammenfassung
Algorithmen in GIS basieren auf den theoertischen Grundlagen der
Computational Geometry.
Orthogonale Rechtecke
Schnitttest
Schnittberechnung
Mengenprobleme
Polygone
Schnitttest
Schnittberechnung
Mengenprobleme
Statt worst-case optimalen Datenstrukturen werden in der Praxis einfachere
Strukturen benutzt.
Einfachere Implementierung
Bessere Laufzeit fr konkrete Problemstellungen
Asypmtotisch optimal != praktisch optimal (hohe Konstanten)
Average Case relevanter als der Worst Case

Das könnte Ihnen auch gefallen