Имеется двухмерный лабиринт, где вы можете дать 4 команды «двигаться вверх / вниз / вправо / влево». Зная лабиринт, а не где находится человек, как найти минимальную последовательность команд, которая гарантирует выход из лабиринта? Я ищу единственную последовательность команд, которая будет работать независимо от того, где в лабиринте вы начинаете.
Предположим, что если нашему партнеру будет дана команда «двигаться вправо», когда справа будет стена, он просто останется там, где он есть.
Другими словами, нам дан лабиринт, и мы должны выбрать последовательность команд. Затем наш партнер будет размещен где-то в лабиринте и будет следовать последовательности команд, которые мы выбрали заранее. Мы хотим, чтобы эта последовательность гарантировала, что наш партнер сбежит, независимо от того, где наш партнер был первоначально размещен. Обратите внимание, что допустимые команды не имеют никаких условных операторов, поэтому они не могут следовать другой последовательности в зависимости от вашего партнера.
Существует ли алгоритм полиномиального времени для построения такой последовательности с учетом описания лабиринта?
Юваль Фильмус упоминает, что это частный случай проблемы с синхронизирующим словом и может быть связан с универсальными последовательностями обхода. Я также нашел документ, который кажется актуальным:
Одновременное решение лабиринта . Стефан Функе, Андре Нуссер, Сабина Сторандт. AAAI 2017.
К сожалению, для общих графиков это кажется нерешенной проблемой, но мне интересно, может ли быть хороший алгоритм для этого конкретного случая. Я придумал подход кандидата: пометьте каждую позицию с минимальным количеством шагов, необходимых для выхода, и отслеживайте каждого агента в лабиринте. Это может быть возможно сделать поиск A * таким образом.
источник
Ответы:
источник