1 Kapitel 5: Mehrdimensionale Suchstrukturen
2 Mehrdimensionale Suchstrukturen Alterzwischen 20 und 30 Einkommenzwischen 2000 und 3000 PLZzwischen und 50000
3 Query-Rechteck y2y2 y1y1 y x x1x1 x2x2 E D C B G F HI K A J
4 k-d-Baum zur Verwaltung von mehrdimensionalen Datenpunkten Verallgemeinerung des binären Suchbaums mit k-dimensionalem Sortierschlüssel Homogene Variante: Baumknoten enthält Datenrecord + Zeiger Inhomogene Variante: Baumknoten enthält Schlüssel + Zeiger Blätter enthalten Zeiger auf Datenrecord Ebene i modulo k diskriminiert bzgl. Dimension i x y z
5 2-d-Baum Im 2-dimensionalen Fall gilt für Knoten mit Schlüssel [x/y]: im linken Sohnim rechten Sohn Auf ungerader Ebenealle Schlüssel xalle Schlüssel > x Auf gerader Ebenealle Schlüssel yalle Schlüssel > y
6 2-d-Baum A C B D E F G H
7 Beispiel für 2-d-Baum D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser Insertz.B. füge Record [3/9] I 3/9
8 Beispiel für 2-d-Baum D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser Exact Matchz.B. finde Record [15/5]
9 Beispiel für 2-d-Baum D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser Partial Matchz.B. finde alle Records [x/y] mit x=7
10 Beispiel für 2-d-Baum D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser Range-Queryz.B. finde alle Records [x/y] mit 8 x 13, 5 y 8
11 Beispiel für 2-d-Baum D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser Best Matchz.B. finde nächsten Nachbarn zu [7/3] => Traversierung mit schrumpfender Rangequery
12 2-d-Baum A C B D E F G H
13 Traversierung für Best Match zu [7/3] D 6/2H8/5 C 9/4 B14/3 B A 5/6 G1/8 F 12/7 E 7/9 bzgl. y kleiner bzgl.x kleiner bzgl. y kleiner bzgl. y grösser bzgl. y grösser bzgl.x grösser bzgl.x grösser
14 Inhomogene Variante
15 Partitionierungen
16 Gitterverfahren mit konstanter Gittergröße
17 Grid File Alternative zu fester Gittergröße 1981 vorgestellt von Hinrichs & Nievergelt 2-Platten-Zugriffsgarantie Bei k-dimensionalen Tupeln: k Skalen zum Einstieg ins Grid-Directory (im Hauptspeicher) Grid Directory zum Finden der Bucket-Nr. (Hintergrundspeicher) Bucket für Datensätze (Hintergrundspeicher)
18 Grid File im 2-dimensionalen Fall Alle Records der roten Gitterzelle sind im Bucket mit Adresse G[1,2] 0 y[i],i=0,.. max_y y x x x[i],i=0,.. max_x y Region:benachbarte Gitterzellen Gitterzelle: rechteckiger Teilbereich Bucket:speichert Records einer Region
19 Bucket Directory Suche Record [35 / 2400] Befrage Skalen asp07nk99jh aasdf0cß03j400d0v 9v8asßfimo98csi98a dxcvß98dspa0s9fxc0 wi00808ß3jsßsa9ßß Lade Block mit G[1,2] vom Bucketdirectory Lade Datenblock
20 Bucket-Überlauf Eine Zelle in Region Mehrere Zellen in Region
21 Aufspalten der Regionen Insert A = [5 / 6]
22 Aufspalten der Regionen A A Insert B = [14 / 3]
23 Aufspalten der Regionen A B A B Insert C = [9 / 4]
24 Aufspalten der Regionen A C B B C A Insert D = [6 / 2]
25 Aufspalten der Regionen A C B B C A D D Insert E = [7 / 9]
26 Aufspalten der Regionen Insert F = [12 / 7]
27 Aufspalten der Regionen Insert G = [1 / 8]
28 Aufspalten der Regionen B C E A C B F F D G A E D G
29 Gridfile Beispiel
30 Gridfile Zahlen Größe eines Datenrecords:100 Byte mittlere Zahl der Datenrecords pro Block:7.5 maximale Zahl der Datenrecords pro Block10 Zahl der Datenrecords: Zahl der Datenblöcke: Zahl der Directoryblöcke:225 mittlere Zahl von Adressen pro Directoryblock175 maximale Zahl von Adressen pro Directoryblock:256 Größe des Root-Directory:15 x 15
31 Dynamik des Grid Directory Insert A=[12 / 280] 3 Datenrecords pro Bucket
32 Dynamik des Grid Directory A Insert B=[25 / 220]
33 Dynamik des Grid Directory A B Insert C=[45 / 270]
34 Dynamik des Grid Directory A B C Insert D=[22 / 275]
35 Dynamik des Grid Directory A B C D Insert E=[24 / 260]
36 Dynamik des Grid Directory C A B D E 250 Insert F=[26 / 280]
37 Dynamik des Grid Directory A B C D E F Directory Block vergröbern
38 Dynamik des Grid Directory A B C D E F
39 Vereinigung von Regionen bei zu geringer Bucketauslastung: Benachbarte Regionen vereinigen Vereinigung muß Rechteck ergeben Vereinigung wird ausgelöst wenn Bucket < 30 % Auslastung wenn vereinigtes Bucket < 70 % Auslastung
40 Nearest Neighbor Q P R
41 Verwaltung von geometrischen Objekten Grid File unterstützt Range-Query bisher:k Attribute Jetzt:k-dimensionale Punkte
42 Verwaltung von Intervallen E A B C D F A [Anfang / Ende] E A B C D F Besser: [Mittelpunkt / halbe Länge]
43 Query-Punkt gegen Intervall Punkt p liegt im Intervall mit Mitte m und halber Länge d m-d p m+d m-d m+d m
44 Query-Punkt gegen Intervall E A B C D F E A B C D F Punkt p liegt im Intervall mit Mitte m und halber Länge d m-d p m+d p=5 m-d 5 m+d
45 Query-Intervall gegen Intervall Intervall mit Mitte s und halber Länge t schneidet Intervall mit Mitte m und halber Länge d m-d s+t und s-t m+d m-dm+d s+ts-t
46 Query-Intervall gegen Intervall E A B C D F E A B C D F Intervall mit Mitte s und halber Länge t schneidet Intervall mit Mitte m und halber Länge d m-d s+t und s-t m+d s=10, t=1 m-d 11 und 9 m+d
47 Query-Rechteck gegen Rechteck Stelle Rechteck durch vierdimensionalen Punkt dar