29.01.2014 Aufrufe

Randomisiert inkrementelle Konstruktion der Trapez- zerlegung ...

Randomisiert inkrementelle Konstruktion der Trapez- zerlegung ...

Randomisiert inkrementelle Konstruktion der Trapez- zerlegung ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!