Ciertamente, puede mejorar una solución que simplemente calcula la distancia para todos los puntos. En la práctica, las ganancias de una implementación particular pueden depender de la distribución de los puntos y las líneas. Sobre posible mejora:
– determine el centro C del círculo más pequeño que contendrá todos sus puntos y calcule su radio R
– determine el conjunto de puntos que son vértices del polígono convexo más pequeño que contendrá todos sus puntos, y establezca una bandera en estos puntos (márquelos como ‘perímetro’ o lo que sea)
– ahora para cualquier línea que se esté evaluando, calcule la distancia a C; si es mayor que R, entonces solo necesita iterar sobre el conjunto de puntos perimetrales para encontrar el más cercano, porque la línea pasa fuera del conjunto de puntos
Sin embargo, esta optimización puede ser inútil si su L siempre o casi siempre pasa a través de P en lugar de pasar fuera de ella.
Para una situación en la que L pasa a través de P, debería ser posible mejorar la iteración exhaustiva ordenando previamente los puntos en zonas o grupos, y descartando o eliminando conjuntos completos de puntos basados en el hecho de que su grupo asignado está demasiado lejos del línea. Básicamente, si sabemos que todos los puntos P1 están dentro de cierta distancia D1 del punto central de P1, y sabemos que la distancia desde este punto a L es mayor que D1 más la distancia al candidato actual para el punto más cercano, podemos descartar todo el conjunto P1 de nuestra lista de candidatos sin más cálculos.
Una pregunta difícil, por supuesto, es exactamente qué tipo de conjunto de zonas o grupos daría como resultado el mejor rendimiento.
- Pruebas (matemáticas): ¿Cómo demuestras que <CTP = <CBP + <BCN?
- ¿Qué es el ángulo de Ackerman?
- Geometría: ¿Por qué no se puede equilibrar una esfera encima de una pirámide?
- Dado un triángulo con dos bisectrices de ángulo igual, ¿debe ser un triángulo isósceles? ¿Cuál es la prueba?
- Geometría: ¿Pueden las formas unidimensionales tener área?