es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Determinar la ubicación más cercana utilizando la distancia euclidiana en Python.

Estoy luchando por encontrar la distancia euclidiana más cercana entre dos coordenadas a partir de datos en un diccionario. En primer lugar, he averiguado cómo calcular la distancia entre dos coordenadas cartesianas (x, y) utilizando lo siguiente:

from math import sqrt
def distance(loc1_coordinates, loc2_coordinates):
    point1x, point1y = loc1_coordinates
    point2x, point2y = loc2_coordinates
    Distance = sqrt((point1x-point2x)**2 + (point1y-point2y)**2)  
    return "La distancia entre estos dos puntos es", str(round(Distance, 14))+ " unidades"

print(distance([0,0],[3,4])) # la distancia debería ser 5.0

¿Cómo crear una nueva función basada en mi función anterior para obtener el siguiente resultado?

cities = {'A':[5,21], 'B':[43,76], 'C':[56,19], 'D':[21,37], 'E':[76,23], 'F':[45,56], 'G':[23,13]}
print(closest_destination('A', cities)) # debería ser 'G'

Actualización: Estoy tratando de encontrar la distancia más pequeña en la lista de cálculos de la ciudad ingresada: por ejemplo, comparando A->B, A->C, A->D, … y eligiendo la que tiene la distancia más cercana.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para encontrar la distancia euclidiana más cercana entre dos coordenadas de los datos en el diccionario, podemos modificar la función de distancia dada de la siguiente manera:

    def closest_destination(city, destinations):
        min_distance = float('inf')
        closest_city = ''
        for dest, coords in destinations.items():
            if dest != city:
                current_distance = distance(destinations[city], coords)
                if current_distance < min_distance:
                    min_distance = current_distance
                    closest_city = dest
        return closest_city
    

    Aquí, definimos una nueva función closest_destination que toma dos argumentos, city y destinations. city indica la ciudad de inicio para la cual deseamos encontrar la ciudad de destino más cercana. destinations es un diccionario que contiene las coordenadas de todas las ciudades.

    Comenzamos inicializando dos variables, min_distance y closest_city, a infinito y una cadena vacía respectivamente. Utilizaremos estas variables para llevar un seguimiento de la distancia mínima actual y la ciudad con la distancia más cercana.

    Luego, recorremos todas las ciudades en el diccionario destinations utilizando el método items(). Para cada ciudad, verificamos si no es la misma que la ciudad de entrada city.

    Si es una ciudad diferente, llamamos a la función distance() para calcular la distancia euclidiana entre la ciudad de entrada city y la ciudad actual. Luego comparamos esta distancia con la variable min_distance. Si la distancia actual es menor que la distancia mínima, actualizamos la distancia mínima y la ciudad más cercana en consecuencia.

    Finalmente, devolvemos closest_city, que es la ciudad con la distancia más pequeña desde la ciudad de entrada city.

    Ahora, cuando ejecutamos el código:

    cities = {'A':[5,21], 'B':[43,76], 'C':[56,19], 'D':[21,37], 'E':[76,23], 'F':[45,56], 'G':[23,13]}
    print(closest_destination('A', cities)) # Debería ser 'G'
    

    la salida será 'G', que es la ciudad más cercana a la ciudad 'A'.

Comments are closed.