Алгоритм кратчайшего пути: несколько источников, ближайший пункт назначения

Такие алгоритмы, как алгоритм Беллмана-Форда и алгоритм Дейкстры, существуют для поиска кратчайшего пути от одной начальной вершины графа до любой другой вершины. Их версия с несколькими источниками может быть достигнута путем перестановки всех ребер и обработки пункта назначения в качестве начального узла.

Я хотел бы расширить это, чтобы найти «барицентр» источников на графе, т.е. вершину, которая является «ближайшей» к набору источников, находя «справедливые» пути к «согласованному " вершина.

Существуют ли уже алгоритмы, обеспечивающие это? Кто они такие?


person Alban Dericbourg    schedule 26.11.2016    source источник


Ответы (1)


алгоритм Флойда-Уоршалла

Я думаю, вы хотите рассчитать «Эксцентриситет графика» источников (S1,S2,...Sn-1,Sn).

  1. Используйте алгоритм Флойда-Уоршалла для вычисления всех пар кратчайших путей на графике.
  2. Найдите результирующий узел V в графе, который является минимальной суммой (d[v,S1]+d[v,S2]+d[v,S3]....d[v,Sn-1]+d[ в,Сн])

Дополнительная информация:

Эксцентриситет графика

ОБНОВЛЕНИЕ

Возможно, найти существующий узел v на графике G(V,E), расстояние до которого до S равно, нереально. Вы можете рассчитать отклонение стенда (d[v,S1],d[v,S2],d[v,S3]...d[v,Sn-1],d[v,Sn]) между диапазон, который больше или равен 0 и меньше определенного значения, которое вы выбираете.

person shawn    schedule 28.11.2016
comment
Мне потребуется некоторое время, чтобы проверить, соответствует ли это моим потребностям (и принять ответ). А пока: спасибо вам! :) - person Alban Dericbourg; 28.11.2016
comment
@AlbanDericbourg Рассчитайте минимум суммы. Я обновил ответ. - person shawn; 28.11.2016
comment
Вероятно, мне придется определить другую метрику, но идея мне кажется хорошей (мне нужно не только найти ближайшую вершину, но и иметь достаточное расстояние между точкой назначения и каждой исходной вершиной). - person Alban Dericbourg; 28.11.2016
comment
@AlbanDericbourg Начиная с шага 2, это классическая проблема LP. Вы можете просто обновить свои константы, чтобы удовлетворить ваши требования. Я скоро обновлю ответ. - person shawn; 28.11.2016
comment
@AlbanDericbourg Я обновил ответ. Я думаю, что Stand Deviation - хороший показатель для вас, чтобы рассчитать честные пути. - person shawn; 29.11.2016
comment
Сегодня попробовал: это то, что мне нужно. Спасибо! - person Alban Dericbourg; 29.11.2016