Ball Baum

In der Informatik ist ein Kugelbaum, balltree oder metrischen Baum, ist ein Raum Partitionierung Datenstruktur für die Organisation von Punkten in einem mehrdimensionalen Raum. Der Ball Baum hat seinen Namen von der Tatsache, dass es in einen verschachtelten Satz von Hypersphären als "Kugeln" bekannt partitioniert Datenpunkte. Die resultierende Datenstruktur hat Eigenschaften, die es nützlich für eine Reihe von Anwendungen, insbesondere nächsten Nachbar Suche durchführen.

Informelle Beschreibung

Ein Kugelbaum ein binärer Baum, in dem jeder Knoten definiert eine D-dimensionale Hyperkugel oder Kugel, einen Teilsatz der Punkte gesucht werden soll. Jeder interne Knoten des Baums teilt die Datenpunkte in zwei disjunkte Mengen, die mit verschiedenen Bällen verbunden sind. Während die Kugeln selbst können sich schneiden, wobei jeder Punkt auf der einen oder der anderen Kugel in der Trennwand nach seiner Entfernung von der Kugelmittel zugeordnet. Jeder Blattknoten in der Baumstruktur definiert einen Ball und alle listet alle Datenpunkte innerhalb dieser Pass.

Jeder Knoten in der Baumstruktur definiert den kleinsten Kugel, die alle Datenpunkte in seinem Teilbaum enthält. Dies verursacht die nützliche Eigenschaft, die für eine gegebene Testpunkt t größer als oder gleich dem Abstand zu der Kugel ist der Abstand zu einem beliebigen Punkt in einer Kugel B im Baum. Formal:

Wo der Mindestabstand von jedem Punkt in der Kugel B zu einem Punkt t.

Kugelbäume sind mit dem M-Baum im Zusammenhang, sondern nur unterstützen binäre Spaltungen, während im M-Baum jede Ebene teilt sich zu falten, was zu einem weniger tiefen Baumstruktur führt. Die M-Baum hält auch die Abstände von der übergeordneten Knoten vorberechnet zu beschleunigen Abfragen.

Construction

Eine Reihe von Kugelbaum Bau Algorithmen stehen zur Verfügung. Das Ziel eines solchen Algorithmus besteht darin, ein Baum, der effizient unterstützt werden Abfragen des gewünschten Typs effizient im Durchschnittsfall zu erzeugen. Die spezifischen Kriterien eines idealen Baum wird von der Art der Frage, die beantwortet, und die Verteilung der zugrunde liegenden Daten ab. Ist ein allgemein anwendbares Maß für eine effiziente Struktur jedoch eine, die das gesamte Volumen der inneren Knoten minimiert. Angesichts der vielfältigen Distributionen von realen Datensätzen, das ist eine schwierige Aufgabe, aber es gibt mehrere Heuristiken, die die Daten in der Praxis auch zu partitionieren. Im Allgemeinen gibt es einen Kompromiss zwischen den Kosten der Konstruktion eines Baumes und die Effizienz von dieser Metrik erreicht.

Dieser Abschnitt beschreibt kurz die einfachste dieser Algorithmen. Eine eingehende Diskussion von fünf algoriths wurde von Stephen Omohundro gegeben.

k-d Gebrauchte Algorithm

Die einfachste derartige Vorgehensweise ist mit der zur kd Bäume zu konstruieren Prozess bezeichnet die "kd Construction Algorithm", sinngemäss. Dies ist ein off-line-Algorithmus, das heißt, ein Algorithmus, der auf die gesamten Daten auf einmal eingestellt arbeitet. Der Baum wird von oben nach unten durch rekursiv Aufteilen der Datenpunkte in zwei Sätze gebaut. Spaltungen entlang der einzigen Dimension mit der größten Verbreitung von Punkten ausgewählt, wobei die Sätze von dem Medianwert aller Punkte entlang dieser Dimension aufgetrennt. Finden der Aufteilung für jeden inneren Knoten erfordert linearen Zeit in der Anzahl der in diesem Knoten enthaltenen Proben, wodurch man einen Algorithmus mit Zeitkomplexität, wobei n die Anzahl der Datenpunkte.

Pseudocode

Nächster-Nachbar-Suche

Eine wichtige Anwendung von Kugelbäumen Beschleunigung nächsten Nachbarsuchanfragen, bei denen das Ziel ist, die k Punkte in der Struktur, die am nächsten an einem bestimmten Testpunkt werden durch einige Abstandsmetrik zu finden. Ein einfacher Suchalgorithmus, manchmal genannt KNS1, nutzt den Abstand Eigentum der Ball Baum. Insbesondere dann, wenn der Algorithmus die Suche der Datenstruktur mit einem Testpunkt t und bereits seensome Punkt P, der am nächsten ist, unter den Punkten t bisher begegnet, kann jeder Unterbaum, dessen Kugel weiter von t als p ignoriert werden kann für den Rest der Suche.

Bezeichnung

Der Ball Baum Nächster-Nachbar-Algorithmus untersucht Knoten in Tiefe-Zuerst-Reihenfolge, beginnend an der Wurzel. Während der Suche der Algorithmus unterhält eine max-ersten Prioritätswarteschlange bezeichneten Q hier, der k nächsten Punkte bisher begegnet. An jedem Knoten B ist, kann es eine von drei Operationen durchführen, bevor sie schließlich wieder eine aktualisierte Version der Prioritätswarteschlange:

  • Wenn der Abstand von der Testpunkt t auf den aktuellen Knoten B größer als die am weitesten entfernten Punkt in Q ist, ignorieren Sie B und Rück Q.
  • Wenn B ein Blattknoten ist, scannen Sie durch jeden Punkt in B aufgezählt und die Nächster-Nachbar-Warteschlange entsprechend zu aktualisieren. Schicken Sie das aktualisierte Warteschlange.
  • Wenn B ein interner Knoten, rufen Sie den Algorithmus rekursiv auf Bs zwei Kinder, auf der Suche, das Kind, dessen Mittelpunkt näher an ersten T. Bringen Sie die Warteschlange nach jedem dieser Gespräche war es wiederum aktualisiert.

Durchführen der rekursive Suche in den in Punkt 3 beschriebenen Reihenfolge oben erhöht die Wahrscheinlichkeit, dass die weitere Kind wird ganz bei der Suche zurückgeschnitten werden.

Pseudocode

Leistung

Im Vergleich mit mehreren anderen Datenstrukturen haben Kugelbäumen wurde gezeigt, dass auf der nächsten benachbarten Suchproblems recht gut durchzuführen, da sich vor allem Anzahl der Dimensionen wächst. Jedoch wird die beste Nächster-Nachbar-Datenstruktur für eine bestimmte Anwendung auf der Dimensionalität, die Anzahl der Datenpunkte, und der darunterliegenden Struktur der Daten abhängen.

  0   0
Nächster Artikel Daniel Bromley

In Verbindung Stehende Artikel

Kommentare - 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