Je dois trouver pour chaque point de l'ensemble de données tous ses voisins les plus proches. L'ensemble de données contient env. 10 millions de points 2D. Les données sont proches de la grille, mais ne forment pas une grille précise ...Tous les voisins les plus proches en 2D, C++
Cette option exclut (à mon avis) l'utilisation de KD Trees, où l'hypothèse de base est qu'aucun point n'a la même coordonnée x et la même coordonnée y . J'ai besoin d'un algorithme rapide O (n) ou mieux (mais pas trop difficile pour l'implémentation :-))) pour résoudre ce problème ... Du fait que le boost n'est pas standardisé, je ne veux pas utiliser il ...
Merci pour vos réponses ou des exemples de code ...
Pourriez-vous donner un exemple de ce que vous cherchez? –
duplication possible de [Choix approprié de la structure de données et de l'algorithme pour la recherche rapide de k-plus proche voisin en 2D] (http://stackoverflow.com/questions/3944649/suitable-choice-of-data-structure-and-algorithm-for -fast-k-nearest-neighbor-searc) – ybungalobill
Je ne comprends pas très bien pourquoi vous ne pouvez pas utiliser kd-trees. Je vais résumer ce que je pense que vous dites: faites-moi savoir où je me trompe. Vous avez un ensemble de 10M points distincts. Ils ne se trouvent pas sur une grille d'entiers, mais sont proches, par exemple, il y a un point (2.01, 1.05) et un autre (1.99.1.03).Ne pourriez-vous pas mettre à l'échelle les points de façon à ce qu'ils reposent tous sur une grille d'entiers, puis utiliser des arbres kd? par exemple, les 2 points ci-dessus pourraient être (201 105) et (199 103). – corriganjc