Schnellen Algorithmus zu finden, der x am nächsten Punkte zu einem gegebenen Punkt auf einer Ebene

Ich würde gerne einen schnellen Algorithmus, um zu finden, die x nächsten Punkte zu einem gegebenen Punkt auf einer Ebene.

Sind wir eigentlich im Umgang mit nicht zu viele Punkte (zwischen 1.000 und 100.000), aber ich brauche die x nächsten Punkte für jeden dieser Punkte. (wobei x in der Regel werden zwischen 5 und 20.)

Muss ich dies in C# schreiben.

Etwas mehr Kontext über die use-case: Diese Punkte sind Koordinaten auf der Karte. (Ich weiß, das heißt, wir sind nicht gerade das sprechen über ein Flugzeug, aber ich hoffe, um zu vermeiden, Umgang mit Projektion Fragen.) Am Ende Punkte, die noch viele andere Punkte in der Nähe zu Ihnen angezeigt werden soll, in rot, Punkte, die nicht zu viele Punkte in der Nähe, Sie sollte grün dargestellt. Zwischen diesen beiden extremees die Punkte sind auf einem Farbverlauf.

  • Ich bin mir nicht sicher, dass der Algorithmus Sie für Fragen ist die beste Lösung für Ihren Anwendungsfall. Vielleicht könntest du in einer Schleife durch alle Punkte an, und berechnen einer groben Dichte-Funktion (ein 2-D Histogramm). Dann könnten Sie einfach jede Farbe Punkt-auf Basis berechnete Dichte für die Zelle ist es in, vielleicht in Anbetracht benachbarten Zellen, zu.
InformationsquelleAutor Michael Junk | 2012-02-02
Schreibe einen Kommentar