Для этого вопроса предположим, что следующие вещи неизвестны:
- Размер и форма комнаты
- Расположение робота
- Наличие каких-либо препятствий
Также предположим, что следующие вещи являются постоянными:
- Размер и форма комнаты
- Количество, форма и расположение всех (если есть) препятствий
И предположим, что робот обладает следующими свойствами:
- Он может двигаться только вперед с приращением абсолютных единиц и поворачиваться в градусах. Также перемещающаяся операция вернет true, если она прошла успешно, или false, если она не смогла двигаться из-за препятствия.
- Достаточно неограниченный источник энергии (скажем, это робот, работающий на солнечной энергии, размещенный на космической станции, которая постоянно смотрит на солнце без потолка)
- Каждое движение и поворот выполняются с абсолютной точностью каждый раз (не беспокойтесь о недостоверных данных)
Наконец, рассмотрите следующие свойства среды робота:
- Находясь на космической станции без потолка, комната находится в безопасном, но очень близком расстоянии от проходящих комет, поэтому пыль (и лед) постоянно засоряют окружающую среду.
Мне задали гораздо более простую версию этого вопроса (комната - это прямоугольник, и нет никаких препятствий, как бы вы переместились через него, гарантируя, что вы могли бы пройтись по каждой части хотя бы один раз), и после этого я начал задаваться вопросом, как бы вы подошли к этому, если бы вы могли не гарантирует форму или наличие препятствий. Я начал смотреть на это с помощью алгоритма Дейкстры , но мне очень интересно услышать, как другие к этому подходят (или если есть хорошо принятый ответ на это? (Как Roomba делает это?)