В настоящее время я использую алгоритм поиска пути A * для расчета пути в бесконечной сетке (используя UnboundedGrid в Gridworld, тематическое исследование AP CS, если это кому-то поможет). Все работает чудесно, за исключением случаев, когда не существует допустимого пути, потому что конечный узел полностью окружен стенами. Как и ожидалось, алгоритм продолжает поиск бесконечно, никогда не находя конечный узел.
Возможным решением этого было бы размещение невидимых (например, пользователь их не видит, но видит алгоритм) стены вокруг всей области поиска пути, убедившись, что начальный узел, конечный узел и все узлы стены находятся внутри этих стены, с 2-3 пробелами или около того. Что-то типа:
_________________________________
| |
| S | |
| _____| _____ |
| | E | |
| |___| |
|_______________________________|
... идея состоит в том, что в конечном итоге все узлы будут добавлены в закрытый список, открытый список станет пустым, и в этот момент я узнаю, что допустимого пути не существует.
Кажется ли это разумным решением проблемы? Есть ли способы, которыми это может потенциально пойти не так? Я понимаю, что другим решением является одновременный поиск пути назад от конца, но это может быть потенциально дорого, особенно в тех случаях, когда конечный узел не так плотно закрыт.