Algorithme rapide pour trouver le x points les plus proches d'un point donné sur un plan

Je voudrais trouver un algorithme rapide pour trouver les x points les plus proches d'un point donné sur un plan.

Nous sommes en occupe pas trop de points (entre 1 000 et 100 000), mais j'ai besoin de x points les plus proches pour chaque de ces points. (où x est généralement entre 5 et 20.)

J'ai besoin de l'écrire en C#.

Un peu plus de contexte à propos du cas d'utilisation: Ces points sont des coordonnées sur une carte. (Je sais, cela signifie que nous ne sommes pas exactement parler d'un avion, mais j'espère pour éviter de faire face avec la projection de questions.) En fin de compte les points qui ont de nombreux autres points proches d'eux doit être affiché en rouge, les points qui n'ont pas trop de points proches d'eux doit être affiché en vert. Entre ces deux extremees les points sont sur un dégradé de couleur.

Je ne suis pas sûr que l'algorithme que vous proposez est la mieux adaptée à votre cas d'utilisation. Vous pourriez peut-être une boucle sur tous les points et de calculer un grossier fonction de densité de (2-D de l'histogramme). Ensuite, vous pouvez simplement la couleur de chaque point calculé la densité de la cellule, il est, peut-être en considérant les cellules voisines, trop.

OriginalL'auteur Michael Junk | 2012-02-02