El problema del par de puntos más cercano o problema del par más cercano es un problema de geometría computacional : dados puntos en el espacio métrico , encuentra un par de puntos con la distancia más pequeña entre ellos. El problema del par más cercano para puntos en el plano euclidiano [1] estuvo entre los primeros problemas geométricos que se trataron en los orígenes del estudio sistemático de la complejidad computacional de los algoritmos geométricos.
límites de tiempo
Se conocen algoritmos aleatorios que resuelven el problema en tiempo lineal , en espacios euclidianos cuya dimensión se trata como una constante a los efectos del análisis asintótico . [2] [3] [4] Esto es significativamente más rápido que el tiempo (expresado aquí en notación O grande ) que se obtendría mediante un algoritmo ingenuo para encontrar distancias entre todos los pares de puntos y seleccionar el más pequeño.
Un algoritmo aleatorio lineal de tiempo esperado de Rabin (1976), ligeramente modificado por Richard Lipton para facilitar su análisis, procede de la siguiente manera, en un conjunto de entrada que consta de puntos en un espacio euclidiano de dimensión:
Seleccione pares de puntos uniformemente al azar, con reemplazo, y sea la distancia mínima de los pares seleccionados.
Redondee los puntos de entrada a una cuadrícula cuadrada de puntos cuyo tamaño (la separación entre puntos de la cuadrícula adyacentes) sea , y use una tabla hash para reunir pares de puntos de entrada que se redondean al mismo punto de la cuadrícula.
Para cada punto de entrada, calcule la distancia a todas las demás entradas que se redondean al mismo punto de la cuadrícula o a otro punto de la cuadrícula dentro de la vecindad de Moore de los puntos de la cuadrícula circundantes.
Devuelve la más pequeña de las distancias calculadas a lo largo de este proceso.
El algoritmo siempre determinará correctamente el par más cercano, porque asigna cualquier par más cercano que la distancia al mismo punto de la cuadrícula o a puntos de la cuadrícula adyacentes. El muestreo uniforme de pares en el primer paso del algoritmo (en comparación con un método diferente de Rabin para muestrear un número similar de pares) simplifica la prueba de que el número esperado de distancias calculadas por el algoritmo es lineal. [4]
En cambio, un algoritmo diferente, Khuller y Matias (1995), pasa por dos fases: un proceso de filtrado iterado aleatorio que aproxima la distancia más cercana dentro de una relación de aproximación de , junto con un paso final que convierte esta distancia aproximada en la distancia más cercana exacta. El proceso de filtrado repite los siguientes pasos, hasta que quede vacío:
Elija un punto uniformemente al azar de .
Calcule las distancias desde hasta todos los demás puntos de y sea la distancia mínima.
Redondee los puntos de entrada a una cuadrícula de tamaño y elimine todos los puntos cuya vecindad de Moore no tenga otros puntos.
La distancia aproximada encontrada por este proceso de filtrado es el valor final de , calculado en el paso antes de quedar vacío. Cada paso elimina todos los puntos cuyo vecino más cercano esté a una distancia o mayor, al menos la mitad de los puntos esperados, de lo que se deduce que el tiempo total esperado para el filtrado es lineal. Una vez que se conoce un valor aproximado de , se puede utilizar para los pasos finales del algoritmo de Rabin; En estos pasos, cada punto de la cuadrícula tiene un número constante de entradas redondeadas, por lo que nuevamente el tiempo es lineal. [3]
Problema dinámico del par más cercano
La versión dinámica para el problema del par más cercano se expresa de la siguiente manera:
Dado un conjunto dinámico de objetos, encuentre algoritmos y estructuras de datos para un recálculo eficiente del par de objetos más cercano cada vez que se inserten o eliminen objetos.
Si el cuadro delimitador para todos los puntos se conoce de antemano y la función mínima de tiempo constante está disponible, entonces se sugirió la estructura de datos de espacio esperado que admite inserciones y eliminaciones de tiempo esperado y tiempo de consulta constante. Cuando se modifica para el modelo de árbol de decisión algebraico, las inserciones y eliminaciones requerirían el tiempo esperado. [9] La complejidad del algoritmo dinámico del par más cercano citado anteriormente es exponencial en la dimensión y, por lo tanto, dicho algoritmo se vuelve menos adecuado para problemas de alta dimensión.
Sergey Bespamyatnikh desarrolló un algoritmo para el problema dinámico del par más cercano en el espacio dimensional en 1998. [10] Los puntos se pueden insertar y eliminar en el tiempo por punto (en el peor de los casos).
^ Shamos, Michael Ian ; Hoey, Dan (1975). "Problemas del punto más cercano". 16º Simposio Anual sobre Fundamentos de la Informática, Berkeley, California, EE.UU., 13 al 15 de octubre de 1975 . Sociedad de Computación IEEE. págs. 151-162. doi :10.1109/SFCS.1975.8.
^ Rabin, M. (1976). "Algoritmos probabilísticos". Algoritmos y complejidad: resultados recientes y nuevas direcciones . Prensa académica. págs. 21–39.Según lo citado por Khuller y Matías (1995).
^ Clarkson, Kenneth L. (1983). "Algoritmos rápidos para el problema de todos los vecinos más cercanos". 24º Simposio anual sobre fundamentos de la informática, Tucson, Arizona, EE. UU., 7 al 9 de noviembre de 1983 . Sociedad de Computación IEEE. págs. 226-232. doi :10.1109/SFCS.1983.16.
^ Golin, Mardoqueo; Raman, Rajeev; Schwarz, cristiano; Smid, Michiel (1998). "Estructuras de datos aleatorias para el problema dinámico del par más cercano" (PDF) . Revista SIAM de Computación . 27 (4): 1036–1072. doi :10.1137/S0097539794277718. SEÑOR 1622005. S2CID 1242364.
^ Bespamyatnikh, SN (1998). "Un algoritmo óptimo para el mantenimiento del par más cercano". Geometría discreta y computacional . 19 (2): 175–195. doi : 10.1007/PL00009340 . SEÑOR 1600047.