Проблема
Представьте, что я стою в аэропорту. Учитывая пару географических координат, как можно эффективно определить, в каком аэропорту я нахожусь?
Входы
- Координатная пара
(x,y)
, представляющая местоположение, в котором я нахожусь. - Набор пар координат
[(a1,b1), (a2,b2)...]
, где каждая пара координат представляет один аэропорт.
Желаемый результат
Пара координат (a,b)
из набора пар координат аэропорта, представляющих ближайший аэропорт к точке (x,y)
.
Неэффективное решение
Вот моя неэффективная попытка решить эту проблему. Он явно линейен по длине набора аэропортов.
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
Вопрос
Как можно улучшить это решение? Это может включать какой-либо способ предварительной фильтрации списка аэропортов на основе координат того места, в котором мы сейчас находимся, или предварительной сортировки их в определенном порядке.
compute_distance()
, в чем я сомневаюсь, поскольку вы, вероятно, просто выполняете Haversine расстояние) - person Dmitry Torba   schedule 23.08.2016