Zum Inhalt springen

K-d-Baum

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 3. März 2007 um 17:14 Uhr durch Spid (Diskussion | Beiträge) (kursiv und so). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Der k-d-Baum oder auch k-dimensionale-Baum ist ein balancierter Suchbaum zur Speicherung von Punkten aus dem . Er bietet ähnlich dem Bereichsbaum die Möglichkeit, orthogonale Bereichsanfragen durchzuführen. Die Anfragekomplexität ist zwar höher, dafür ist der Speicheraufwand unabhängig von der Dimension .

Definition

Es gibt homogene und inhomogene k-d-Bäume. Bei homogenen k-d-Bäumen speichert jeder Knoten einen Datensatz. Bei der inhomogenen Variante enthalten die inneren Knoten lediglich Schlüssel, die Blätter enthalten Verweise auf Datensätze.

Bei einem inhomogenen k-d-Baum sei die achsenparallele -dimensionale Hyperebene an der Stelle . Für die Wurzel teilt man die Punkte durch die Hyperebene in zwei möglichst gleich große Punktemengen und trägt das in die Wurzel ein, links davon werden alle Punkte gespeichert, deren kleiner sind als t, rechts von der Wurzel alle größeren. Für den linken Sohn werden die Punkte wiederum durch eine neue Splitebene geteilt und die das in dem inneren Knoten gespeichert links davon werden alle Punkte gespeichert deren kleiner als ist. Dies wird nun rekursiv über alle Dimensionen fortgeführt. Danach wird wieder bei der ersten Dimension angefangen, bis jeder Punkt durch Hyperebenen eindeutig identifiziert werden kann.

Ein k-d-Baum lässt sich in konstruieren. Orthogonale Bereichsanfragen lassen sich in beantworten, wobei die Größe der Antwort bezeichnet. Der Speicherplatzbedarf für den Baum selbst liegt in .

Beispiel 2-d-Baum

Eine Menge von Punkten mit dazugehörigem inhomogenem 2-d-Baum

Siehe auch

Quadtree, UB-Baum, R-Baum, Bereichsbaum, Gridfile als Alternativen

Literatur

  • Rolf Klein: Algorithmische Geometrie 2. Auflage. Springer-Verlag, Berlin Heidelberg 2005, ISBN 3-540-20956-5.