Randomisiert inkrementelle Konstruktion der Trapez- zerlegung ...
Randomisiert inkrementelle Konstruktion der Trapez- zerlegung ...
Randomisiert inkrementelle Konstruktion der Trapez- zerlegung ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
1<br />
Problemstellung<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong><br />
<strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong><br />
einer Menge von<br />
Strecken in <strong>der</strong> Ebene<br />
• Gegeben: Eine Menge von n<br />
Strecken S in <strong>der</strong> Ebene<br />
• Berechne: Die von S induzierte<br />
ebene Unterteilung (unterteile<br />
die Strecken aus S bei den<br />
Schnittpunkten)<br />
(Literatur: deBerg et al., Kapitel 6)<br />
Christian Knauer<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
2<br />
<strong>Trapez</strong><strong>zerlegung</strong> einer Menge von Strecken<br />
Beispiel <strong>Trapez</strong><strong>zerlegung</strong> …<br />
• S: Menge von n Strecken in <strong>der</strong> Ebene mit k Schnittpunkten<br />
• <strong>Trapez</strong><strong>zerlegung</strong> von S<br />
• Verfeinerung<strong>der</strong> von S induzierten ebene Unterteilung<br />
• zeichne durch jeden <strong>der</strong> End- und Schnittpunkte <strong>der</strong><br />
Strecken in S eine vertikale Strecke nach oben und unten bis<br />
eine Strecke aus S getroffen wird<br />
• unterteile die Strecken aus S bei den Punkten an denen eine<br />
vertikale Erweiterung auftrifft<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
3<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
4<br />
… Beispiel <strong>Trapez</strong><strong>zerlegung</strong> …<br />
… Beispiel <strong>Trapez</strong><strong>zerlegung</strong> …<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
5<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
6
7<br />
… Beispiel <strong>Trapez</strong><strong>zerlegung</strong><br />
Eigenschaften <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong><br />
• Facetten sind <strong>Trapez</strong>e o<strong>der</strong> Dreiecke (mit evtl. unterteilten<br />
Seiten)<br />
• Komplexität: O(n+k)<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
8<br />
Problemstellung<br />
Inkrementeller Aufbau<br />
• Gegeben: Eine Menge von n<br />
Strecken S in <strong>der</strong> Ebene (mit k<br />
Schnittpunkten)<br />
• Berechne: Die <strong>Trapez</strong><strong>zerlegung</strong><br />
von S<br />
• Annahme: Die Strecken aus S<br />
sind in allgemeiner Lage, d.h. in<br />
einem Punkt schneiden sich<br />
höchstens zwei Strecken und die<br />
x-Koordinaten aller End- und<br />
Schnittpunkte sind verschieden<br />
• S = (s 1 ,…,s n )<br />
• T i ist die <strong>Trapez</strong><strong>zerlegung</strong> zu S i := {s 1 ,…,s i }<br />
• konstruiere T i aus T i-1 durch Einfügen von s i (für i>1)<br />
• finde das <strong>Trapez</strong> t von T i-1 , das einen Endpunkt p von s i<br />
enthält („Konfliktlokalisierung“)<br />
• finde von t aus alle <strong>Trapez</strong>e und Kanten von T i-1 , die von s i<br />
geschnitten werden („Durchfädeln“)<br />
• füge neue vertikale Kanten von den Endpunkten von s i und<br />
den Schnittpunkten von s i mit Strecken aus S i-1 ein<br />
(„Unterteilen“)<br />
• schneide vorhandene vertikale Kanten die s i schneiden bei<br />
den Schnittpunkten ab und verschmelze die zu den<br />
entfernten Kanten adjazenten <strong>Trapez</strong>e („Verkürzen“)<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
9<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
10<br />
Beispiel: <strong>Konstruktion</strong> von T i<br />
aus T i-1<br />
…<br />
… Beispiel: Durchfädeln von s i<br />
…<br />
s i<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
11<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
12
13<br />
… Beispiel: Unterteilen …<br />
… Beispiel: Verkürzen…<br />
s i s i<br />
14<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
… Beispiel: Verkürzen …<br />
… Beispiel: Die Zerlegung T i<br />
s i<br />
s i<br />
16<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
15<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
Lokalisierung von Streckenendpunkten in T i<br />
G i<br />
: Geschichte <strong>der</strong> <strong>Konstruktion</strong> von T i<br />
• Verwendung einer zusätzlichen Datenstruktur G i<br />
• speichert die Geschichte <strong>der</strong> <strong>Konstruktion</strong> von T i<br />
• ermöglicht Punktlokalisierung in T i<br />
• Konfliktlokalisierung für einen Endpunkt p von s i durch<br />
Punktlokalisierung von p in T i<br />
• Anpassen <strong>der</strong> Datenstruktur beim Einfügen neuer Strecken<br />
• erwartete Suchzeit Õ(log n) pro Anfrage, erwartete<br />
Grösse Õ(n+k)<br />
• gerichteter azyklischer Graph<br />
• Blätter sind beschriftet mit einem <strong>Trapez</strong> t?T i<br />
• innere Knoten v<br />
• haben Ausgrad2<br />
• sind beschriftet mit<br />
• einem Endpunkt p(v)einer <strong>der</strong> Strecken aus S i<br />
o<strong>der</strong><br />
• einer Strecke s(v)?S i<br />
• repräsentieren eine Region r(v) <strong>der</strong> Ebene<br />
• wenn v die Wurzel ist, dann ist r(v)= R 2<br />
• wenn v das Kind eines Knotens u ist, <strong>der</strong> mit einem Endpunktp(u)<br />
einer <strong>der</strong> Strecken aus S i<br />
beschriftet ist, dann ist<br />
• r(v)={p?r(u) | p ist links von p(u)}, falls v linkes Kind von u ist<br />
• r(v)={p?r(u) | p ist rechts von p(u)}, falls v rechtes Kind von u ist<br />
• wenn v das Kind eines Knotens u ist, <strong>der</strong> mit einer Strecke s(u)?S i<br />
beschriftet ist, dann ist<br />
• r(v)={p?r(u) | p ist oberhalb von s(u)}, falls v linkes Kind von u ist<br />
• r(v)={p?r(u) | p ist unterhalb von s(u)}, falls v rechtes Kind von u ist<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
17<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
18
19<br />
Aufbau von G 1<br />
p 2<br />
<strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
• im Unterteilungsschritt wird ein <strong>Trapez</strong> aus T i-1 in höchstens 4<br />
<strong>Trapez</strong>e unterteilt<br />
p 2<br />
U<br />
p 1<br />
1<br />
W<br />
T<br />
p 1<br />
s<br />
s<br />
T<br />
V<br />
W<br />
r<br />
r<br />
U<br />
V<br />
s<br />
l<br />
s<br />
s<br />
l<br />
l<br />
s<br />
l<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
20<br />
<strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
<strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
• erzeuge für jedes <strong>Trapez</strong> das im Unterteilungsschritt entsteht<br />
ein neues Blatt und passe die Suchstruktur an den<br />
Blättern von G i-1 entsprechend an<br />
• erzeuge für jedes <strong>Trapez</strong> das im Unterteilungsschritt entsteht<br />
ein neues Blatt und passe die Suchstruktur an den<br />
Blättern von G i-1 entsprechend an<br />
G i-1<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
21<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
22<br />
<strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
<strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
• erzeuge für jedes <strong>Trapez</strong> das im Unterteilungsschritt entsteht<br />
ein neues Blatt und passe die Suchstruktur an den<br />
Blättern von G i-1 entsprechend an<br />
• erzeuge für jedes <strong>Trapez</strong> das im Unterteilungsschritt entsteht<br />
ein neues Blatt und passe die Suchstruktur an den<br />
Blättern von G i-1 entsprechend an<br />
r<br />
G i-1<br />
s<br />
G i-1<br />
l<br />
l<br />
s<br />
r<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
23<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
24
25<br />
<strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
• erzeuge für jedes <strong>Trapez</strong> das im Unterteilungsschritt entsteht<br />
ein neues Blatt und passe die Suchstruktur an den<br />
Blättern von G i-1 entsprechend an<br />
<strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
• erzeuge für jedes <strong>Trapez</strong> das im Unterteilungsschritt entsteht<br />
ein neues Blatt und passe die Suchstruktur an den<br />
Blättern von G i-1 entsprechend an<br />
s<br />
G i-1<br />
l<br />
G i-1<br />
l<br />
s<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
26<br />
<strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
<strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
• erzeuge für jedes <strong>Trapez</strong> das im Unterteilungsschritt entsteht<br />
ein neues Blatt und passe die Suchstruktur an den<br />
Blättern von G i-1 entsprechend an<br />
• erzeuge für jedes <strong>Trapez</strong> das im Unterteilungsschritt entsteht<br />
ein neues Blatt und passe die Suchstruktur an den<br />
Blättern von G i-1 entsprechend an<br />
r<br />
G i-1<br />
l<br />
s<br />
G i-1<br />
l<br />
r<br />
s<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
27<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
28<br />
<strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
<strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
• erzeuge für jedes <strong>Trapez</strong> das im Unterteilungsschritt entsteht<br />
ein neues Blatt und passe die Suchstruktur an den<br />
Blättern von G i-1 entsprechend an<br />
• Identifiziere Blätter von G i <strong>der</strong>en korrespondierende <strong>Trapez</strong>e<br />
beim Verkürzen miteinan<strong>der</strong> verschmelzen<br />
G i-1<br />
l<br />
s<br />
l<br />
s<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
29<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
30
31<br />
Beispiel: <strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
…<br />
… Beispiel: <strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
…<br />
G i-1<br />
T U V W<br />
T U V W<br />
G i-1<br />
T U V W<br />
p<br />
s<br />
q<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
32<br />
… Beispiel: <strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
…<br />
… Beispiel: <strong>Konstruktion</strong> von G i<br />
aus G i-1<br />
G i-1<br />
q<br />
p<br />
t<br />
t 1<br />
u 1<br />
v 1<br />
w 1<br />
3<br />
T p U s V s W q<br />
t2 u 2<br />
s v 2<br />
w 2 w 3<br />
s<br />
s<br />
t 3<br />
u 1 u 2 v 2 v 1<br />
w 3<br />
t 2 t 1<br />
w 2 w 1<br />
G i-1<br />
q<br />
p t 1<br />
v 1<br />
w 1<br />
t 3<br />
T p U s V s W q<br />
t s w<br />
w 3<br />
2<br />
2<br />
s<br />
s<br />
t v 3 1 w 3<br />
t 2 t 1<br />
w 2 w 1<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
33<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
34<br />
Punktlokalisierung in T i<br />
mit Hilfe von G i<br />
Beispiel: Suchen in T 1<br />
mit Hilfe von G 1<br />
q 1<br />
• suche, ausgehend von <strong>der</strong> Wurzel von G i , rekursiv das <strong>Trapez</strong><br />
von T i (= Blatt von G i ), in dem <strong>der</strong> Anfragepunkt qliegt<br />
• sei vein innerer Knoten von G i mit q?r(v)<br />
• wenn v mit einem Endpunkt p(v) einer Strecke aus S i<br />
beschriftet ist, dann<br />
• fahre mit <strong>der</strong> Suche im linken Kind von v fort, falls q links<br />
von p(v) liegt<br />
• fahre mit <strong>der</strong> Suche im rechten Kind von v fort, falls q<br />
rechts von p(v) liegt<br />
• wenn v mit einer Strecke s(v)?S i beschriftet ist, dann<br />
• fahre mit <strong>der</strong> Suche im linken Kind von v fort, falls q über<br />
s(v) liegt<br />
• fahre mit <strong>der</strong> Suche im rechten Kind von v fort, falls q<br />
unter s(v) liegt<br />
q 1<br />
q<br />
p<br />
p 1<br />
1<br />
W<br />
T s 1<br />
s 1<br />
V<br />
T<br />
U V<br />
U<br />
W<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
35<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
36
37<br />
Beispiel: Suchen in G i<br />
mit Hilfe von G i<br />
Algorithmus<br />
Insert(s i )<br />
G i-1<br />
V<br />
T p i U<br />
s<br />
s i V s i W q i<br />
s<br />
q i<br />
p i t 1<br />
v 1<br />
w 1<br />
t 3<br />
t si w 2<br />
q w 3<br />
2<br />
i i<br />
t v 3 1 w 3<br />
t 2 t 1<br />
w 2 w 1<br />
suche in G i-1 das <strong>Trapez</strong> t von T i-1 das einen Endpunkt von s i enthält<br />
finde von t aus alle <strong>Trapez</strong>e und Kanten von T i-1 , die von s i geschnitten<br />
werden<br />
füge neue vertikale Kanten von den Endpunkten von s i und den<br />
Schnittpunkten von s i mit Strecken aus S i-1 ein<br />
erzeuge für jedes <strong>Trapez</strong> das entsteht ein neues Blatt in G i und passe<br />
die Suchstruktur an den Blättern von G i-1 entsprechend an<br />
schneide vorhandene vertikale Kanten die s i schneiden bei den<br />
Schnittpunkten ab und verschmelze die zu den entfernten Kanten<br />
adjazenten <strong>Trapez</strong>e<br />
identifiziere Blätter von G i <strong>der</strong>en korrespondierende <strong>Trapez</strong>e miteinan<strong>der</strong><br />
verschmelzen<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
38<br />
Bemerkungen<br />
Laufzeitanalyse<br />
• halbdynamischer Algorithmus zur Berechnung <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong><br />
• liefert Datenstruktur zur Punktlokalisierung in <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong><br />
• <strong>der</strong> Algorithmus ist deterministisch, er trifft keine Zufallsentscheidungen<br />
beim Einfügen von S in einer festen<br />
Reihenfolge ?<br />
• wir nehmen an, dass alle Einfügereihenfolgen gleich wahrscheinlich<br />
sind<br />
• die Anzahl <strong>der</strong> von dem Algorithmus durchgeführten<br />
Schritte ist eine Zufallsvariable<br />
• wir betrachten den Erwartungswert dieser Zufallsvariable<br />
als Maß für die Effizienz des Algorithmus<br />
• wir nennen diesen Erwartungswert die erwartete Laufzeit<br />
des Algorithmus bei zufälliger Einfügereihenfolge<br />
• es werden keine Annahmen über die statistische Verteilung<br />
<strong>der</strong> Eingabe gemacht<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
39<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
40<br />
Übersicht Laufzeitanalyse<br />
Kosten für die strukturellen Än<strong>der</strong>ungen …<br />
• Gesamtkosten setzen sich zusammen aus<br />
• Kosten für die strukturellen Än<strong>der</strong>ungen <strong>der</strong> ebenen<br />
Unterteilung und die <strong>Konstruktion</strong> <strong>der</strong> Geschichte<br />
• O(n log n + k) erwartet<br />
• Bem.:Die Kosten für die <strong>Konstruktion</strong> <strong>der</strong> Geschichte<br />
sind asymptotisch genauso gross, wie die Kosten für die<br />
strukturellen Än<strong>der</strong>ungen <strong>der</strong> ebenen Unterteilung<br />
• Kosten für die Lokalisierungvon Streckenendpunkten in <strong>der</strong><br />
Geschickte<br />
• Õ(logn) pro Punktlokalisierungsanfrage<br />
• sei S`? S fest mit |S‘|=i<br />
• im folgenden sei ausserdem T:=T i-1 , T‘:=T i<br />
• betrachte den i-ten Einfügeschritt mit S i =S‘ und die<br />
Zufallsvariable<br />
T St (? ) := Kosten für die strukturellen Än<strong>der</strong>ungen im i-ten<br />
Schritt beim Ablauf des Algorithmus auf <strong>der</strong> Eingabe S mit<br />
<strong>der</strong> Einfügereihenfolge ?<br />
• erwartete Kosten (unter <strong>der</strong> Bedingung S i =S‘)<br />
E St := E[T St |S i =S‘ ] =<br />
? s?S‘ Pr(s wurde im i-ten Schritt eingefügt|S i =S‘)·<br />
(Kosten für das Einfügen von s)<br />
= (1/i) ? s?S‘ (Kosten für das Einfügen von s)<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
41<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
42
43<br />
… Kosten für die strukturellen Än<strong>der</strong>ungen …<br />
• für t?T bezeichnet f(t) die Anzahl <strong>der</strong> Kanten von t<br />
• Komplexität des Einfügens von s ist O(? t?T, t schneidet s f(t))<br />
… Kosten für die strukturellen Än<strong>der</strong>ungen …<br />
E St = ? s?S‘ Pr(s wurde im i-ten Schritt eingefügt|S i =S‘)·<br />
(Kosten für das Einfügen von s)<br />
= (1/i) ? s?S‘ (Kosten für das Einfügen von s)<br />
= (1/i) ? s?S‘ ? t?T, t schneidet s f(t)<br />
s<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
44<br />
… Kosten für die strukturellen Än<strong>der</strong>ungen …<br />
… Kosten für die strukturellen Än<strong>der</strong>ungen …<br />
• ? t?T, t schneidet s f(t) = ? t?T‘, s inzident zu t f(t)<br />
E St = ? s?S‘ Pr(s wurde im i-ten Schritt eingefügt|S i =S‘)·<br />
(Kosten für das Einfügen von s)<br />
= (1/i) ? s?S‘ (Kosten für das Einfügen von s)<br />
= (1/i) ? s?S‘ ? t?T, t schneidet s f(t)<br />
= (1/i) ? s?S‘ ? t?T‘, s inzident zu t f(t)<br />
s<br />
s<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
45<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
46<br />
… Kosten für die strukturellen Än<strong>der</strong>ungen …<br />
… Kosten für die strukturellen Än<strong>der</strong>ungen …<br />
• ? s?S‘ ? t?T‘, s inzident zu t f(t) = 4? t?T‘ f(t)<br />
• jedes <strong>Trapez</strong> t?T‘ ist zu höchstens 4 Strecken s?S‘ adjazent<br />
E St = ? s?S‘ Pr(s wurde im i-ten Schritt eingefügt|S i =S‘)·<br />
(Kosten für das Einfügen von s)<br />
= (1/i) ? s?S‘ (Kosten für das Einfügen von s)<br />
= (1/i) ? s?S‘ ? t?T, t schneidet s f(t)<br />
= (1/i) ? s?S‘ ? t?T‘, s inzident zu t f(t)<br />
= (1/i) 4? t?T‘ f(t)<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
47<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
48
49<br />
… Kosten für die strukturellen Än<strong>der</strong>ungen …<br />
E St = ? s?S‘ Pr(s wurde im i-ten Schritt eingefügt|S i =S‘)·<br />
(Kosten für das Einfügen von s)<br />
= (1/i) ? s?S‘ (Kosten für das Einfügen von s)<br />
= (1/i) ? s?S‘ ? t?T, t schneidet s f(t)<br />
= (1/i) ? s?S‘ ? t?T‘, s inzident zu t f(t)<br />
= (1/i) 4? t?T‘ f(t)<br />
= O((1/i) (n+K)) wobei K = # Schnittpunkte in S‘<br />
… Kosten für die strukturellen Än<strong>der</strong>ungen …<br />
• sei Y eine Zufallsvariable mit <strong>der</strong> Eigenschaft, dass die<br />
Ereignisse (Y=y i ):={? ?O| Y(?)=y i } für y 1 ,…,y k eine Partition<br />
von O bilden dann ist E[X] = ? i Pr(Y=y i ) E[X|Y=y i ]<br />
• Beweis:<br />
? i Pr(Y=y i ) E[X|Y=y i ] = ? i Pr(Y=y i )? ? X(? ) Pr(? |Y=y i ) =<br />
? i ? ? Pr(Y=y i ) X(? ) Pr(? |Y=y i ) =<br />
? ? ? i Pr(Y=y i ) X(? ) Pr(? |Y=y i ) =<br />
? ? X(? ) ? i Pr(Y=y i ) Pr(? |Y=y i ) =<br />
? ? X(? ) Pr(? ) =<br />
E[X]<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
50<br />
… Kosten für die strukturellen Än<strong>der</strong>ungen …<br />
… Kosten für die strukturellen Än<strong>der</strong>ungen …<br />
• erwartete Kosten unter <strong>der</strong> Bedingung S i =S‘<br />
E[T St |S i =S‘ ] = O((1/i) (n+#Schnittpunkte in S‘ ))<br />
• betrachte die Zufallsvariable<br />
K(? ) := Anzahl <strong>der</strong> Schnittpunkte in S i<br />
• erwartete Kosten<br />
E[T St ] = ? S‘?S, |S‘|=i Pr(S i =S‘)E[T St |S i =S‘ ]<br />
= ? S‘?S, |S‘|=i Pr(S i =S‘)O((1/i) (n+#Schnittpunkte in S‘ ))<br />
= O((1/i) (n+E[K]))<br />
• sei q 1 ,…,q k die Menge <strong>der</strong> Schnittpunkte <strong>der</strong> Strecken aus S<br />
• definiere für j=1,…,k die 0-1-Zufallsvariablen<br />
K j =1 gdw. <strong>der</strong> Schnittpunkt q j liegt in T‘<br />
• dann ist<br />
K = ? j=1...k K j und E[K] = ? j=1...k E[K j ] = ? j=1...k Prob(q j liegt in T‘)<br />
• angenommen, q j ist <strong>der</strong> Schnittpunkt <strong>der</strong> Strecken u,v?S<br />
⎛n<br />
−2⎞<br />
⎛n<br />
⎞<br />
Prob(q j liegt in T‘) = Prob({u,v}?S‘) = ⎜<br />
⎟ /<br />
⎜<br />
⎟<br />
⎝i<br />
−2⎠<br />
⎝i<br />
⎠<br />
• damit ist<br />
E[K] = ki(i-1)/(n(n-1)) und<br />
E[T St ] = O((1/i) (n+ki(i-1)/(n(n-1))))<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
51<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
52<br />
… Kosten für die strukturellen Än<strong>der</strong>ungen<br />
Suchzeit in G i<br />
…<br />
• die erwarteten Gesamtkosten für die strukturellen Än<strong>der</strong>ungen<br />
<strong>der</strong> ebenen Unterteilung und die <strong>Konstruktion</strong> <strong>der</strong> Geschichte<br />
erhält man durch Summation über E[T St ]<br />
? i=1,...,n O((1/i) (n+ki(i-1)/(n(n-1)))) = O(nh n +k/2) = O(n log n+k)<br />
• sei p? IR 2 ein fester Punkt<br />
• betrachte Zufallsvariable L : O àIR,<br />
wobei für ? ?O<br />
L(? ) := Länge des Suchpfades von p in G i beim Ablauf des<br />
Algorithmus auf <strong>der</strong> Eingabe S mit <strong>der</strong> Einfügereihenfolge ?<br />
• für 4 = k = i bezeichnet b k das Blatt von G k , das p enthält<br />
• definiere die 0-1-Zufallsvariable<br />
L k =1 gdw. b k-1 ? b k<br />
• L =O(? k=4...i L k )<br />
• wenn b k-1 ? b k dann wird b k-1 bei <strong>der</strong> <strong>Konstruktion</strong> von G k zu einem<br />
inneren Knoten v<br />
• auf dem Suchpfad von p in G k ist v O(1) Knoten vor b k<br />
• E[L] =O(? k=4...i E[L k ])<br />
• Linearität des Erwartungswertes<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
53<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
54
55<br />
… Suchzeit in G i<br />
…<br />
• Pr(b k-1 ?b k ) = 4/k<br />
• Rückwärtsanalyse: sei T k ? S fest mit |T k |=k<br />
• Pr(b k-1 ? b k | S k =T k ) =<br />
Pr(r(b k ) wird durch s k begrenzt | S k =Q k ) =<br />
Pr(s k ? {Strecken von S k die r(b k ) definieren} | S k =Q k ) = 4/k<br />
• Pr(b k-1 ? b k ) = ? |T|=k Pr(S k =T) Pr(b k ? b k-1 | S k =T) = 4/k<br />
• E[L] = O(log i)<br />
• E[L] =O(? k=4...i E[L k ]) = O(? k=4...i Pr(b k-1 ? b k )) = O(? k=4...i 4/k)=O(h i )<br />
• L = Õ(log i)<br />
• Chernoff-Schranke für harmonische Zufallsvariablen<br />
… Suchzeit in G i<br />
• T i := von den Stützgeraden <strong>der</strong> Strecken aus T i induzierte Unterteilung<br />
• T i ist eine Verfeinerung von T i<br />
• alle Punkte in einer Facette von T i haben in G i den gleichen Suchpfad<br />
• #{Suchpfade in G i } = #{Facetten von T i } = O(i 2 )<br />
• aus je<strong>der</strong> Facette von T i wählen wir einen Punkt {q 1 ,…,q j } mit j=O(i 2 )<br />
• Tiefe von G i = max { L p | p? {q 1 ,…,q j }} = Õ(log i)<br />
• Pr(Tiefe von G i > c log i) =<br />
Pr (Länge des Suchpfades von q 1 in G i > c log i o<strong>der</strong> …<br />
… o<strong>der</strong> Länge des Suchpfades von q j in G i > c log i ) =<br />
Pr (Länge des Suchpfades von q 1 in G i > c log i) + …<br />
… + Pr(Längedes Suchpfades von q j in G i > c log i ) =<br />
#{Suchpfade in G i } ·<br />
Pr(Länge des Suchpfades eines festen Punktes in G i > c log i )<br />
= O(i 2 )·(1/p(c,i)) für alle c>c 0 >0 mit lim cà8 deg n (p(c,i))à8<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
56<br />
Zusammenfassung<br />
• Satz: Zu einer Menge S von n Strecken in <strong>der</strong> Ebene mit k<br />
Schnittpunkten kann in O(n log n + k) erwarteter Zeit die<br />
<strong>Trapez</strong><strong>zerlegung</strong> T(S) von S konstruiert werden. Dabei wird<br />
eine Datenstruktur <strong>der</strong> Grösse Õ(n+k) aufgebaut, mit <strong>der</strong><br />
man in Õ(log n) Zeit Punktlokalisierungsanfragen in T(S) beantworten<br />
kann.<br />
<strong>Randomisiert</strong> <strong>inkrementelle</strong> <strong>Konstruktion</strong> <strong>der</strong> <strong>Trapez</strong><strong>zerlegung</strong> in <strong>der</strong> Ebene - Christian Knauer<br />
57