Tenemos una lista de pares x, y. Cada par representa un punto en un espacio 2D. Quiero encontrar el punto más cercano de esta lista, a un punto específico xq, yq. ¿Cuál es el mejor algoritmo de rendimiento crítico para este problema? Lisp de puntos no va a cambiar; lo que significa que no es necesario realizar la inserción y eliminación. Solo quiero encontrar el vecino más cercano de un objetivo xq, punto yq en este conjunto.El mejor algoritmo de rendimiento crítico para resolver al vecino más cercano
Edit 1: ¡Gracias a todos! Como Stephan202 ha adivinado correctamente, quiero hacer esto repetidamente; como una función. La lista no está necesariamente ordenada (de hecho, no entiendo cómo se puede ordenar, como una tabla con una clave principal de 2 columnas ayy si eso ayuda, la ordenaré).
Construiré la estructura de datos basada en la lista una vez, y luego usaré esta estructura de datos generada en la función (si este proceso es relevante).
Gracias Jacob; Parece que la estructura de datos de KD-Tree es un buen candidato para ser la respuesta (y creo que sí. Actualizaré cuando obtenga algunos resultados relevantes).
Editar 2: ¡He encontrado que, este problema se llama "vecino más cercano"!
Edición 3: El primer título fue "En busca de un algoritmo (para consultas espaciales e indexación espacial) (vecino más cercano)"; He elegido un nuevo título: "Mejor algoritmo de rendimiento crítico para resolver al vecino más cercano". Dado que no quiero realizar operaciones de inserción y eliminación en mis datos iniciales y quiero solo el más cercano de ellos a un nuevo punto (que no va a ser insertado), elegí (actualmente) trabajar en KD-Trees. ¡Gracias a todos!
¿Hay alguna estructura en la lista (por ej., Clasificada)? ¿Desea repetir esta operación, o se realizará una vez? Esta es información relevante que las personas necesitarán para responder su pregunta. – Stephan202
¿Tiene acceso a una base de datos espacial? –
Si la lista no está ordenada y la operación se realizará solo una vez, deberá realizar una búsqueda lineal sobre la lista y, por lo tanto, no podrá obtener mejores resultados que O (n). Si vas a repetir la operación, tendrás que crear una representación adecuada (árbol) de la lista, basada en los valores xey del elemento. – Stephan202