J'ai deux ensembles de points dans le plan bidimensionnel. Je veux trouver la paire de points la plus proche telle que , , et la distance euclidienne entre est aussi petite que possible. Comment cela peut-il être fait efficacement? Peut-on le faire en temps , où?
Je sais que si on me donne un seul ensemble , il est possible de trouver la paire de points in la plus proche en utilisant un algorithme standard de division et de conquête . Cependant, cet algorithme ne semble pas généraliser au cas de deux ensembles, car il n'y a pas de lien entre la distance entre les deux points les plus proches dans ou rapport à la distance entre les deux points les plus proches à travers ces ensembles.
J'ai pensé à stocker l'ensemble dans un arbre -d, puis pour chaque , à l'aide d'une requête de voisin le plus proche pour trouver le point le plus proche de à . Cependant, le temps d'exécution le plus défavorable peut être aussi mauvais que le temps . Il y a des résultats indiquant que si les points de sont distribués de manière aléatoire, alors le temps d'exécution prévu pour chaque requête est , donc nous obtiendrions un algorithme avec le temps d'exécution prévu si nous ont été garantis que les points sont distribués au hasard - mais je cherche un algorithme qui fonctionnera pour toute collection de points (pas nécessairement distribués au hasard).O ( n log n )
Motivation: Un algorithme efficace serait utile pour cette autre question .