Автор ищет функцию следующего вида.
def (pointA : point, pointB : point, figures : list) -> list
На вход приходит например точка А. Это где мы стоим. И точка Б - это выход из лабиринта.
Это впрочем мое видение задачи. Можно и изменить. И список фигур (полигоны) третьим
аргументом. И результат - список координат - траектория движения. Как выбежать из лабиринта.
Если решения не существует (например мы огородили точку А кольцом камней) то функция
должна вернуть например None.
В классическом варианте движение из точки А в точку Б в лабиринте реализуется на клеточном
поле алгоримом
Волны или
Волновым алгоримом.
https://habr.com/en/search/?target_type=posts&orde...]
Для нашего случая, поверхность надо покрыть сеткой в любым достаточно грубым разрешением
чтоб просто задача была решена. Это прозаично и работает.
По поводу
нейросетей. Тема модная и не сходит с топ обсуждений.
Я предлагаю вместо нейросетевого решения обсудить кейсы когда
решения не существует
а НС об этом не знает или не умеет такое детектировать. Если мы будем подмахивать нейросети
и подсовывать ей заведомо легкие решение (нет сплошной стены из фигур вокруг точки А например).
то это решение будет туфтой. И также туфтой будет нейросеть сколь бы умно она не выглядела.
Почему я решил пойти от негативного кейса? Мне кажется это - вопрос интересный и дискуссионный.
Это как доказательство теоремы. В случае алгоритма волны - это возможно. Если волна заполнила
все пространство вокруг А и не достигла Б - значит решения нет.
Кроме нейросетей есть еще комбинирование рандомных решений с улучшениями
(генетические
алгоритмы). С точки зрения лабиртнта это выглядит как построение большого количества
случайных путей из точки А в точку Б с отбором тех путей которые
- которые короче другие
- которые не пересекают края фигур
Для генетики
признаком невозможности найти решение будет скорее всего количество эпох
после которых мы так и не получили маршрут от А до Б без наезда на зеленые фигурки.