R-tree

Theodora Fürstenberg April 7, 2016 R 4 0
FONT SIZE:
fontsize_dec
fontsize_inc

R-Bäume sind Baum für räumliche Zugriffsverfahren verwendet, dh zum Indexieren mehrdimensionale Daten wie geographische Koordinaten, Rechtecke oder Polygone Datenstrukturen. Der R-Baum wurde von Antonin Guttman 1984 vorgeschlagen und hat bedeutende Einsatz sowohl in theoretischer und angewandter Kontexten gefunden. Eine gemeinsame realen Nutzung für einen R-Baum sein könnte, um räumliche Objekte wie Restaurant Standorte oder Polygone, die typisch Karten gemacht speichern: Straßen, Gebäude, umreißt der Seen, Küsten, usw. und dann finden Sie schnell Antworten auf Fragen wie "Alle Museen innerhalb von 2 km von meiner aktuellen Position", "Empfängt alle Straßenabschnitte innerhalb von 2 km von meinem Standort" oder "Suche nach der Tankstelle". Der R-Baum kann auch beschleunigen nächsten Nachbarn suchen für verschiedene Abstandsmetriken, einschließlich Orthodrome.

R-Baum-Idee

Die Schlüsselidee der Datenstruktur ist die Gruppe in der Nähe von Objekten und stellen sie mit ihrer minimalen umgebenden Rechtecks ​​in die nächst höhere Ebene des Baumes; das "R" in der R-Baum ist für Rechteck. Da alle Objekte innerhalb dieser begrenzenden Rechtecks ​​liegen, kann eine Abfrage, die nicht auch schneidet das umgebende Rechteck nicht schneidet keines der enthaltenen Objekte. Auf der Blattebene, jedes Rechteck beschreibt ein einzelnes Objekt; auf höheren Ebenen der Aggregation von einer zunehmenden Anzahl von Objekten. Dies kann auch als eine zunehmend grober Näherung des Datensatzes zu erkennen.

Ähnlich zu dem B-Baum ist der R-Struktur auch eine ausgewogene Suchbaum organisiert die Daten in Seiten und zur Speicherung auf der Platte ausgebildet. Jede Seite kann eine maximale Anzahl von Einträgen, die oft als bezeichnet, enthalten. Sie gewährleistet zudem eine Mindestfüllung jedoch beste Leistung wurde mit einer Mindestfüllung von 30% -40% der maximalen Anzahl der Einträge erfahren worden. Der Grund dafür ist, desto komplexer Ausgleich für räumliche Daten im Gegensatz zu linearen Daten in B-Bäumen gespeichert erforderlich.

Wie bei den meisten Bäumen, sind die Suchalgorithmen ziemlich einfach. Die Grundidee ist es, die Begrenzungsboxen zu verwenden, um zu entscheiden, ob sie in einem Teilbaum zu suchen. Auf diese Weise sind die meisten der Knoten des Baums niemals während einer Suche gelesen. Wie B-Bäume, macht diese R-Bäume für große Datenmengen und Datenbanken, wobei Knoten in den Speicher ausgelagert werden, wenn nötig, und die ganze Struktur kann nicht in dem Hauptspeicher gehalten werden.

Der Schlüssel Schwierigkeit der R-Bäume, ein effizientes Baum, der auf der einen Seite ist ausgewogen andererseits die Rechtecke nicht zu viel leeren Raum abdecken und nicht zu viel überlappen zu bauen. Zum Beispiel ist die ursprüngliche Idee zum Einfügen von Elementen, um eine effiziente Struktur zu erhalten, um immer in die Unterstruktur, die mindestens die Erweiterung in ihrem Begrenzungsrahmen erfordert einfügen. Sobald diese Seite voll ist, werden die Daten in zwei Gruppen, die jede der minimalen Bereich abdecken sollte aufgeteilt. Großteil der Forschung und Verbesserungen für R-Bäume zielt auf die Verbesserung der Art und Weise der Baum gebaut und kann in zwei Zielsetzungen zusammengefasst werden: Aufbau einer effizienten Struktur von Grund auf neu und darstellende Veränderungen auf einem vorhandenen Baum.

R-Bäume nicht gute Leistung im schlimmsten Fall zu gewährleisten, aber in der Regel gut mit realen Daten durchzuführen. Während mehr von theoretischem Interesse, die Priorität R-Baum-Variante der R-Baum ist Worst-Case-optimal, aber aufgrund der erhöhten Komplexität, hat nicht viel Aufmerksamkeit in der Praxis bisher erhalten.

Wenn Daten in einem R-Baum organisiert sind, kann der k nächsten Nachbarn aus allen Punkten effizient unter Verwendung eines räumlichen verbinden, berechnet werden. Dies ist vorteilhaft für viele Algorithmen auf der Basis der k nächsten Nachbarn, beispielsweise die lokale Ausreißer Factor. Deli-Clu, Density-Link Clustering ist eine Cluster-Analyse-Algorithmus, der die R-Baumstruktur für eine ähnliche Art von räumlicher verwendet verbinden, um eine Optik Clustering effizient zu berechnen.

Varianten

  • R * -Baum
  • R + Baum
  • Hilbert R-Baum-
  • X-tree

Algorithmus

Daten-Layout

Daten in R-Bäume in Seiten organisiert, die eine variable Anzahl von Einträgen kann. Jeder Eintrag innerhalb Nicht-Astknoten speichert zwei Datenstücke: ein Weg zur Identifizierung eines untergeordneten Knotens und der Begrenzungskasten mit allen Einträgen in diesem untergeordneten Knoten. Blattknoten speichern die für jedes Kind erforderlichen Daten, die oft einen Punkt oder Begrenzungsrahmen des Kindes darstellt und eine externe Kennung für das Kind. Für Punktdaten, können die Blatteinträge nur die Punkte selbst zu sein. Für Polygondaten der gemeinsame Aufbau ist, um nur den MBR des Polygons zusammen mit einer eindeutigen Kennung in der Baumstruktur zu speichern.

Suche

Die Eingabe ist ein Suchrechtecks. Die Suche ist ganz ähnlich wie die Suche in einer B + Baum. Die Suche beginnt von dem Wurzelknoten des Baums. Jeder interne Knoten enthält einen Satz von Rechtecken und Zeiger zu den entsprechenden Kindknoten und jeder Blattknoten enthält, die Rechtecke von Geo-Objekten. Für jedes Rechteck in einem Knoten, muss entschieden werden, wenn sie die Suche Rechteck überschneidet oder nicht. Wenn ja, muss das entsprechende Kind-Knoten auch durchsucht werden. Die Suche wird so in einer rekursiven Weise durchgeführt, bis alle überlappenden Knoten durchlaufen. Wenn ein Blattknoten erreicht ist, werden die enthaltenen Zeichen-Boxen gegen den Such Rechteck getestet und ihre Objekte in der Ergebnismenge, wenn sie innerhalb des Such Rechtecks ​​liegen setzen.

Für Priorität Recherche wie nächsten Nachbarn suchen, die Abfrage besteht aus einem Punkt oder Rechteck. Der Wurzelknoten in der Prioritätsschlange eingefügt. Bis die Warteschlange leer ist oder die gewünschte Anzahl der Ergebnisse zurückgegeben wurden die Suche geht weiter durch die Verarbeitung des nächsten Eintrag in der Warteschlange. Baumknoten erweitert und ihre Kinder wieder eingesetzt. Blatteinträge werden zurückgegeben, wenn in der Warteschlange auftritt. Dieser Ansatz kann mit verschiedenen Abstandsmetriken, einschließlich Orthodrome für geographische Daten verwendet werden.

Einfügung

Um ein Objekt einfügen, wird der Baum rekursiv von dem Wurzelknoten durchlaufen. Bei jedem Schritt werden alle Rechtecke in dem aktuellen Verzeichnis Knoten geprüft und ein Kandidat ein heuristischer gewählt wie der Wahl des Rechtecks, das mindestens Erweiterung erfordert. Die Suche steigt dann in dieser Seite, bis zu einem Blattknoten. Wenn der Blattknoten voll ist, muss es geteilt, bevor das Einsetzen erfolgen. Da wiederum eine erschöpfende Suche zu teuer ist, wird eine Heuristik verwendet, um die Knoten in zwei Teile aufgeteilt. Hinzufügen des neuen Knotens auf das vorherige Niveau, kann dieses Niveau wieder überlaufen, und diese Überläufe bis zu den Root-Knoten zu propagieren; wenn dieser Knoten Überläufe auch, wird ein neuer Wurzelknoten erzeugt und der Baum in die Höhe gestiegen.

Die Wahl der Einschubteilbaum

Auf jeder Ebene, muss der Algorithmus, um zu entscheiden, in der Unterstruktur, um die neue Datenobjekt einzufügen. Wenn ein Datenobjekt ist vollständig in einem einzigen Rechteck enthalten ist, ist die Wahl klar. Wenn es mehrere Optionen oder Rechtecke in der Notwendigkeit der Erweiterung kann die Wahl haben einen signifikanten Einfluss auf die Leistung des Baumes.

In der klassischen R-Baum, werden Objekte in die Unterstruktur, die das mindestens Erweiterung muss eingelegt. In den fortgeschrittenen R * -Baum ist ein gemischtes Heuristik eingesetzt. Auf Blattebene, versucht er, die Überlappung zu minimieren; auf den höheren Ebenen, verhält es sich ähnlich wie bei der R-Baum, aber am Bande wieder lieber den Teilbaum mit kleineren Bereich. Die verringerte Überlappung der Rechtecke in der R * -Baum ist einer der wichtigsten Vorteile gegenüber der traditionellen R-Baum.

Aufteilen eines überlaufenden Knoten

Da die Umverteilung alle Objekte eines Knotens in zwei Knoten eine exponentielle Anzahl von Optionen, muss eine Heuristik verwendet werden, um den besten Split zu finden. In der klassischen R-Baum schlug Guttman zwei solcher Heuristiken, genannt QuadraticSplit und LinearSplit. Im quadratische geteilten, sucht der Algorithmus für das Paar von Rechtecken, die die schlechteste Verbindung, in demselben Knoten haben, ist, und stellt sie als Anfangs Gegenstände in die zwei neue Gruppen. Es sucht dann nach dem Eintrag mit dem stärksten Präferenz für eine der Gruppen und weist das Objekt zu dieser Gruppe, bis alle Objekte zugeordnet sind.

Es gibt auch andere Spalt Strategien wie Greenes Split, der R * -Baum Aufspaltung heuristischen oder der von Ang und Tan vorgeschlagene lineare Split-Algorithmus. Zusätzlich dazu, dass eine erweiterte Spalt Heuristik, versucht der R * -Baum auch zu vermeiden Aufteilen eines Knotens durch Wiedereinsetzen einige der Knotenelemente, die ähnlich wie ein B-Baum-Guthaben überlauf Knoten ist. Dies wurde gezeigt, dass auch eine Verringerung lappen und somit zur Erhöhung Baum Leistung.

Schließlich kann der X-Baum als R * -Baum-Variante, die auch beschließen können, um nicht spalten einen Knoten, aber bauen eine sogenannte Super-Knoten, die alle zusätzliche Einträge zu sehen ist, wenn es nicht eine gute Split zu finden .

Löschung

Löschen eines Eintrags aus einer Seite kann verlangen, die Aktualisierung der Begrenzungsrahmen des übergeordneten Seiten. Wenn jedoch eine Seite Under, wird es nicht mit seinen Nachbarn ausgeglichen werden. Stattdessen wird die Seite aufgelöst und alle seine Kinder werden wieder eingesetzt werden. Wenn bei diesem Vorgang der Wurzelknoten ein einzelnes Element ist, kann die Baumhöhe zu verringern.

Bulk-Loading

  • Nächster-X - Objekte werden durch ihre erste Koordinate sortiert und dann aufgeteilt in Seiten mit der gewünschten Größe.
  • Lunch Hilbert R-Baum - Variation der Nächste-X, aber die Sortierung mit Hilfe der Hilbert-Wert von der Mitte eines Rechtecks ​​anstatt die X-Koordinate. Es gibt keine Garantie werden die Seiten nicht überlappen.
  • Sort-Tile-Rekursiv: Eine weitere Variante des Nearest-X, die die Gesamtzahl der Blätter nach Bedarf schätzt die erforderliche Splitfaktor in jeder Dimension, dies als zu erreichen, dann mehrfach in gleich große Partitionen mit 1-dimensional Sortier teilt jeder Dimension sukzessiv . Die resultierenden Seiten, wenn sie mehr als eine Seite besetzen, sind wiederum Stückgut-Verwendung des gleichen Algorithmus. Für Punktdaten, werden die Blattknoten nicht überlappen, und "Kachel" der Datenraum in etwa gleich großen Seiten.
  • Priority R-Baum-
  Like 0   Dislike 0
Vorherige Artikel WATC-DT
Nächster Artikel Secondary Education For All
Bemerkungen (0)
Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha