Effizientes Finden des nächsten Koordinatenpaars aus einer Menge in Python
Das Proble
Stellen Sie sich vor, ich stehe auf einem Flughafen. Wie kann man bei einem gegebenen geografischen Koordinatenpaar effizient bestimmen, auf welchem Flughafen ich stehe?
Eingänge
Ein Koordinatenpaar(x,y)
Stellvertretend für den Standort, an dem ich stand. Ein Satz Koordinatenpaare[(a1,b1), (a2,b2)...]
wobei jedes Koordinatenpaar einen Flughafen darstellt.Gewünschte Ausgabe
Ein Koordinatenpaar(a,b)
aus der Menge der Flughafenkoordinatenpaare, die den nächstgelegenen Flughafen zum Punkt @ darstell(x,y)
.
Ineffiziente Lösung
Hier ist mein ineffizienter Versuch, dieses Problem zu lösen. Es ist eindeutig linear in der Länge der Reihe von Flughäfen.
shortest_distance = None
shortest_distance_coordinates = None
point = (50.776435, -0.146834)
for airport in airports:
distance = compute_distance(point, airport)
if distance < shortest_distance or shortest_distance is None:
shortest_distance = distance
shortest_distance_coordinates = airport
Die Frag
Wie kann diese Lösung verbessert werden? Dies kann dazu führen, dass die Liste der Flughäfen auf der Grundlage der Koordinaten des Standorts, an dem wir uns gerade befinden, vorab gefiltert oder in einer bestimmten Reihenfolge sortiert wird.