Алгоритм для ближайшей точки

У меня есть список ~ 5000 баллов (указывается как пары долготы / широты), и я хочу найти ближайшие 5 из них в другую точку, указанную пользователем.

Может кто-нибудь может предложить эффективный алгоритм для работы этого? Я реализую это в Ruby, поэтому, если есть подходящая библиотека, то это было бы хорошо знать, но я все еще интересуюсь алгоритмом!

Обновление: Пара людей попросили более конкретные детали проблемы. Так что здесь идет:

  • 5000 очков в основном в том же городе. В нем может быть несколько, но безопасно предположить, что 99% из них лежат в радиусе 75 км, и что все они лежат в радиусе 200 км.
  • Список точек изменяется редко. Ради аргумента, скажем, он обновляется один раз в день, и мы должны иметь дело с несколькими тысячами запросов в то время.
8
задан thomson_matt 3 September 2011 в 13:18
поделиться