J'ai un ensemble de points 2D et j'ai besoin de trouver le moyen le plus rapide pour déterminer quelle paire de points a la plus courte distance dans l'ensemble.Le moyen le plus rapide pour trouver la distance minimale entre les points
Quelle est la meilleure façon de procéder? Mon approche est de les trier avec quicksort puis de calculer les distances. Ce serait O (nlogn + n) = O (nlogn).
Est-il possible de le faire en temps linéaire?
Merci.
Comment trier les données bidimensionnelles avec le tri rapide? Et comment cela aide-t-il à trouver les deux points les plus proches? –
Je viens de les trier par coordonnées x. Fondamentalement, il semble que j'ai mis en œuvre l'algorithme expliqué à http://en.wikipedia.org/wiki/Closest_pair_problem. Commencez par trier par x, puis divisez et conquérez. Donc, il semble qu'il n'y a pas de moyen plus rapide. –
Le tri par X n'a aucune valeur réelle, car les points les plus proches peuvent ne pas avoir de valeurs X proches. Et le tri par X ne réduit pas le besoin de comparer chaque point contre tous les autres points pour trouver la paire la plus proche. –