У меня есть сетка с началом, концом и некоторыми стенами. Юниты выбирают кратчайший путь (двигаются только вверх/вниз/влево/вправо) от начала до конца, минуя стены.
Пользователю разрешено добавлять столько дополнительных стен, сколько он хочет, чтобы изменить путь.
Однако обратите внимание, что независимо от того, сколько стен добавлено или где они добавлены, есть некоторые квадраты, которые никогда не могут быть частью кратчайшего пути!
Эти квадраты никогда не могут быть частью кратчайший путь!
Я ищу способ определить, какие квадраты никогда не могут быть частью кратчайшего пути.
Вышеуказанные случаи достаточно легко найти; но бывают и более сложные случаи. Учитывать:
На приведенном выше изображении ни один из квадратов с красными точками не может быть частью наилучшего пути, потому что в эту область есть только один вход, и она имеет ширину всего два поля. Если бы он был шириной в три клетки или если бы хоть одна из стен была удалена, большинство этих квадратов потенциально могли бы стать частью наилучшего пути.
Я пытался найти способ обнаружения случаев, подобных приведенным выше (в основном с использованием минимальных вырезов и заливок), но безуспешно. Кто-нибудь знает способ решить эту проблему?