Literatur 6.1.1 Einführung in mehrdimensionale

Werbung
Literatur
Kap. 6: Geometrische Algorithmen
•  M. de Berg, O. Cheong, M. van Krefeld, und M.
Overmars: Computational Geometry, Springer 2008,
Kap. 5: Orthogonal Range Searching, Kap. 14:
Quadtrees
•  F. P. Preparata und M. I. Shamos: Computational
geometry: an introduction, 1985, Springer, Kap. 2.3
Range-Searching Problems
•  R.A. Finkel und J.L. Bentley: Quad trees: A data stucture
for retrieval on composite keys, Acta Informatica 4, 1974,
S. 1-9
•  J. L. Bentley: Multidimensional binary search trees used
for associative searching, Communications of the ACM,
vol. 18, no. 9, 1975, S. 509-517
6.1 Mehrdimensionale Suchstrukturen
Professor Dr. Petra Mutzel
Lehrstuhl für Algorithm Engineering, LS11
Fakultät für Informatik, TU Dortmund
23./24. VO
A&D WS 08/09 20./22. Januar 2009
Petra Mutzel
Alg. & Dat.
WS 08/09
1
Petra Mutzel
Alg. & Dat.
WS 08/09
2
6.1.1 Einführung in
mehrdimensionale Suchstrukturen
Überblick:
6.1 Mehrdimensionale Suchstrukturen
•  Gegeben:
–  Menge S von N Punkten in Rk
–  Familie U von Untermengen von Rk (Ranges)
–  δ∈U
•  Gesucht:
–  Vorverarbeitung von S, so dass Abfragen der Art:
``Berichte alle Punkte in S∩δ´´ effizient berichtet
werden können.
6.1.1 Einführung in mehrdimensionale
Suchstrukturen
6.1.2 Point-region quad trees
6.1.3 Point quad trees
6.1.4 K-d trees
6.1.5 Range trees
•  Beispiel: Datenbankabfragen
Petra Mutzel
Alg. & Dat.
WS 08/09
3
Anwendungsbereiche
• 
• 
• 
• 
• 
• 
• 
• 
• 
Alg. & Dat.
Alg. & Dat.
WS 08/09
4
Charakterisierung (1)
Datenbanken
Computergraphik / Computer Vision
Computer-Aided Design
Geographische Informationssysteme
Bildverarbeitung
Mustererkennung
Document-Retrieval
Data Mining
...
Petra Mutzel
Petra Mutzel
•  Welche Datentypen werden gespeichert?
–  S ist ungeordnete Menge (z.B. Index)
–  S ist kartes. Produkt S1х S2 х...х Sk geordn.
Mengen
•  Dimension:
–  k ist kleiner gleich 10
•  Operationen:
–  Find, Insert, Delete, (Pred., Succ., Min, Max)
•  Welche Speichermedien?
–  intern vs. extern
WS 08/09
5
Petra Mutzel
Alg. & Dat.
WS 08/09
6
1
Wir betrachten folgende
Abfragen:
Charakterisierung (2)
•  Welche Objekttypen werden gespeichert?
–  Punkte, Container (z.B. Quader in 3D), komplexere
–  Lage fixiert oder beweglich?
•  Punkt-Abfrage (Point Query):
–  Ist ein gegebener Datenpunkt in S∈Rk enthalten, und
falls ja, dann finde diesen.
•  Welche Abfragen und wie oft?
–  Ist Punkt enthalten?
–  Aufzählung aller Punkte, die in gewünschtem k-dim.
Bereich liegen
–  Welche Punkte liegen in der Nähe eines Punktes?
–  Finde die n nächsten Nachbarn eines Punktes
–  Exakte vs. partielle Abfragen
–  Einmalige vs. viele Abfragen
Petra Mutzel
Alg. & Dat.
WS 08/09
•  Bereichsabfrage (Range Query):
–  Berichte alle Punkte aus S, deren k Schlüssel in den
gewünschten Bereichen liegen.
7
•  Sequentielle Liste
–  Aufwand: O(N k)
•  Invertierte Liste (Knuth 1973)
–  Sortierte Liste pro Schlüssel
–  Durchschnittlicher Aufwand:
O(N1-1/k)
–  Aufwand: O(N k)
Petra Mutzel
„Trie“
X-key
Y-key
D
5
45
C
35
40
O
25
35
M
50
10
X-key
Y-key
D
M
O
O
C
C
M
D
Alg. & Dat.
WS 08/09
9
WS 08/09
8
Petra Mutzel
Alg. & Dat.
WS 08/09
10
6.1.2 Point-Region Quadtrees
voneines
Punkten
in einem
k-dim. Bereich
•  Repräsentation
Repräsentation
2-dim.
Binärbildes
(Region Data)
•  Rekursive Teilung eines quadratischen
0/1Bereiches in vier
gleich große Quadranten, STOP falls Block nur 0 oder nur
1 Punkt enthält
•  Jedem Feld wird ein Knoten in einem Suchbaum mit
Maximal- Grad 4 zugeordnet
•  Jedes Kind eines Knotens repräsentiert Quadranten
(NW,NE,SW,SE)
•  Blätter ← Aufteilung nicht weiter notwendig
•  Blätter sind entweder ``weiß´´ (falls kein Punkt enthalten
ist) oder ``schwarz´´ (sonst), innere Knoten sind ``grau´´
•  Repräsentation eines 2-dim. Binärbildes (Region Data)
•  Rekursive Teilung eines 0/1-Bereiches in vier gleich große
Quadranten, STOP falls Block nur 0 oder nur 1 enthält
•  Suchbaum mit Grad 4 (s. Beispiel)
•  Jedes Kind eines Knotens repräsentiert Quadranten
(NW,NE,SW,SE)
•  Blätter → Aufteilung nicht weiter notwendig
•  Blätter sind entweder ``weiß´´ oder ``schwarz´´, innere
Knoten sind ``grau´´
Alg. & Dat.
WS 08/09
•  Suchraum wird in gleiche Teile (Buckets) der Größe r
aufgeteilt, wobei r der Suchradius ist
•  Realisiert als k-dim. Array mit einem Eintrag per Bucket;
jeder Bucket enthält Punkte in Form einer einfachen Liste
•  Durchschnittlicher Suchaufwand für Bereichssuche
(Bentley 1977): O(F 2k), wobei F die Anzahl der
berichteten Punkte ist
•  Effizient, wenn fixer Radius und Datenpunkte gleichmäßig
im Raum verteilt sind (Kartographie)
•  Teilt den Raum auf
Region Quadtrees
Petra Mutzel
Alg. & Dat.
``Fixed Grid´´ Methode
Einfache Datenstrukturen
Name
Petra Mutzel
11
Petra Mutzel
Alg. & Dat.
WS 08/09
12
2
Point-Region Quadtrees:
Beispiel N=10 Punkte
k=2
(0,100)
PR Quadtree für Beispiel
(100,100)
(50,50)
(25,25)
(75,25)

(75,75)
y
(0,0)
x
(100,0)
Petra Mutzel
Aufbau eines PR Quadtrees
k=2:
Top-Down Aufbau:
•  Starte mit Feld B, das alle Knoten enthält
•  Sei vB der zugehörige Knoten im Suchbaum
•  Falls B mehr als einen Knoten enthält, dann
–  erzeuge 4 Kinder von vB im Suchbaum
–  weise jedem Kind-Feld Bi alle Knoten aus B zu, welche
in Bi enthalten sind
–  entferne leere Kind-Felder vBi im Baum
„Z-Order, DFS-Order“
Alg. & Dat.
WS 08/09
Morton Order
[Morton 1966] space filling curve: bildet einen
k-dimensionalen Bereich auf eine Dimension ab
Alternativ: Insert-Aufbau:
•  Starte mit leerem Feld B und füge iterativ die Knoten ein
•  Einfügen geht ähnlich wie bei binären Suchbäumen:
suche das richtige Feld, Suche endet an Blatt, füge ein.
Laufzeit ?
Baum hat Tiefe N
→
Laufzeiten beider Aufbau-Algorithmen: O(N2)
(0,100)
(100,100)

2
y
2
3
3
5
(0,0)
Abb. aus
Wikipedia
6.1.3 Point Quad Trees
•  Eingeführt von Finkel & Bentley 1974
•  Multidimensionale Verallgemeinerung von binären
Suchbäumen
•  Verheiratung von ``Fixed Grid´´ mit binären Suchbäumen
•  Rekursive Teilung an Datenpunkten in jeweils vier Teile:
NW,NE,SW, SE
•  Hier Annahme:
–  k=2, Verallg. einfach
–  Jeder Punkt wird nur einmal besetzt
1
1
14
4
x
(100,0)
4
5
Petra Mutzel
Alg. & Dat.
WS 08/09
18
3
Beispiel:
Point Quadtree zu Beispiel
A
G
H
K
J
C
B
L
J
F
D
F
M
N
I
K
E
H
L
G
B
I
A
M
D
C
E
N
Point Quad Trees: Operation
Insert
Beispiel: Insert Z
•  Jeder innere Knoten enthält
–  Zeiger zu Kindern NW,NE,SW,SE
–  CHILD(P,I): gibt Kind im Quadranten I von Knoten P an
–  XCOORD, YCOORD: Koordinaten von Punkt
–  NAME: Information über Punkt (z.B. Name)
G
Alg. & Dat.
WS 08/09
K
L
H
G
M
B
D
C
I
E
Z
I
E
A
M
N
Petra Mutzel
Alg. & Dat.
WS 08/09
22
Point Quadtrees: Analyse Aufbau
A
F
Z
C
B
L
21
Point Quadtree zu Beispiel:
Insert Z
J
F
D
J
•  Ähnlich wie für binäre Suchbäume:
–  Suche den Punkt (nach x und y-key)
–  Wenn Blatt erreicht ist, dann bestimme Position, an die
eingefügt werden muss.
Petra Mutzel
H
K
N
•  Aufbau eines Point Quadtrees:
–  Aufwand ist äquivalent zur Gesamtpfadlänge = Kosten,
um nach allen Elementen einmal zu suchen
•  Gesamtpfadlänge:
–  Hängt von Reihenfolge der Einfügungen der Punkte ab
–  Empirisch: N log4 N (Finkel & Bentley)
–  Worst Case: θ(N2)
•  Aufwand für Insert und Search
–  Empirisch: O(log4 N)
–  Worst Case: O(N)
–  Re-Balancing Methoden sind möglich
Petra Mutzel
Alg. & Dat.
WS 08/09
26
4
Point Quadtrees: Deletion
Beispiel: Deletion
Delete A:
•  Problem:
–  Geht nicht so leicht wie bei binären Suchbäumen
–  Beispiel: Entfernung von A
G
H
K
F
D
J
C
B
L
I
E
A
M
N
Petra Mutzel
Alg. & Dat.
WS 08/09
27
Beispiel: Deletion
Delete A:
Point Quadtrees: Deletion
•  Problem:
–  Unterbäume des gelöschten Knotens müssen eventuell
neu eingefügt werden, denn sie sind nicht mehr im
richtigen Quadranten bzgl. der neuen Wurzel
–  Original-Vorschlag war daher: alle diese Unterbäume neu
einfügen
–  Besser: Vorschlag von Samet:
G
H
K
F
D
J
C
B
L
I
E
A
M
N
Petra Mutzel
Alg. & Dat.
WS 08/09
30
Wunsch: Finde einen Punkt Z, so dass die
Zwischen-RegionBeispiel:
def. durch Z und A leer ist
Point Quadtrees: Deletion
•  Problem:
–  Unterbäume des entfernten Knotens müssen neu
eingefügt werden
–  Alle Knoten mit deren Unterbäumen, die in der
Zwischenregion liegen, müssen neu eingefügt werden.
•  Idee:
–  Wähle in jedem Unterquadranten des zu entfernenden
Knotens einen Kandidaten aus, der am nächsten bei x
oder y-Koordinate ist.
–  Wähle aus diesen vier Kandidaten dann den besten aus.
G
H
K
F
D
J
C
B
L
I
E
A
M
N
Petra Mutzel
Alg. & Dat.
WS 08/09
31
Petra Mutzel
& Dat. WS 08/09
Problem: Z muss
nichtAlg.existieren!
32
5
Deletion:
FIND_CANDIDATE(P,Q)
Kriterium 1: Wähle denjenigen, der am nächsten
Beispiel:
Kandidaten
bei A liegt
bzgl. x und y nach
Punkt mit Kriterium
1 muss nicht existieren: Bsp
FIND_CAND
Pointer node procedure FIND_CANDIDATE(P,Q)
// P pointer to the son in quadrant Q of the
node to be deleted. //
// OPQUAD(Q) gives quadrant 180 degrees
apart from Q //
1.  begin
2.  if not(null(P))
3. 
while not(null(CHILD(P,OPQUAD(Q)))) do
4. 
P  CHILD(P,OPQUAD(Q));
5.  return(P);
6.  end;
Petra Mutzel
Alg. & Dat.
WS 08/09
G
M
N
33
F
C
B
L
I
E
A
x
Denn: Punkt im Quadranten gegenüber
liegt sicher nicht in Zwischenregion
und mind. ein anderer Punkt ist auch
außerhalb.
M
Kriterium 1 garantiert, dass Zwischenregion
leer ist
N
Kriterium 2 garantiert, dass höchstens ein anderer
Kandidat innerhalb der Zwischenregion liegt
Delete Punkt A
Beispiel:
Kriterium 1 garantiert, dass Zwischenregion leer ist
Point Quadtrees: Deletion - Vorgehen
G
D
I
E
A
H
J
C
B
L
Beispiel: Kandidaten nach
FIND_CAND
K
F
D
J
Kriterium 1: Wähle denjenigen, der am nächsten bei A liegt
bzgl. x und y
Kriterium 2 (NEU): Wähle denjenigen Punkt i mit kleinstem
Punkt
1 muss nichtmin
existieren:
Bsp
Abstandmit
zu Kriterium
einer Koordinatenachse:
(|xi-x|,|yi-y|)
y
H
K
•  Sei P der zu entfernende Punkt, R ist Wurzel
•  Falls P kein oder nur ein Kind hat: einfach
•  Sonst:
–  Bestimme die vier Kandidaten pro Quadrant
–  Bestimme den besten Kandidaten nach Kriterien 1,2
–  Sei J bester Kandidat, J liegt in Quadrant Q bzgl. P:
–  Kopiere xcoord, ycoord, name –  Rekursiver Umbau des nächsten Quadranten im
Uhrzeigersinn CQUAD(Q) mit Hilfe von ADJQUAD()
–  Rekursiver Umbau des nächsten Quadranten im Gegenuhrzeigersinn CCQUAD(Q) mit Hilfe von ADJQUAD()
–  Rekursiver Umbau des Quadranten Q mit Hilfe von
NEWROOT()
Beispiel nach Deletion von A
G
G
H
K
C
B
L
D
F
D
J
H
K
J
I
L
E
F
C
B
E
I
A
M
M
N
N
6
Quadtree zu Beispiel nach
Deletion von A
Point Quadtree vor Delete A
A
B
F
J
D
H
G
C
L
E
K
I
F
L
H
G
Petra Mutzel
Alg. & Dat.
WS 08/09
M
B
D
C
N
I
E
42
Point Quadtrees: Analyse
Deletion
Pseudo Quadtrees
•  Theoretisch (Bentley 1988):
–  Aufwand bei gleichmäßig verteilten Daten für die Anzahl der
Neueinfügungen geht um 83% zurück gegenüber der
Neueinfügung aller Teilbäume.
•  Empirisch (Bentley 1988):
–  Empirisch: N log4 N vs. deutlich größer in Original
–  Gesamtpfadlänge verringert sich leicht vs. deutlich Verlängerung in
Original
•  Overmars und van Leeuwen 1982
•  Idee:
–  Rekursive Aufteilung des Raumes an Punkten, die nicht
Datenpunkte sind, in Quadranten, Unterquadranten,
etc., bis jeder Unterquadrant höchstens einen
Datenpunkt enthält.
•  Worst Case:
–  O(N2)
•  Deletion sehr komplex!
•  Alternative: Pseudo Quadtrees
Petra Mutzel
Alg. & Dat.
WS 08/09
Pseudo Quadtrees: Beispiel
(0,100)
50
Petra Mutzel
Alg. & Dat.
WS 08/09
51
Pseudo Quadtree für Beispiel
(100,100)
(40,50)
(60,75)
TORONTO
70,70

K
J
N
M
y
(80,65)
BUFFALO
(40,50)
(35,40)
(5,45)
DENVER CHICAGO
(25,35) (26,37)
OMAHA
(0,0)
(85,15)
ATLANTA
(65,12)
(50,10)
Mobile
x
(70,70)
TORONTO
BUFFALO
(26,37)
(65,12)
OMAHA
DENVER
CHICAGO
ATLANTA MIAMI
MOBILE
(90,5)
MIAMI
(100,0)
Petra Mutzel
Alg. & Dat.
WS 08/09
53
7
Pseudo Quadtrees:
Point Quadtrees: Diskussion
•  Nachteile bei höheren Dimensionen:
–  An jedem Knoten des Baumes sind k Vergleiche
notwendig (um den Quadranten zu bestimmen)
–  Hoher Speicherplatzverbrauch: Jedes Blatt benötigt k
viele NULL Pointer, auch jeder innere Knoten besitzt
immer wieder NULL Pointer
–  Speicherplatzverbrauch pro Knoten: k+2k+1 Wörter für
Koordinaten, Kinder und Info
•  Aufbau:
–  Für je N Datenpunkte im k-dim. Raum existiert ein
Partitionierungspunkt, so dass jeder Quadrant
höchstens ┌N/(k+1)┐ Datenpunkte enthält.
•  Analyse:
–  Dann besitzt der Pseudo Quadtree eine Tiefe von
höchstens ┌logk+1N┐ und kann in Zeit O(N logk+1N)
gebaut werden.
Petra Mutzel
Alg. & Dat.
WS 08/09
54
Petra Mutzel
6.1.4 K-D Trees:
Alg. & Dat.
WS 08/09
(0,100)

y
(0,0)
56
(80,65)
BUFFALO
(5,45)
DENVER
(25,35)
OMAHA
(85,15)
(35,40)
ATLANTA
CHICAGO
(50,10)
Mobile
(90,5)
MIAMI
x
(100,0)
K-D Tree: Einfügen
(0,100)
(100,100)
(60,75)
TORONTO
y
(5,45)
DENVER
(25,35)
OMAHA
WS 08/09
58
(80,65)
BUFFALO
Z

•  Datenstruktur:
–  LEFT, RIGHT: linkes und rechtes Kind (referenziert als
CHILD(P,I) bzw. LOCHILD(P) und HICHILD(P))
–  XCOORD, YCOORD, ...
–  NAME
–  DISC: Diskriminator bzgl. k-tem Schlüssel
–  Abmachung für Diskriminatoren: gleiche Schlüsselwerte
befinden sich im rechten Teilbaum
Alg. & Dat.
55
(100,100)
(60,75)
TORONTO
K-D Trees:
Petra Mutzel
WS 08/09
K-D Tree: Beispiel
•  Jon Louis Bentley 1975
•  Idee:
–  Binärer Suchbaum mit der Eigenschaft, dass in jeder
Tiefe nach einer anderen Dimension orthogonal
aufgeteilt wird.
–  Z.B. k=2: nach x-Koordinaten auf den Schichten mit
gerader Nummer (Beginn bei Schicht 0), nach yKoordinaten auf den ungeraden Schichten.
–  Aufteilung basiert auf den Datenpunkten
–  BSP Trees (Fuchs, Kedem, Naylor 1980): K-D Trees,
bei denen nicht orthogonal aufgeteilt wird (beliebige
Hyperebenen)
Petra Mutzel
Alg. & Dat.
(0,0)
(85,15)
(35,40)
ATLANTA
CHICAGO
(50,10)
Mobile
(90,5)
MIAMI
x
(100,0)
8
K-D Trees: INSERT
Adaptive K-D Trees
•  Analog zu binären Suchbäumen:
–  Wir suchen den Punkt abwechselnd basierend auf den
k Schlüsseln
–  Wenn das Blatt erreicht ist, haben wir die EinfügePosition gefunden
•  Analyse:
–  Form des Baumes hängt von Einfügereihenfolge ab
–  Durchschnittliche Tiefe: O(log2 N)
–  Worst Case Tiefe: O(N), Aufbau: O(N2)
–  Optimierung ähnlich wie bei Quad Trees
–  Alternative: Adaptive K-D Tree
•  Idee:
–  Wie K-D Trees, ausser, dass die Aufteilung zwischen
(statt an) den Datenpunkten gemacht wird
–  Datenpunkte werden nur in den Blättern gespeichert
–  Jeder innere Knoten enthält den Median der Menge der
noch übrigen, in diesem Teil befindlichen Knoten (bzgl.
einem Schlüssel)
–  Aufteilung nicht mehr abwechselnd nach Schlüsseln,
sondern nach dem Schlüssel, der noch die größte
Differenz zwischen min und max besitzt.
Petra Mutzel
Alg. & Dat.
WS 08/09
60
Adaptiver K-D Tree: Beispiel
(0,100)

y
(5,45)
DENVER
(25,35)
OMAHA
(0,0)
Alg. & Dat.
WS 08/09
61
Adaptive K-D Trees
(100,100)
(60,75)
TORONTO
Petra Mutzel
•  Diskussion:
–  Ist nicht notwendigerweise balanciert
–  Statische Datenstruktur (alle Punkte müssen vorher
bekannt sein, sonst nicht sinnvoll)
–  Deletion ist sehr komplex
–  Suchen: ähnlich wie bei K-D Trees
(80,65)
BUFFALO
(35,40)
CHICAGO
(50,10)
Mobile
x
Petra Mutzel
(85,15)
ATLANTA
(90,5)
MIAMI
(100,0)
Alg. & Dat.
WS 08/09
62
Petra Mutzel
Alg. & Dat.
WS 08/09
63
K-D Trees: Deletion
K-D Trees: Deletion
•  Diskussion (k=2):
–  Deletion ist nicht so leicht wie bei binären Suchbäumen
–  Problem: nach Entfernung von Knoten aus Baum
stimmen die Diskriminatoren nicht mehr (z.B. 2 Mal xKoordinaten hintereinander)
•  Idee: Rekursiv:
–  DELETION(a,b)
–  Finde Ersatzknoten (c,d) in einem Unterbaum
–  Überschreibe (a,b) mit (c,d)
–  DELETION(c,d)
•  Kandidaten für Ersatzknoten:
–  Sei (a,b) x-Diskriminator, dann:
–  (1) Entweder Knoten im linken Teilbaum mit größter xKoordinate
–  (2) Oder Knoten im rechten Teilbaum mit kleinster
xKoordinate
Petra Mutzel
Alg. & Dat.
WS 08/09
64
–  (1) scheidet aus wegen Abmachung bzgl. gleicher
Schlüsselwerte, denn
–  Annahme: sei (c,d) aus linkem Teilbaum, dann könnte
ein anderer Knoten (c,z) in linkem Teilbaum existieren
Petra Mutzel
Alg. & Dat.
WS 08/09
65
9
K-D Trees: Beispiel Deletion
•  Kandidaten für Ersatzknoten:
–  Sei (a,b) x-Diskriminator, dann ist Kandidat:
–  Knoten im rechten Teilbaum von a mit kleinster
xKoordinate
•  Problem: rechter Teilbaum von a ist leer
•  Lösung:
–  Finde Knoten (c,d) mit kleinster x-Koordinate in linkem
Teilbaum von a
–  Hänge den linken Teilbaum von (a,b) an den rechten
Teilbaum von (c,d)
–  Rekursiver Aufruf von DELETION(c,d)
•  Beispiel:
Petra Mutzel
Alg. & Dat.
WS 08/09
66
K-D Trees: Deletion
Alg. & Dat.
WS 08/09
K-D Trees: Bereichssuche
(0,100)

C(25,50)
G(55,40)
E(30,45)
H(45,35)
B(10,30)
F(30,35)
I(50,30)
y
D(35,25)
A(20,20)
(0,0)
x
(60,0)
68
•  Ausgabe aller Knoten (x,y), die sich innerhalb des
Gebietes mit Radius d (euklidisch) um (a,b) befinden,d.h.
(a-x)2+(b-y)2≤d2
Petra Mutzel
Alg. & Dat.
WS 08/09
72
K-D Trees: Bereichssuche
(100,100)
(60,75)
TORONTO
y
(60,60)
K-D Trees: Bereichssuche
•  Problem reduziert auf:
•  Bestimme den Knoten mit kleinsten x- bzw. y-Koordinate in
Teilbaum von (a,b):
–  Muss im linken Teilbaum eines x-Diskrimina-tors sein
–  Kann im linken oder rechten Teilbaum eines yDiskriminators sein
•  Analyse:
–  Dieser Aufwand ist O(N1-1/k)
Petra Mutzel
(0,60)

K-D Trees: Deletion
•  Analyse:
–  Worst Case für vollständigen K-D Tree:
–  O(k N1-1/k)
(80,65)
BUFFALO
(5,45)
DENVER
(25,35)
OMAHA
(0,0)
(85,15)
(35,40)
ATLANTA
CHICAGO
(50,10)
Mobile
(90,5)
MIAMI
x
(88,6),
d=3
(100,0)
Petra Mutzel
Alg. & Dat.
WS 08/09
74
10
Diskussion K-D Trees
•  An jedem Knoten muss nur jeweils ein Schlüsselvergleich
durchgeführt werden.
•  Speicherplatz:
–  Blätter: es gibt nur maximal zwei NULL-Pointer
–  Benötigter Speicherplatz pro innerer Knoten:
1+1+1+1+k für LEFT, RIGHT, NAME, DISC + k Wörter
für k Schlüssel
•  Adaptive K-D Trees:
–  Innere Knoten benötigen nur 5 Wörter
•  Nachteil gegenüber Quadtree:
–  Quadtree ist eine parallele Datenstruktur (k Schlüsselvergleiche), K-D Trees nicht
Petra Mutzel
Alg. & Dat.
WS 08/09
75
11
Herunterladen