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