Ich suche nach Datenstrukturen, um Anfragen von nächsten Nachbarn in 3D zu beantworten, die einigermaßen platzsparend sind (dh höchstens verwendet werden) Raum) und schnell ( oder Abfragezeit im schlimmsten Fall).
Als Zusammenfassung dessen, was ich bereits weiß:
1D ist trivial (sortieren Sie einfach die Punkte und verwenden Sie die binäre Suche).
2D ist etwas kniffliger, aber mit einer Punktstandortdatenstruktur + Voronoi-Diagramm können Sie dies tun Raum und Abfragezeit.
In 3D und höher bricht diese Lösung zusammen, da das Voronoi-Diagramm einer Menge von Punkten ist .
Ich kenne ungefähre Techniken, die auf kd-Bäumen oder gitterbasierten Methoden basieren, obwohl diese von der Annahme einer gleichmäßigen Verteilung der Punkte oder etwas über die Entfernung zum nächsten Nachbarn abhängen und nicht in allen Fällen so gut funktionieren. Ich bin nicht an diesen zufälligen oder ungefähren Lösungen interessiert - ich möchte etwas, das im schlimmsten Fall für jeden Datensatz funktioniert. Gibt es irgendetwas da draußen, das dies tut, oder gibt es eine Untergrenze, die diese Idee aus dem Wasser bläst?