Ich bin auf einem Algorithmus arbeiten, die immer wieder den (euklidischen) Abstand zum k-ten nächsten Punkt von einem gegebenen Abfragepunkt alle aus einem Vektor von Punkten genommen werden muss. Außerdem muss ich immer wieder alle Punkte innerhalb eines bestimmten Radius eines Punktes finden.Räumliche Abfragen für k-ten nächste Nachbarn eines Punktes
Ich denke an mit k-d Bäume aus der nanoflann Bibliothek. Die Funktion knnSearch() gibt jedoch alle k nächsten Nachbarn zurück, die ich nicht benötige. (Die Funktion radiusSearch() kommt mir jedoch sehr entgegen).
Gibt es eine effizientere Art und Weise zu bekommen, was ich brauche, andere als schuften durch alle k nächsten Nachbarn jedes Mal? Eine bessere Datenstruktur oder eine bessere Implementierung? (Ich bin mit C++.)
Die Abmessungen sind bekannt für jeden gegebenen Datensatz 5 oder weniger sein. Ich bin froh zu wissen, dass ich nicht der Grund für den Flaschenhals im Code bin. Im Moment bleibe ich bei Nanoflann, gerade weil es ein Header-Include ist, und implementiert nur k-d-Bäume, was alles ist, was ich brauche. Vielen Dank. –