У меня есть ровер, который строит карту по ходу дела.Он хранит данные о каждом месте сетки в узле.Он хранит информацию о том, был ли он исследован / не исследован (то есть, если датчики сканировали это местоположение на сетке) или посещен (ровер был актуален в этом месте) или заблокирован или нет.Я использую A *, чтобы помочь найти пути.Итак, переход от исходного местоположения (местоположения роверов) к месту назначения.Эти места назначения являются неисследованными частями карты, которую он создает.
Данные хранятся в связанном массиве решеток, в основном каждый узел имеет 8 указателей на каждое окружающее местоположение сетки.каждое родительское местоположение, которое было исследовано, будет создавать / заполнять окружающие узлы неизведанными.каждый исследуемый узел помечается, если он был посещен / обнаружен или заблокирован / доступен для навигации.Неизведанное - просто ноль для всего, кроме ожидаемого исследуемого бита.
Я ищу алгоритм, помогающий найти следующее неисследованное место назначения.Скорее всего, самый близкий, но он должен быть в состоянии оставаться быстрым при увеличении размера карты.
Я попытался создать 2d массив, который примерно в 4 раза больше размера единичного узла, но проблема, которую я запустилкогда все узлы этого размера исследуются, происходит сбой.Я думал о том, чтобы попытаться проверить каждый узел, выходящий наружу от исходного узла.но это будет проверка множества узлов, которые уже были замечены и которые становятся громоздкими по мере роста карты.Дело в том, что внешний периметр всегда будет иметь неизведанные узлы.Также любые узлы внутри большого объекта.(Мне все еще нужно найти способ изменить эти узлы).
У меня еще нет кода.
Я ожидаю, что это быстрый алгоритм, который находит неисследованное местоположение, поэтому яможет использовать это, имеет мой пункт назначения в моем * A пути поиска.