Эффективный алгоритм расчета расстояния между сообществом (взаимосвязанными узлами) до другой точки

У меня есть структура графа в пространственной области (скажем, структура типа плотного сообщества) и точка запроса. Я хочу разработать эффективные алгоритмы + структуры данных для расчета расстояния между этой группой в целом и точкой запроса.

Подходящей функцией расстояния здесь может быть усреднение расстояния всех точек от точки запроса. Альтернативной функцией может быть взятие максимума всех расстояний.

Как мне решить эту проблему?


person Nitish Upreti    schedule 22.04.2014    source источник
comment
Я бы рекомендовал предварительно вычислить центроид вашего сообщества и просто измерить расстояние до произвольной точки через центроид.   -  person ProgrammerDan    schedule 22.04.2014
comment
Мы говорим о расстояниях в графах или в пространственных расстояниях?   -  person David Eisenstat    schedule 22.04.2014
comment
Речь идет о Пространственном расстоянии.   -  person Nitish Upreti    schedule 22.04.2014
comment
Как этот вопрос относится к rtree? Кажется, у тебя уже есть соседи.   -  person Has QUIT--Anony-Mousse    schedule 22.04.2014
comment
Я думаю, что для разработки эффективного решения этой проблемы потребуется некоторая форма пространственной индексации (в которой R-Trees хороши)   -  person Nitish Upreti    schedule 23.04.2014


Ответы (1)


Если пространственные расстояния: я бы предложил среднеквадратичное расстояние, которое, в отличие от центроида, соответствует духу ваших двух предложений, поскольку оно является функцией расстояний от точки запроса до каждой точки в сообществе. Предварительно обработайте сообщество путем суммирования для каждой точки (x, y) квадрата многочлена расстояния (X - x) ^ 2 + (Y - y) ^ 2 в переменных X и Y. Затем вычислите среднеквадратичное расстояние, подключив запрос балл, разделив его на количество баллов сообщества, и извлекли квадратный корень.

person David Eisenstat    schedule 22.04.2014