Как найти кратчайший путь в динамической ситуации

Несколько дней назад кто-то спрашивает меня: "Если у нас есть какие-то агенты в нашей среде, и они хотят перейти из своих источников в свои пункты назначения, как мы можем найти общий кратчайший путь для всех из них, чтобы у них не было конфликты во время их прогулки.

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

Предположим, что ввод - это граф G (V, E), m агентов, которые находятся в: S 1, S 2,..., S m узлов графика при запуске, и они должны перейти в узлы D 1,... D m в конце. Также может быть конфликт в узлах S i или D i,... но эти конфликты не являются важно, чтобы у них не было конфликтов, когда они находились в своих внутренних узлах своего пути.

Если их путь не должен иметь такой же внутренний node, он будет выглядеть как k-disjoint paths проблема, которая является NPC, но в этом случае пути могут иметь одинаковые узлы, но агент не должен быть таким же node в одно и то же время. Я не знаю, могу ли я сказать точное утверждение проблемы или нет. Если запутать, скажите мне в комментариях, чтобы отредактировать его.

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

Ответ 1

Поиск в Google показывает две ссылки, которые могут быть полезны:

Изменить: В главе книги (первая ссылка):

Существуют различные подходы к планированию маршрутов в многопользовательской системе [sic], однако, оптимальное решение NP-hard. Hopcraft et al. (1984) упрощают задачу планирования для проблема перемещения прямоугольников в прямоугольном контейнере. Они доказали NP-твердость нахождение плана от заданной конфигурации до конфигурации цели с наименьшим количеством шаги. Следовательно, все возможные подходы к планированию пути являются компромиссом между эффективностью и точность результата.

Я не могу найти оригинальную бумагу Hopcroft онлайн, но, учитывая эту цитату, я подозреваю, что проблема, с которой они уменьшили задачу навигации, похожа на Rush Hour, который является PSPACE-полным.

Ответ 2

Если это просто вопрос перехода от точки a к точке b для каждого робота, вы можете просто использовать алгоритм поиска, например A * (A Star) или Best-First.

Дайте ему простую эвристику, такую ​​как сумма расстояний от цели.