Raumbezogene Zugriffsverfahren

Slides:



Advertisements
Ähnliche Präsentationen
Einstieg in die Integralrechnung
Advertisements

8. Termin Teil B: Wiederholung Begriffe Baum
Sudoku Übersicht Spielregeln Strategien Knoch
Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Eine dynamische Menge, die diese Operationen unterstützt,
Der k-d-Baum Richard Göbel.
Polynomial Root Isolation
Schnelle Matrizenoperationen von Christian Büttner
Das LCA – Problem in Suffixbäumen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – B-Bäume)
Algorithmen und Datenstrukturen
FH-Hof Der B-Baum Richard Göbel. FH-Hof Wahl des Verzweigungsgrad Verzweigungsgrad kann größer als 2 sein v Nachfolger für einen Knoten v-1 Werte in einem.
Kapitel 6: Klassifizierung von Sortiertechniken
7. Natürliche Binärbäume
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur
13 2. Eine Anwendung der Spline-Glättung in der Versicherungsmathematik: Geographische Prämienschätzung durch räumliche Whittaker-Glättung 2.1 Vorbemerkungen.
Indexed Sequential Access Method
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Der R-Baum Richard Göbel.
Effizienz: Indexstrukturen
Algorithmentheorie 04 –Hashing
Suche in Texten: Suffix-Bäume
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - Balancierte Bäume, AVL-Bäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix - Bäume.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (22 – Bruder-Bäume, B-Bäume) Prof. Th. Ottmann.
Kapitel 5 Stetigkeit.
Kapitel 1 Das Schubfachprinzip
R-tree, R*-tree und R+-tree
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
Externe Datenstruktur lineare Liste
Punktbeschriftung mit vier Rechtecken gleicher Höhe (Anzahlmaximierung) Julia Löcherbach.
Animationen zu Kap. 4.3: AVL-Bäume
Splay Trees Von Projdakov Benjamin.
2. Die rekursive Datenstruktur Baum 2
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Effiziente Algorithmen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 7 SS 2000 Punkt-in-Polygon-Verfahren I (Trapezkarte)
Effiziente Algorithmen
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
§3 Allgemeine lineare Gleichungssysteme
Übung Datenbanksysteme II Index- strukturen
Lösen von quadratischen Ungleichungen
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Peer-to-Peer- Netzwerke Christian Schindelhauer Sommersemester.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
- Überblick -.
Schritt für Schritt-Anleitung
Binärbäume.
Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:
1 Prozesse im Studiengangsmanagement Kontext: Neues Abschlussziel erstellen Neues Studienfach erstellen.
1 Prozesse im Studiengangsmanagement Kontext: Neues Abschlussziel erstellen Neues Studienfach erstellen.
Übungsblatt 2 Erläuterungen Wintersemester 16/17 DBIS.
AVL-Bäume.
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
Microsoft Excel S-Verweis Excel: SVerweis.
 Präsentation transkript:

Raumbezogene Zugriffsverfahren Das Grid-File Der Lineare Quadtree

Motivation Bearbeitung einer mehrdimensionalen Suchanfrage soll in möglichst kurzer Zeit, zum Beispiel Punktsuche in einer Punktedatenbank, erfolgen.  Vorbereitung der Datenbank

Das Grid-File Einteilung des n-dimensionalen Datenraums mit orthogonalen Gitter

Das Grid-File Einteilung des n-dimensionalen Datenraums mit orthogonalen Gitter Einfacheres Beispiel  Zellen, denen die Dateneinträge (Punkte) zugeordnet werden Festlegung der maximalen Anzahl von Einträgen in einer Zelle

Das Grid-File Abspeicherung der Positionen der Teilungslinien in zwei Vektoren: y0 y1 y2 x0 x1 x2 X y0 y1 y2 Y x0 x1 x2 genauere Betrachtung

Das Grid-File Abspeicherung der Zelleninhalte in Buckets.  Jede Zelle ist eindeutig einem Bucket zugeordnet.

Das Grid-File Einem Bucket hingegen können aber mehrere Zellen zugeordnet sein.

Das Grid-File Die Buckets werden samt Inhalt auf einem Massenspeicher abgelegt. Zum Auffinden werden Pointer benötigt.

Da jede Zelle einem Bucket zugeordnet ist, wird für jede Zelle ein Pointer zu ihrem Bucket angelegt.

Die Pointer werden in einer Matrix ( „ Grid-Directory“) so abgespeichert, dass ihre Zeilen- und Spaltennummer mit der Zeilen- und Spaltennummer ihrer Zelle übereinstimmt. 2.1 2.2 1.1 1.2 P2,1 P2,2 P1,1 P1,2

Das Auffinden von Einträgen umfasst also 3 Arbeitsschritte: 1.2 Ermittlung von Zeilen- und Spaltennummer der Zelle, in deren Bereich der Eintrag liegt.

Das Auffinden von Einträgen umfasst also 3 Arbeitsschritte: 1.2 Aufsuchen des entsprechenden Pointers im Grid-Directory P2,1 P2,2 P1,1 P1,2

Das Auffinden von Einträgen umfasst also 3 Arbeitsschritte: 1.2 Aufsuchen des Buckets, in dem der Eintrag liegt P2,1 P2,2 P1,1 P1,2

Hinweis: Die Zellen müssen nicht quadratisch sein. Der Datenraum auch nicht.

Einzelne Zellen können wieder als eigenständiger Datenraum aufgefasst werden, für den sich wieder ein Grid-File anlegen lässt.

Grid-Files können auch n-dimensional sein

Aufbau eines Grid-Files und Abspeichern im Grid-File Die Größe der Buckets wird vor dem Aufbau des Grid-Files willkürlich festgelegt. Wird ein weiterer Eintag gemacht, so kann der Bucket überlaufen Im Folgenden sei die maximal mögliche Anzahl von Einträgen in einem Bucket zwei.

Aufbau eines Grid-Files und Abspeichern im Grid-File Einfacher Fall: Bucket enthält Einträge aus mehreren Zellbereichen: Für eine Zelle neues Bucket einrichten oder finden.

Aufbau eines Grid-Files und Abspeichern im Grid-File Einfacher Fall: Bucket enthält Einträge aus mehreren Zellbereichen: Für eine Zelle neues Bucket einrichten oder finden.

Aufbau eines Grid-Files und Abspeichern im Grid-File Schwieriger Fall: Einträge liegen im Bereich einer einzigen Zelle.  Teilung der Zelle, was eine weitere Teilung des gesamten Datenraumes bedeutet.

Aufbau eines Grid-Files und Abspeichern im Grid-File Schwieriger Fall: Einträge liegen im Bereich einer einzigen Zelle.  Teilung der Zelle, was eine weitere Teilung des gesamten Datenraumes bedeutet. Richtig teilen

Löschen eines Eintrags Beim Löschen von Einträgen ergeben sich oft (fast) leere Buckets. Deswegen prüfen, ob die Buckets mit denen von benachbarten Zellbereichen vereinigt, oder Zellteilungen aufgehoben werden sollten.

Der Quadtree Aufteilen des Datenraums in der Mitte Es entstehen 4 Rechtecke: 0,1,2,3. 1 2 3

Der Lineare Quadtree Weitere Verfeinerung der Zellen:

Der Lineare Quadtree Somit entsteht eine Hierarchie wie in einer Baumstruktur.

Der Lineare Quadtree Mögliche Bezifferung der Quadranten: 1 2 3 00 01 02 03 10 11 12 13 1 2 3 20 21 22 23 30 31 32 33

Der Lineare Quadtree Mögliche Bezifferung der Quadranten: 1 2 3 30 300 2 3 00 01 02 03 10 11 12 13 20 21 22 23 30 31 32 33 300 301 30 302 303

Der Lineare Quadtree Beispiel: Quadtree der Tiefe 3 2 2 10 32 30 120 2 10 32 30 120 121 122 123 11 2 10 11 13 30 31 32 33 120 121 122 123 13 31 33

Der Lineare Quadtree Kein Quadrant hat mehr als 4 Einträge 2 10 32 30 2 10 32 30 120 121 122 123 11 13 31 33

Der Lineare Quadtree Die Blätter des Baumes erhalten dann Platz im Speicher für die abzuspeichernden Objekte. 2 10 11 13 30 31 32 33 120 121 122 123

Der Lineare Quadtree Für den Speicherzugriff werden Pointer mit den Nummern ihrer Blätter angelegt. 2 10 11 13 30 31 32 33 120 121 122 123

Der Lineare Quadtree B+-Baum 12 Es soll nun die Abspeicherung der Pointer in einem B+ Baum dargestellt werden. Ein B+ Baum ist ein B-Baum, der durch die Art des Einfügens und Löschens immer ausgeglichen ist. B+-Baum

Der Lineare Quadtree Für die Sortierung der Pointer denkt man sich vor jede Nummer eine Null und ein Komma, z.B. 13  0,13 u.s.w., so dass z.B. gilt: (0,)13 < (0,) 2 oder (0,) 102 < (0,) 11

Der Lineare Quadtree Für die Sortierung der Pointer denkt man sich vor jede Nummer eine Null und ein Komma, z.B. 13  0,13 u.s.w., so dass z.B. gilt: 13 < 2 oder 102 < 11

Der Lineare Quadtree Möglicher B+ Baum für unser Beispiel mit mehr als 2 (mit Ausnahme der Wurzel) und weniger als 4 Einträgen pro Knoten: 0 10 11 120 121 122 123 13 2 30 31 32 33 31 2 10 121

Der Lineare Quadtree Weitere Möglichkeit: 10 121 2 31 0 10 11 120 121 10 121 2 31 0 10 11 120 121 122 123 13 2 30 31 32 33

Der Lineare Quadtree Die Pointer wurden dabei alle in der untersten Ebene abgespeichert. 10 121 2 31 0 10 11 120 121 122 123 13 2 30 31 32 33

Der Lineare Quadtree Eine Punktanfrage kann also in 3 Arbeitsschritten abgearbeitet werden: 1.Berechne das Quadrat, in dem der gesuchte Eintrag liegt. Hierzu kann ein Hilfsgitter verwendet werden, das überall gleichmäßig und mindestens so fein unterteilt ist wie das eigentliche Gitter. Dann wird einfach das entsprechende Quadrat des Hilfsgitters berechnet. Tiefe : 3 Tiefe Hilfsgitter : 3

Der Lineare Quadtree Eine Punktanfrage kann also in 3 Arbeitsschritten abgearbeitet werden: 1.Berechne das Quadrat, in dem der gesuchte Eintrag liegt. Hierzu kann ein Hilfsgitter verwendet werden, das überall mindestens so fein unterteilt ist wie das eigentliche Gitter. 2.Suche im B+ Baum den Pointer zu diesem Quadrat. Wenn kein Pointer die berechnete Nummer hat, kann der Pointer genommen werden, dessen Nummer komplett in den Anfangsziffern der berechneten Nummer auftaucht. 3. Hole die zum Quadrat abgespeicherten Daten aus dem Speicher.

Der Lineare Quadtree Eine rechteckige Bereichsanfrage kann durch eine Eigenart der gewählten Numerierung der Quadrate vereinfacht werden: Die linke obere Ecke liege im Quadrat mit der Nummer A, und die rechte untere Ecke im Quadrat mit der Nummer B.

Der Lineare Quadtree Beispiel: 2 A = 0 B = 31 10 32 30 120 121 122 123 2 10 32 30 120 121 122 123 11 13 31 33

Der Lineare Quadtree Die Bereichsanfrage kann durch eine Eigenart der gewählten Numerierung der Quadrate vereinfacht werden: Die linke obere Ecke liege im Quadrat mit der Nummer A, und die rechte untere Ecke im Quadrat mit der Nummer B. Dann gilt für alle Quadrate, die den Suchbereich überlappen, das ihre Nummern zwischen A und B liegen. Dies gilt auch beim Hilfsgitter.

Der Lineare Quadtree Eine Bereichsanfrage kann also in 4 Arbeitsschritten abgearbeitet werden: 1. Berechne A und B (optional im Hilfsgitter). 2. Berechne, welche Quadrate mit den Nummern zwischen A und B sich mit dem Suchbereich überlappen. 3. Suche im B+ Baum die Pointer zu diesen Quadraten. Wenn kein Pointer die berechnete Nummer eines Quadrates hat, kann der Pointer genommen werden, dessen Nummer komplett in den Anfangsziffern der berechneten Nummer auftaucht. 4. Hole die zum Quadrat abgespeicherten Daten aus dem Speicher.

Der Lineare Quadtree Abspeicherung Die Abspeicherung von Objekten ist meist vergleichbar mit der beschriebenen Anfragetechnik. Allerdings gibt es Ausnahmen: Der Inhalt eines Quadrates kann überlaufen. Dies hat eine Teilung des Quadrates zur Folge, wodurch 3 neue Quadrate entstehen, die wieder mit Speicherbereichen und Pointern ausgestattet werden. Das Einfügen von Pointern in den B+ Baum kann zum Überlauf eines Knotens führen. Die resultierende Umordnung wurde im Exkurs bereits beschrieben.

Vielen Dank für die Aufmerksamkeit

Der Lineare Quadtree An dieser Stelle sei an einem Beispiel das Prinzip des B+Baums dargestellt : 7 2 3 7 9 10 13 15

Der Lineare Quadtree Wir setzen dabei die Anzahl maximal möglicher Einträge in einem Knoten auf vier. 7 2 3 7 9 10 13 15

Der Lineare Quadtree Wir fügen einen Eintrag mit dem Schlüssel 23 ein: 7 2 3 7 9 10 13 15

Der Lineare Quadtree Man stellt fest, das gilt 23 > 7 gilt. Somit ist zu prüfen, ob der Eintrag im rechten Teilbaum gemacht werden sollte. 7 2 3 7 9 10 13 15

Der Lineare Quadtree Das Blatt im rechten Teilbaum ist aber voll und muß daher geteilt werden. 7 2 3 7 9 10 13 15

Der Lineare Quadtree Das Blatt im rechten Teilbaum ist aber voll und muß daher geteilt werden. 7 13 2 3 7 9 10 13 15 23

Der Lineare Quadtree Dabei ist eine wichtige Eigenschaft des B+Baums festzustellen: er ist nach wie vor ausgeglichen! 7 13 2 3 7 9 10 13 15 23

Der Lineare Quadtree Somit kann also eine Suchanfrage an den B+ Baum immer in logarithmischer und konstanter Zeit bearbeitet werden! 7 13 2 3 7 9 10 13 15 23

Das Grid-File Nun soll untersucht werden, im Bereich von welcher Zelle sich ein gesuchter Eintrag befindet. ? ? Die Suche kann mit Hilfe der zwei Vektoren geschehen, sofern X- und Y-Koordinate bekannt sind. ? ?

Der Punkt habe die Koordinaten PX und PY. Das Grid-File Der Punkt habe die Koordinaten PX und PY. PX , PY x0 x1 x2 X Nun wird anhand des X -Vektors untersucht, wieviele Gitternetzlinien links vom Punkt liegen, womit die Spaltennummer der Zelle ermittelt wäre.

Es gelte als Beispiel: x0 < x1 <Px < x2. Das Grid-File PX , PY Es gelte als Beispiel: x0 < x1 <Px < x2. x0 x1 x2 X Die gesuchte Zelle liegt in der 2ten Spalte des Datenraumes PX

Es gelte als Beispiel: x0 < x1 <Px < x2. Das Grid-File Es gelte als Beispiel: x0 < x1 <Px < x2. y2 PX Die gesuchte Zelle liegt in der 2ten Spalte des Datenraumes y1 y0 x0 x1 x2

womit die Zeilennummer der Zelle ermittelt wäre. Das Grid-File Nun wird anhand des Y -Vektors untersucht, wieviele Gitternetzlinien unterhalb vom Punkt liegen, PX , PY y0 y1 y2 Y womit die Zeilennummer der Zelle ermittelt wäre. Achtung: die Zeilen werden von unten nach oben numeriert.

Es gelte als Beispiel: y0 < PY < y1 < y2. Das Grid-File PX , PY Es gelte als Beispiel: y0 < PY < y1 < y2. y0 y1 y2 Y Die gesuchte Zelle liegt in der ersten Zeile des Datenraumes PY

Es gelte als Beispiel: y0 < PY < y1 < y2. Das Grid-File Es gelte als Beispiel: y0 < PY < y1 < y2. y2 Die gesuchte Zelle liegt in der ersten Zeile des Datenraumes y1 PY y0 x0 x1 x2

Somit ist die gesuchte Zelle gefunden . Das Grid-File Somit ist die gesuchte Zelle gefunden . y2 PY PX y1 1.2 Sie erhält als Nummer ihre Zeilen- und Spaltennummer. y0 x0 x1 x2

Auf diese Weise werden auch die übrigen Zellen numeriert. Das Grid-File y2 Auf diese Weise werden auch die übrigen Zellen numeriert. 2.1 2.2 y1 1.1 1.2 y0 x0 x1 x2

Da jede Zelle einem Bucket zugeordnet ist, wird für jede Zelle ein Pointer zu ihrem Bucket angelegt.

Aufbau eines Grid-Files und Abspeichern im Grid-File Schwieriger Fall: Die Einträge liegen nur im Bereich einer einzigen Zelle. Ein anderes Beispiel macht deutlich, das es Sinn macht, die Unterteilung so einzurichten, das möglichst viele bereits volle Zellen geteilt werden, damit für diese ggf. keine Unterteilung gemacht werden muß, wenn ihr Bucket überläuft.

Aufbau eines Grid-Files und Abspeichern im Grid-File Es entsteht eine Menge kaum gefüllter oder leerer Zellen, die kein eigenes Bucket haben sollten, um Speicherplatz zu sparen. Daher gilt es zu prüfen, ob der Zelleninhalt auch in einem Bucket der Nachbarzellen abgespeichert werden kann