Я использовал функцию maze_solution от Image Analyst http://www.mathworks.com/matlabcentral/fileexchange/27175-mazesolution какое-то время без проблем. Есть несколько ограничений: лабиринт должен быть совершенным и без круговых путей.Решение лабиринта MatLab
Это, как говорится, это как правило, работает очень хорошо, когда я проверить это, позвольте мне представить вам два примера выходов:
maze-1 ->solution-1 (Очевидно, работает хорошо)
maze-2 ->solution-2 (не так хорошо)
Теперь позвольте мне поставить некоторые правила, которые не очевидны о моих лабиринтах:
- T здесь нет круглых путей (есть некоторые, которые оказались в ловушке в стенах, но никто из них, к которым не столкнулся лабиринт).
- Они начинаются всегда в левом верхнем углу, а затем каждый раз выходят четыре выхода в одинаковых координатах.
- Всегда есть только один выход.
Итак, что бы я хотел сделать, давайте рассмотрим первый скриншот. Он работает хорошо и «находит» выход, есть ли способ заставить панель mat вывести сообщение (например, используя msgbox()) и сказать что-то вроде «Привет, пользователь, я нашел решение! Это A!»? Я уже давно об этом думал, но не нашел способа сделать это. Одно из решений, я думал только о том, в псевдокоде:
if CertainCoordinate = red pixel
return A
В то время как CertainCoordinate Может быть неизменные координаты (х и у) А, В, С и D (Тогда я хотел бы использовать 4 «сослагательного наклонения»), но я не знаю, как это реализовать. Любые идеи или ... что-то указать мне в правильном направлении?
Итак, подведем итог: у меня есть алгоритм, который прямо сейчас генерирует красный путь к выходу (и я открыт для лучших алгоритмов, если у вас есть какие-либо предложения), но моя цель - заставить Matlab сказать мне, что он нашел , вместо того, чтобы показывать мне изображение. Так, например, в первом изображении я хотел бы открыть MessageBox и сказать «Привет, пользователь! Я нашел выход, это D!» Вместо того, чтобы показывать мне изображение с красным путем на нем. Проблема в том, что я не знаю, как научить MatLab, где D, и заставить его признать, что он нашел «D». Итак, есть ли какие-либо предложения о том, как это сделать?
Заранее благодарен!
Они представляют собой варианты алгоритма «подключенных компонентов» с использованием идеи раскраски графа. Вы должны обратиться к учебнику стандартных алгоритмов, может быть, к Стивену Лекену или к CLRS – Arcturus