Question

Je construis un tableau indiquant les points mySQL n dimensions, chaque dimension étant indexée. Compte tenu de tout point dans le système à n dimensions, je voudrais être en mesure de sortie de tous les autres points dans l'ordre de leur distance par rapport au point choisi.

Une solution simple consisterait à calculer les distances de chaque point en utilisant le théorème de Pythagore ... sqrt (x ^ 2 + y ^ 2) = z. Je cherche une méthode plus efficace. Seul un ordre approximatif est nécessaire, donc je suis très ouvert d'esprit.

Merci.

-diddle

Était-ce utile?

La solution

En plus de ce qui a été donné, vous pouvez aussi envisager « binning » vos points - à savoir (au moins mentalement) dessiner une grille sur votre « carte », et suivre des points sur la base desquels la place, ils tombent dans. Fondamentalement, vous commencez avec les points sur la même place, puis ceux dans un « anneau » entourant la place du point choisi, puis l'anneau suivant vers l'extérieur, et ainsi de suite. En fonction de la taille de la grille que vous utilisez, vous pouvez en faire à peu près aussi précise ou approximative que vous le souhaitez. Bien sûr, une grille 2D est pour les points 2D -. Si avoir plus de dimensions, vous devrez augmenter la dimensionnalité de la grille pour correspondre

Autres conseils

Une technique courante pour ce genre de chose est de considérer la distance au carré au lieu de la distance réelle qui élimine la racine carrée, mais, si je comprends bien la question, vous n'avez pas besoin de récupérer la distance réelle de votre indice. Dans ce cas, vous pouvez simplement utiliser la somme de la valeur absolue de chaque composant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top