Этот вопрос является улучшением предыдущего вопроса SO.
Расчет расстояния для большого количества устройств / узлов
У меня есть N мобильных устройств / узлов (скажем, 100K), и я периодически получаю значения их местоположения (широта, долгота).
Некоторые из устройств «логически подключены» примерно к M другим устройствам (скажем, в среднем 10). Моя программа периодически сравнивает расстояние между каждым устройством и его логически подключенными устройствами и определяет, находится ли расстояние в пределах порогового значения (скажем, 100 метров).
Кроме того, количество логических соединений «K» также может быть больше одного и (скажем, 5 в среднем). Пример: A может быть соединен с B, C, например, для «родительской» логики. А также можно подключить к C, D, E, F для «рабочей» логики.
Мне нужен надежный алгоритм для расчета этих расстояний до логически связанных устройств.
Порядок сложности метода грубой силы будет N M K или (3 с точки зрения порядка)
Программа делает это каждые 3 секунды (все устройства мобильные), поэтому, например, 100K * 10 * 5 = 5M вычислений каждые 3 секунды не очень хорошо.
Какие-нибудь хорошие / классические алгоритмы для этой операции?