55 votes

Implémentation de KDTree en Java

Je suis à la recherche d'une implémentation de KDTree en Java.
J'ai fait une recherche sur Google et les résultats semblent assez aléatoires. Il y a en fait beaucoup de résultats, mais il s'agit surtout de petites implémentations uniques, et je préférerais trouver quelque chose avec un peu plus de "valeur de production". Quelque chose comme les collections Apache ou l'excellente bibliothèque de collections C5 pour .NET. Quelque chose où je peux voir le bug tracker public et vérifier quand le dernier commit SVN a eu lieu. De même, dans un monde idéal, je trouverais une belle API bien conçue pour les structures de données spatiales, et le KDTree ne serait qu'une classe parmi d'autres dans cette bibliothèque.

Pour ce projet, je ne travaillerai qu'en 2 ou 3 dimensions, et je suis surtout intéressé par une bonne implémentation des plus proches voisins.

12 votes

On dirait que c'est à ton tour d'écrire quelque chose et de le donner.

2 votes

Votre premier lien est mort et votre second lien vous amène à code.openhub.net ...veuillez mettre à jour ou supprimer ces liens.

25voto

Ichorus Points 2497

Dans le livre Les algorithmes en quelques mots il y a une implémentation de l'arbre kd en java avec quelques variations. L'ensemble du code se trouve sur oreilly.com et le livre lui-même vous guide également à travers l'algorithme pour que vous puissiez en construire un vous-même.

2 votes

Plus précisément : examples.oreilly.com/9780596516246/Releases/ADK-1.0.zip A : ADK-1.0 \ADK\Deployment\JavaCode\src\algs\model\kdtree

3 votes

Egalement disponible sur Github, voir le lien : github.com/heineman/algorithmes-nutshell-2ed/tree/master/

17voto

theosem Points 352

Pour les futurs chercheurs. La bibliothèque Java-ml possède une implémentation de kd-tree qui fonctionne bien. http://java-ml.sourceforge.net/

0 votes

L'avantage de cette bibliothèque (par rapport à d'autres comme l'implémentation Algorithms in a Nutshell) est que l'API utilise des tableaux doubles natifs pour les clés et les plages au lieu d'objets personnalisés.

1 votes

L'implémentation de KDTree dans java-ml est exactement celle du professeur Levy, mais elle est dépassée.

2 votes

Dommage qu'il ne soit pas publié dans un dépôt maven

12voto

Brian Harris Points 1031

J'ai eu du succès avec l'implémentation du professeur Levy qui a trouvé aquí . Je me rends compte que vous recherchez une mise en œuvre plus certifiée pour la production, donc ce n'est probablement pas une bonne solution.

Cependant, je signale à tous les passants que je l'utilise depuis un certain temps déjà dans mon projet de photomosaïque sans aucun problème. Ce n'est pas une garantie, mais c'est mieux que rien :)

0 votes

J'ai eu beaucoup de succès avec ça aussi. +1 (Note : il est sous LGPL).

0 votes

Super ! juste ce dont j'avais besoin, simple à intégrer et qui semble fonctionner dès la sortie de la boîte. Je n'ai pas encore testé les performances mais je suis très content !

0 votes

J'ai utilisé l'implémentation du processeur Levy au cours des deux dernières années et il y a eu quelques bugs bizarres en l'utilisant, mais je travaille également avec des données assez volumineuses de plus de 10 millions de points. où il a retourné le mauvais index pour la méthode de proximité.

5voto

J'ai créé une implémentation de KD-Tree dans le cadre d'une bibliothèque de géocodage inverse hors ligne.

https://github.com/AReallyGoodName/OfflineReverseGeocode

3voto

Yuval F Points 15248

Peut-être Recherche du plus proche voisin y Arbres KD du dépôt d'algorithme de Stony-Brook peut aider.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X