¨Ubung Algorithmische Geometrie Quad

Werbung
Übung Algorithmische Geometrie
Quad-trees
LEHRSTUHL FÜR ALGORITHMIK I · INSTITUT FÜR THEORETISCHE INFORMATIK · FAKULTÄT FÜR INFORMATIK
Benjamin Niedermann
02.07.2014
Benjamin Niedermann · Übung Algorithmische Geometrie
Übersicht
Übungsblatt 11 - Quadtrees
Benjamin Niedermann · Übung Algorithmische Geometrie
Motivation: Meshing von Platinenlayouts
Zur Simulation der Hitzeentwicklung auf
Platinen kann man die finite Elemente
Methode (FEM) einsetzen:
zerlege die Platine in kleine homogene
Elemente (z.B. Dreiecke) → Mesh
eigene Hitzeentwicklung und Einfluss
auf Nachbarn je Element bekannt
approximiere numerisch die gesamte
Hitzeentwicklung der Platine
Benjamin Niedermann · Übung Algorithmische Geometrie
Motivation: Meshing von Platinenlayouts
Zur Simulation der Hitzeentwicklung auf
Platinen kann man die finite Elemente
Methode (FEM) einsetzen:
zerlege die Platine in kleine homogene
Elemente (z.B. Dreiecke) → Mesh
eigene Hitzeentwicklung und Einfluss
auf Nachbarn je Element bekannt
approximiere numerisch die gesamte
Hitzeentwicklung der Platine
Qualitätseigenschaften von FEM:
je feiner das Mesh desto besser die Approximation
je gröber das Mesh desto schneller die Berechnung
je kompakter die Elemente desto schneller die Konvergenz
Benjamin Niedermann · Übung Algorithmische Geometrie
Motivation: Meshing von Platinenlayouts
Zur Simulation der Hitzeentwicklung auf
Platinen kann man die finite Elemente
Methode (FEM) einsetzen:
zerlege die Platine in kleine homogene
Elemente (z.B. Dreiecke) → Mesh
eigene Hitzeentwicklung und Einfluss
auf Nachbarn je Element bekannt
approximiere numerisch die gesamte
Hitzeentwicklung der Platine
Qualitätseigenschaften von FEM:
je feiner das Mesh desto besser die Approximation
je gröber das Mesh desto schneller die Berechnung
je kompakter die Elemente desto schneller die Konvergenz
Ziel:
adaptive Meshgröße (klein an Materialgrenzen, sonst gröber)
wohlgeformte Dreiecke (nicht zu schmal)
Benjamin Niedermann · Übung Algorithmische Geometrie
Adaptive Dreiecksnetze
Geg.: Quadrat Q = [0, U ] × [0, U ] für Zweierpotenz U = 2j
mit oktilinearen, ganzzahligen Polygonen im Inneren.
Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften
Benjamin Niedermann · Übung Algorithmische Geometrie
Adaptive Dreiecksnetze
Geg.: Quadrat Q = [0, U ] × [0, U ] für Zweierpotenz U = 2j
mit oktilinearen, ganzzahligen Polygonen im Inneren.
unzulässige Dreiecksknoten
Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften
keine Dreiecksknoten im Inneren von Dreieckskanten
Benjamin Niedermann · Übung Algorithmische Geometrie
Adaptive Dreiecksnetze
Geg.: Quadrat Q = [0, U ] × [0, U ] für Zweierpotenz U = 2j
mit oktilinearen, ganzzahligen Polygonen im Inneren.
nicht Teil des Dreiecksnetzes
Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften
keine Dreiecksknoten im Inneren von Dreieckskanten
Eingabekanten müssen Teil des Dreiecksnetzes sein
Benjamin Niedermann · Übung Algorithmische Geometrie
Adaptive Dreiecksnetze
Geg.: Quadrat Q = [0, U ] × [0, U ] für Zweierpotenz U = 2j
mit oktilinearen, ganzzahligen Polygonen im Inneren.
unzulässige Winkel
Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften
gültig
{
keine Dreiecksknoten im Inneren von Dreieckskanten
Eingabekanten müssen Teil des Dreiecksnetzes sein
Dreieckswinkel zwischen 45◦ und 90◦
Benjamin Niedermann · Übung Algorithmische Geometrie
Adaptive Dreiecksnetze
Geg.: Quadrat Q = [0, U ] × [0, U ] für Zweierpotenz U = 2j
mit oktilinearen, ganzzahligen Polygonen im Inneren.
uniformes Dreiecksnetz
Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften
gültig
{
keine Dreiecksknoten im Inneren von Dreieckskanten
Eingabekanten müssen Teil des Dreiecksnetzes sein
Dreieckswinkel zwischen 45◦ und 90◦
adaptiv, d.h. fein an den Polygonkanten, sonst
gröber
Benjamin Niedermann · Übung Algorithmische Geometrie
Adaptive Dreiecksnetze
Geg.: Quadrat Q = [0, U ] × [0, U ] für Zweierpotenz U = 2j
mit oktilinearen, ganzzahligen Polygonen im Inneren.
uniformes Dreiecksnetz
Ges.: Dreiecksnetz für Q mit folgenden Eigenschaften
gültig
{
keine Dreiecksknoten im Inneren von Dreieckskanten
Eingabekanten müssen Teil des Dreiecksnetzes sein
Dreieckswinkel zwischen 45◦ und 90◦
adaptiv, d.h. fein an den Polygonkanten, sonst
gröber
Kennen wir schon sinnvolle Triangulierungen für Q?
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 1
Delaunay Triangulierung ↔ Meshing
Meshing aus der Vorlesung liefert ausschließlich Dreiecke die ausschließich
nicht-stumpfe Winkel besitzen, d.h., keinen Winkel > 90◦ .
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 1
Delaunay Triangulierung ↔ Meshing
Meshing aus der Vorlesung liefert ausschließlich Dreiecke die ausschließich
nicht-stumpfe Winkel besitzen, d.h., keinen Winkel > 90◦ .
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 1
Delaunay Triangulierung ↔ Meshing
Meshing aus der Vorlesung liefert ausschließlich Dreiecke die ausschließich
nicht-stumpfe Winkel besitzen, d.h., keinen Winkel > 90◦ .
Sei nun T eine Triangulierung einer endlichen Punktmenge P ⊂ R2 ,
sodass jedes Dreieck nur nicht-stumpfe Winkel besitzt. Zeige, dass T eine
Delaunay Triangulierung ist.
Benjamin Niedermann · Übung Algorithmische Geometrie
Charakterisierung
Satz über Voronoi-Diagramme:
Ein Punkt q ist ein Voronoi-Knoten
⇔ |CP (q) ∩ P | ≥ 3,
der Bisektor b(pi , pj ) definiert eine Voronoi-Kante
⇔ ∃q ∈ b(pi , pj ) mit CP (q) ∩ P = {pi , pj }.
VL
Satz 4: Sei P eine Menge von Punkten.
Punkte p, q, r sind Knoten der gleichen Facette in
DG(P ) ⇔ Kreis durch p, q, r ist leer
Kante pq ist in DG(P )
⇔ es gibt einen leeren Kreis Cp,q durch p und q
Satz 5: Sei P Punktmenge und T eine Triangulierung von P .
T ist Delaunay-Triangulierung
⇔ Umkreis jedes Dreiecks ist im Inneren leer.
Benjamin Niedermann · Übung Algorithmische Geometrie
Der Satz von Thales
Satz 2: Alle Dreiecke aus den Endpunkten
des Kreisdurchmessers und eines
Halbkreispunktes sind rechtwinklig. a
b
Satz 20 : Alle Dreiecke aus den Endpunkten einer Sekante VL
` = ab und eines Kreispunktes c auf der gleichen Seite
von ` haben den gleichen Winkel an c. Für Dreiecke
∆abd mit d innerhalb des Kreises gilt ∠adb > ∠acd,
für e außerhalb des Kreises gilt ∠aeb < ∠acd.
c
c0
e
d
a
Benjamin Niedermann · Übung Algorithmische Geometrie
b
∠aeb < ∠acb = ∠ac0 b < ∠adb
Aufgabe 1
Annahme: Es gibt Triangulierung T mit nur nicht-stumpfen Dreiecken,
die keine Delaunay-Triangulierung ist.
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 1
Annahme: Es gibt Triangulierung T mit nur nicht-stumpfen Dreiecken,
die keine Delaunay-Triangulierung ist.
Es gibt Dreieck ∆ = (pqr) dessen Umkreis einen weiteren Punkt z enthält.
r
C
m
q
p
z
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 1
Annahme: Es gibt Triangulierung T mit nur nicht-stumpfen Dreiecken,
die keine Delaunay-Triangulierung ist.
Es gibt Dreieck ∆ = (pqr) dessen Umkreis einen weiteren Punkt z enthält.
z kann so gewählt werden, dass mit mind. zwei Punkten von ∆ verbunden.
r
C
m
q
p
z
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 1
Annahme: Es gibt Triangulierung T mit nur nicht-stumpfen Dreiecken,
die keine Delaunay-Triangulierung ist.
Es gibt Dreieck ∆ = (pqr) dessen Umkreis einen weiteren Punkt z enthält.
z kann so gewählt werden, dass mit mind. zwei Punkten von ∆ verbunden.
1. Fall: z liegt außerhalb von ∆
O.B.d.A. sei z mit p und q verbunden.
r
C
m
q
p
z
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 1
Annahme: Es gibt Triangulierung T mit nur nicht-stumpfen Dreiecken,
die keine Delaunay-Triangulierung ist.
Es gibt Dreieck ∆ = (pqr) dessen Umkreis einen weiteren Punkt z enthält.
z kann so gewählt werden, dass mit mind. zwei Punkten von ∆ verbunden.
1. Fall: z liegt außerhalb von ∆
O.B.d.A. sei z mit p und q verbunden.
Sei C 0 Kreis durch p und q Mittelpunkt m0
auf Hälfte von pq
r
C
m
q
m0
p
z
C0
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 1
Annahme: Es gibt Triangulierung T mit nur nicht-stumpfen Dreiecken,
die keine Delaunay-Triangulierung ist.
Es gibt Dreieck ∆ = (pqr) dessen Umkreis einen weiteren Punkt z enthält.
z kann so gewählt werden, dass mit mind. zwei Punkten von ∆ verbunden.
1. Fall: z liegt außerhalb von ∆
O.B.d.A. sei z mit p und q verbunden.
r
Sei C 0 Kreis durch p und q Mittelpunkt m0
auf Hälfte von pq
C
Nach Satz 2’ liegt r nicht im Inneren von C 0
Da z in C liegt, muss z auch in C 0 liegen.
m
q
m0
p
z
C0
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 1
Annahme: Es gibt Triangulierung T mit nur nicht-stumpfen Dreiecken,
die keine Delaunay-Triangulierung ist.
Es gibt Dreieck ∆ = (pqr) dessen Umkreis einen weiteren Punkt z enthält.
z kann so gewählt werden, dass mit mind. zwei Punkten von ∆ verbunden.
1. Fall: z liegt außerhalb von ∆
O.B.d.A. sei z mit p und q verbunden.
r
Sei C 0 Kreis durch p und q Mittelpunkt m0
auf Hälfte von pq
C
Nach Satz 2’ liegt r nicht im Inneren von C 0
Da z in C liegt, muss z auch in C 0 liegen.
m
q
◦
Nach Satz 2’ ist Winkel an z größer 90
m0
p
z
C0
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 1
Annahme: Es gibt Triangulierung T mit nur nicht-stumpfen Dreiecken,
die keine Delaunay-Triangulierung ist.
Es gibt Dreieck ∆ = (pqr) dessen Umkreis einen weiteren Punkt z enthält.
z kann so gewählt werden, dass mit mind. zwei Punkten von ∆ verbunden.
1. Fall: z liegt außerhalb von ∆
O.B.d.A. sei z mit p und q verbunden.
r
Sei C 0 Kreis durch p und q Mittelpunkt m0
auf Hälfte von pq
C
Nach Satz 2’ liegt r nicht im Inneren von C 0
Da z in C liegt, muss z auch in C 0 liegen.
m
q
◦
Nach Satz 2’ ist Winkel an z größer 90
2. Fall: z liegt innerhalb von ∆
Ähnliche Argumentation.
Benjamin Niedermann · Übung Algorithmische Geometrie
m0
p
z
C0
Quadtrees
Def.: Ein Quadtree ist ein Wurzelbaum, in dem jeder innere
Knoten vier Kinder hat. Jeder Knoten entspricht einem
Quadrat und die Quadrate der Blätter bilden eine
Unterteilung des Wurzelquadrats.
NO
Benjamin Niedermann · Übung Algorithmische Geometrie
NW
SW
SO
Quadtrees
Def.: Ein Quadtree ist ein Wurzelbaum, in dem jeder innere
Knoten vier Kinder hat. Jeder Knoten entspricht einem
Quadrat und die Quadrate der Blätter bilden eine
Unterteilung des Wurzelquadrats.
Seiten
Kanten
NO
Ecken
Nachbarn
Benjamin Niedermann · Übung Algorithmische Geometrie
NW
SW
SO
Quadtrees
Def.: Ein Quadtree ist ein Wurzelbaum, in dem jeder innere
Knoten vier Kinder hat. Jeder Knoten entspricht einem
Quadrat und die Quadrate der Blätter bilden eine
Unterteilung des Wurzelquadrats.
Def.: Für eine Punktmenge P in einem Quadrat
0
Q = [xQ , x0Q ] × [yQ , yQ
] gilt für den Quadtree T (P )
ist |P | ≤ 1, so ist T (P ) ein Blatt, das P und Q speichert
xQ +x0Q
2
0
yQ +yQ
2
sonst sei xmid =
und ymid =
und
PN O := {p ∈ P | px > xmid and py > ymid }
PN W := {p ∈ P | px ≤ xmid and py > ymid }
PSW := {p ∈ P | px ≤ xmid and py ≤ ymid }
PSO := {p ∈ P | px > xmid and py ≤ ymid }
T (P ) besteht aus Wurzel v, die Q speichert, mit vier
Kindern für Pi und Qi (i ∈ {N O, N W, SW, SO}).
Benjamin Niedermann · Übung Algorithmische Geometrie
Beispiel
Benjamin Niedermann · Übung Algorithmische Geometrie
Beispiel
Benjamin Niedermann · Übung Algorithmische Geometrie
Beispiel
Benjamin Niedermann · Übung Algorithmische Geometrie
Beispiel
Benjamin Niedermann · Übung Algorithmische Geometrie
Beispiel
Benjamin Niedermann · Übung Algorithmische Geometrie
Beispiel
Benjamin Niedermann · Übung Algorithmische Geometrie
Quadtree Eigenschaften
Die rekursive Definition eines Quadtrees lässt sich direkt in
einen Algorithmus zur Konstruktion umsetzen.
Welche Tiefe hat ein Quadtree für n Punkte?
Lemma 1: Die Tiefe von T (P ) ist höchstens log(s/c) + 3/2,
wobei c der kleinste Abstand in P ist und s die
Seitenlänge des Wurzelquadrats Q.
Satz 1:
Ein Quadtree T (P ) für n Punkte und mit Tiefe d
hat O((d + 1)n) Knoten und kann in O((d + 1)n)
Zeit konstruiert werden.
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 2
Komprimierte Quadtrees
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 2
Komprimierte Quadtrees
NO
Benjamin Niedermann · Übung Algorithmische Geometrie
NW
SW
SO
Aufgabe 2
Komprimierte Quadtrees
NO
Benjamin Niedermann · Übung Algorithmische Geometrie
NW
SW
SO
Aufgabe 2
Komprimierte Quadtrees
NO
Benjamin Niedermann · Übung Algorithmische Geometrie
NW
SW
SO
Aufgabe 2
Komprimierte Quadtrees
NO
Benjamin Niedermann · Übung Algorithmische Geometrie
NW
SW
SO
Aufgabe 2
Komprimierte Quadtrees
NO
Benjamin Niedermann · Übung Algorithmische Geometrie
NW
SW
SO
Aufgabe 2
Komprimierte Quadtrees
NO
Benjamin Niedermann · Übung Algorithmische Geometrie
NW
SW
SO
Aufgabe 2
Komprimierte Quadtrees
NO
NW
SW
Anzahl der Knoten jetzt O(n) (statt O((d + 1)n))
Laufzeit für Umwandlung?
Aufwand für Konstruktion verringern?
Benjamin Niedermann · Übung Algorithmische Geometrie
SO
Aufgabe 3
Balancierte Quadtrees
Benjamin Niedermann · Übung Algorithmische Geometrie
Balancierte Quadtrees
Def.: Ein Quadtree heißt balanciert, wenn die Seitenlänge von
je zwei Nachbarquadraten in der zugeh. Unterteilung
sich um einen Faktor von höchstens 2 unterscheidet.
VL
Benjamin Niedermann · Übung Algorithmische Geometrie
Quadtrees balancieren
BalanceQuadtree(T )
Input: Quadtree T
Output: balancierter Quadtree T
L ← Liste aller Blätter von T ;
while L nicht leer do
µ ← extrahiere Blatt aus L;
if µ.Q zu groß then
Teile µ.Q in vier Teile und lege vier Blätter in T an;
füge neue Blätter zu L hinzu;
if µ.Q hat jetzt zu große Nachbarn then füge sie zu L hinzu;
return T
Satz 3: Sei T ein Quadtree mit m Knoten und Tiefe d. Die
balancierte Version TB von T hat O(m) Knoten und
kann in O((d + 1)m) Zeit konstruiert werden.
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 3
Balancierte Quadtrees
Abänderung: Alle Rechtecke gleich groß
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 3
Balancierte Quadtrees
Abänderung: Alle Rechtecke gleich groß
Frage: Wie viele Blätter?
Benjamin Niedermann · Übung Algorithmische Geometrie
Wiederholung: Bereichsanfrage
Szenario:
großer Straßengraph
zeige nur einen kleinen Ausschnitt
Problem: Bereichsanfrage
Gegeben eine Punktmenge P (die Knoten in dem Straßengraph) sowie
ein Rechteck R, finde alle Punkte aus P die in R liegen.
Einfache Lösung:
Teste für jeden Punkt p ∈ P , ob p in R liegt.
⇒ Laufzeit O(|P |), dabei werden ggf. sehr viel weniger Punkte angezeigt.
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 4
Quadtrees für Range Queries?
Wie kann man Quadtrees für Bereichsanfragen nutzen?
Benjamin Niedermann · Übung Algorithmische Geometrie
Bereichsabfrage in einem kd-Tree
p4
p5
p12
p8
p2
p1
p3
p7
p10
p9
p6
p3 p4 p5
p1 p2
p13
p11
p11 p12 p13
p6
p7 p8 p9 p10
Benjamin Niedermann · Übung Algorithmische Geometrie
SearchKdTree(v, R)
if v Blatt then
prüfe Punkt p in v auf p ∈ R;
else
if region(lc(v)) ⊆ R then
L
V
ReportSubtree(lc(v));
else
if region(lc(v)) ∩R 6= ∅ then
SearchKdTree(lc(v), R);
if region(rc(v)) ⊆ R then
ReportSubtree(rc(v));
else
if region(rc(v)) ∩R 6= ∅ then
SearchKdTree(rc(v), R);
Bereichsabfrage
PNW
PNO
PSW
PSO
R
Benjamin Niedermann · Übung Algorithmische Geometrie
Bereichsabfrage
PNW
PNO
PSW
PSO
R
Starte mit der Wurzel
Benjamin Niedermann · Übung Algorithmische Geometrie
Bereichsabfrage
PNW
PNO
PSW
PSO
R
Starte mit der Wurzel
→ Rekursionsaufruf für alle vier Kinder
Benjamin Niedermann · Übung Algorithmische Geometrie
Bereichsabfrage
PNW
PNO
PSW
PSO
R
Starte mit der Wurzel
→ Rekursionsaufruf für alle vier Kinder
→ Süd-Ost-Knoten: vorzeitiger Abbruch und Ausgabe der enthaltenen
Punkte
Benjamin Niedermann · Übung Algorithmische Geometrie
Bereichsabfrage
PNW
PNO
PSW
PSO
R
Starte mit der Wurzel
→ Rekursionsaufruf für alle vier Kinder
→ Süd-Ost-Knoten: vorzeitiger Abbruch und Ausgabe der enthaltenen
Punkte
→ Süd-West-Knoten: Rekursionsaufruf für zwei Kinder
→ Nord-West-Knoten: Rekursionsaufruf für ein Kind
Benjamin Niedermann · Übung Algorithmische Geometrie
Bereichsabfrage
PNW
PNO
PSW
PSO
R
Starte mit der Wurzel
→ Rekursionsaufruf für alle vier Kinder
→ Süd-Ost-Knoten: vorzeitiger Abbruch und Ausgabe der enthaltenen
Punkte
→ Süd-West-Knoten: Rekursionsaufruf für zwei Kinder
→ Nord-West-Knoten: Rekursionsaufruf für ein Kind
→ Rekursionsende (Blätter erreicht): gib resultierende Knoten aus
Benjamin Niedermann · Übung Algorithmische Geometrie
Bereichsabfrage
PNW
PNO
PSW
PSO
R
Wie geht das schnell?
Starte mit der Wurzel
→ Rekursionsaufruf für alle vier Kinder
→ Süd-Ost-Knoten: vorzeitiger Abbruch und Ausgabe der enthaltenen
Punkte
→ Süd-West-Knoten: Rekursionsaufruf für zwei Kinder
→ Nord-West-Knoten: Rekursionsaufruf für ein Kind
→ Rekursionsende (Blätter erreicht): gib resultierende Knoten aus
Benjamin Niedermann · Übung Algorithmische Geometrie
Problem 3(b)
Gegeben:
gewurzelter Baum T
bis zu ein Punkt in jedem Blatt von T
ein Knoten v in T
Gesucht: Punkte
aller Nachfolgern von v
Benjamin Niedermann · Übung Algorithmische Geometrie
v
Problem 3(b)
Gegeben:
gewurzelter Baum T
bis zu ein Punkt in jedem Blatt von T
ein Knoten v in T
Gesucht: Punkte
aller Nachfolgern von v
Ansatz
traversiere Teilbaum Tv
Benjamin Niedermann · Übung Algorithmische Geometrie
Tv
v
Laufzeit
O(|Tv |)
Speicher Vorverarbeitungszeit
×
×
Problem 3(b)
Gegeben:
gewurzelter Baum T
bis zu ein Punkt in jedem Blatt von T
ein Knoten v in T
Gesucht: Punkte
aller Nachfolgern von v
Ansatz
traversiere Teilbaum Tv
speichere alle
nachfolgenden Punkte
Benjamin Niedermann · Übung Algorithmische Geometrie
Tv
v
Laufzeit
O(|Tv |)
Speicher Vorverarbeitungszeit
×
×
Problem 3(b)
Gegeben:
gewurzelter Baum T
bis zu ein Punkt in jedem Blatt von T
ein Knoten v in T
Gesucht: Punkte
aller Nachfolgern von v
v
Ansatz
traversiere Teilbaum Tv
Laufzeit
speichere alle
nachfolgenden Punkte
O(k)
Benjamin Niedermann · Übung Algorithmische Geometrie
Tv
O(|Tv |)
Speicher Vorverarbeitungszeit
×
×
O(d · |P |)
(k = Anzahl gefundener Punkte)
O(d · |P |)
Problem 3(b)
Gegeben:
gewurzelter Baum T
bis zu ein Punkt in jedem Blatt von T
ein Knoten v in T
Gesucht: Punkte
aller Nachfolgern von v
v
Ansatz
traversiere Teilbaum Tv
Laufzeit
speichere alle
nachfolgenden Punkte
O(k)
speichere Start und Ende in
Punktliste
Benjamin Niedermann · Übung Algorithmische Geometrie
Tv
O(|Tv |)
Speicher Vorverarbeitungszeit
×
×
O(d · |P |)
(k = Anzahl gefundener Punkte)
O(d · |P |)
Problem 3(b)
Gegeben:
gewurzelter Baum T
bis zu ein Punkt in jedem Blatt von T
ein Knoten v in T
Tv
Gesucht: Punkte
aller Nachfolgern von v
v
Ansatz
traversiere Teilbaum Tv
Laufzeit
speichere alle
nachfolgenden Punkte
O(k)
speichere Start und Ende in
Punktliste
Benjamin Niedermann · Übung Algorithmische Geometrie
O(|Tv |)
Speicher Vorverarbeitungszeit
×
×
O(d · |P |)
O(d · |P |)
(k = Anzahl gefundener Punkte)
O(k)
O(|T |)
O(|T |)
Aufgabe 4
Quadtrees für Range Queries?
Welchen Aufwand hat das Verfahren?
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 4
Quadtrees für Range Queries?
Welchen Aufwand hat das Verfahren?
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 4
Quadtrees für Range Queries?
Welchen Aufwand hat das Verfahren?
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 4
Quadtrees für Range Queries?
Welchen Aufwand hat das Verfahren?
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 4
Quadtrees für Range Queries?
Welchen Aufwand hat das Verfahren?
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 4
Quadtrees für Range Queries?
Welchen Aufwand hat das Verfahren?
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 4
Quadtrees für Range Queries?
Welchen Aufwand hat das Verfahren?
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 4
Was, wenn Anfragebereich eine durch eine vertikale Gerade
begrenzte Halbebene ist?
Benjamin Niedermann · Übung Algorithmische Geometrie
Aufgabe 4
Was, wenn Anfragebereich eine durch eine vertikale Gerade
begrenzte Halbebene ist?
Benjamin Niedermann · Übung Algorithmische Geometrie
Zugehörige Unterlagen
Herunterladen