1.ПОСТАНОВКА ЗАДАЧИ
Волновой алгоритм (алгоритм Lee) – один из самых интересных и широко используемых алгоритмов. Он позволяет находить кратчайший путь от точки А в точку Б в планарном графе, представляющий некоторый лабиринт. Этот алгоритм широко используется в игровой индустрии для построения кратчайшего пути к сопернику, что позволяет обходить препятствия на картах. Также алгоритм может быть использован для построения системы автоматического проектирования печатных плат в электронике (как известно, выводы электронных компонентов на плате соединяются медными дорожками, причем их длина выбирается кратчайшей). Наконец, с некоторыми модификациями, алгоритм может использоваться для моделирования реальных ситуаций, в том числе в трехмерных координатах – моделирование распространения тепла в металлической пластине или загрязняющей примеси в атмосферном воздухе. Описание алгоритма есть в открытых источниках.
Визуализатор работы волнового алгоритма представляет собой приложение, показывающее наглядно работу алгоритма. Интерфейс приложения включает большое поле, в котором пользователь может мышкой нарисовать произвольный лабиринт. Лабиринт представляется в виде матрицы, где стенки помечаются отрицательным числом, а проходимые места – нулями. Положительные числа могут быть использованы для моделирования распространения цифровой волны (первый этап работы алгоритма). Кроме того, в интерфейсе приложения есть панель настроек (где можно указать размеры лабиринта, координаты точек А и Б) и панель операций, где располагаются основные кнопки управления – «загрузить карту лабиринта из файла», «сохранить карту лабиринта в файл», «начать моделирование», «следующий шаг», «очистить карту».
Первые две кнопки позволяют загрузить или сохранить нарисованную карту в файл. Последующая кнопка запускает визуализацию процесса построения пути. При нажатии кнопки «следующий шаг» на поле отображается текущий фронт волны в виде номера фронта волны (первая часть алгоритма), либо рисуется путь (вторая часть алгоритма).
Задача состоит в следующем: необходимо разработать программу, которая будет позволять пользователю задавать размеры сетки, а также задавать ее содержимое (свободные клетки, стены, начальную и конечную точки) с помощью мыши. После задания начальной и конечной точек программа должна находить кратчайший путь между ними с помощью алгоритма "Wave" и отображать его на сетке.
Весь текст будет доступен после покупки