Существует ли алгоритм поиска кратчайшего пути в графе с указанием нескольких точек?

Здравствуйте, уважаемые it-специалисты.

Суть задачи. Есть несколько многоэтажных зданий. В каждом из них, на каждом этаже расположены комнаты.

Задача.
На входе пользователь указывает комнаты (как правило от 2 до 10, где-то), в которые ему нужно попасть за один обход в рамках всех этажей всех зданий.
А на выходе должен получать кратчайший маршрут обхода этих точек.

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

P.S. Пишем на php с базой данных mysql. Проект не высоконагруженный. Есть возможность задействовать шустрый сервер.
  • Вопрос задан
  • 904 просмотра
Решения вопроса 1
cjey
@cjey
С вашими ограничениями подойдет решение полным перебором.

Сначала алгоритмом Флойда ищем все кратчайшие расстояния между выбранными вершинами.

Потом перебираем все последовательности обхода и считаем минимум. Таких последовательность будет 10! = 3,6 * 10^6 даже на самом простом компьютере должно перебираться не более секунды.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@SeptiM
Это задача коммивояжера. Для 10-20 комнат решается через динамическое программирование. Для большего нужно смотреть конкретные данные. Если я правильно понимаю, можно решить задачу для каждого здания отдельно, потом совместить.
Ответ написан
@maxtm
Make money, not job
Либо вы не указали все условия, либо задача очень простая.
Ответ: строить проход по все комнатам в контексте одно этажа, далее следующий этаж (куда нужно зайти)
Ответ написан
AMar4enko
@AMar4enko
С таким количеством точек можно простейшим волновым алгоритмом.
https://www.youtube.com/watch?v=9ev9Y-hJhj4
Само собой, при подсчете волны надо учитывать веса ребер, в видео по-моему про это нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы