Расширение графика

62
8

В настоящее время я работаю над интересной задачей графа, я не могу найти никаких алгоритмов или других вопросов, связанных с stackoverflow, которые упоминают что-то вроде этого.


Если у меня есть график (неориентированный, циклический) и список обычно используемых путей, каков наилучший способ уменьшить среднюю длину пути, добавив в N больше ребер?


EDIT:: Важная точка, которая может помочь, все пути начинаются с одного и того же node.

спросил(а) 2021-01-19T18:54:21+03:00 2 месяца, 4 недели назад
1
Решение
87

Вы можете просто попробовать вставить все возможные края и посмотреть, насколько кратчайший путь уменьшается для каждой из ваших заданных начальных/конечных точек. Выберите лучший край и повторите.


Полезность ребер зависит от того, какие другие ребра были добавлены, поэтому, если вы действительно хотите оптимальности, вам придется попробовать все наборы N ребер. Это немного дороже. Не удивил бы меня, если бы он был NP-hard.


Интересный вопрос!

ответил(а) 2021-01-19T18:54:21+03:00 2 месяца, 4 недели назад
44

Отвечая на мой собственный вопрос, чтобы охватить то, что я уже рассмотрел.

Очевидное решение состоит в том, чтобы просто отсортировать общие пути по порядку и слот в соединении между двумя концами и продолжать делать это до тех пор, пока вы не выйдете из ребер для вставки. Тем не менее, я подозреваю, что существует более интеллектуальное решение.

ответил(а) 2021-01-19T18:54:21+03:00 2 месяца, 4 недели назад
44

Еще одно возможное решение, похожее на то, что оно может быть лучшим эвристическим, - это взять средневзвешенное значение всех конечных узлов (взвешенное по важности пути), а затем найти node, который ближе всего к вычисленной средней точке. Подключитесь к этому node.

Очевидно, что это работает только в том случае, если узлы как-то выложены в пространстве, но это хорошая аналогия.

ответил(а) 2021-01-19T18:54:21+03:00 2 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема