Skip to content

Данный курсовой проект является конечным результатом изученного курса "Программирование и программное обеспечение информационных технологий".

Notifications You must be signed in to change notification settings

GreyStone97/Algorith_Li

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 

Repository files navigation

Описание работы волнового алгоритма

Волновой алгоритм - это алгоритм, который позволяет вам найти минимальный путь на графе. В основе этого метода лежит алгоритм поиска по ширине. В основном, волновой алгоритм используется для нахождения кратчайшего пути на графе, в общем случае он находит только его длину.

Целью волнового алгоритма (как и большинства других алгоритмов) является задача прокладки или нахождения пути на карте между начальной и конечной точкой (ячейкой). С описанием волнового алгоритма можно ознакомиться более подробно по этой ссылке: http://orionxl.ru/volnovoj-algoritm.html

Lee_algorithm

Требования к функциональным характеристикам

Для взаимодействия программы и пользователя необходима реализация следующих функций:

  • чтение данных из xml-файла
  • генерация лабиринта (с учетом пользовательского ввода)
  • поиск минимального пути (с использованием волнового алгоритма)
  • отображение выхода из лабиринта

Основная информация: случайный лабиринт с пустотами и препятствиями.
Полученная информация: отображение минимального пути в случайном лабиринте в консольном режиме.

Описание программы

В этом проекте минимальный маршрут выбирается с применением алгоритма Ли (волновой алгоритм). В начале работы программа выводит таблицу (обычную сетку) с размером, считанным из файла, где 99 - обозначение препятствия, а -1 - свободная ячейка.

Далее алгоритм предлагает ввести координаты начальной и конечной точек (от 1 до 13 в x и y для данного примера). После ввода программа выводит на консоль таблицу, в которой нули показывают путь от начала до конечной точки. И в конце - координаты точек маршрута, соединяющих начало и конец.

cursach

Найденный кратчайший путь помечается нулями.

cursach2

Основные методы в программе:

  • Метод WaveAlg – построение волнового алгоритма
  • метод Block – заполнение карты препятствиями
  • Метод findPath – реализация поиска кратчайшего пути
  • Метод WaveOut – вывод координат пути в лабиринте
  • Метод TraceOut – вывод лабиринта в виде таблицы

Поиск по кратчайшему пути реализован с использованием следующих структур данных, а именно: списка, файла и массива. Список - это набор элементов одного типа, где количество элементов больше или равно 0.

В программе эта структура используется для объекта wave. В основном списки реализованы на основе другой структуры - массивов, в нашем случае – двумерного массива (матрицы), который генерирует лабиринт, а также выводит таблицу, отображающую кратчайший путь от начальной до конечной точки. Для того чтобы сгенерировать лабиринт, вам необходимо получить данные из xml-файла.

Тестирование программы

Во время разработки программы "поиск кратчайшего пути в лабиринте" была проведена проверка на обнаружение ошибок, программа функционирует корректно, при этом никакого дополнительного тестирования не проводилось. Проверка работы программы заключалась в вводе различных исходных данных и получении соответствующих результатов.

Исходные данные Полученные данные
1, 1, 13, 13 1 - 1, 2 -1, 3 - 1, 4 - 1, 5 -1, 6 - 1, 7 - 1, 8 - 1, 8 - 2, 8 - 3, 8 - 4, 8 - 5, 9 - 5, 10 - 5, 10 - 6, 11 - 6, 12 - 6, 13 - 6, 13 - 7, 13 - 8, 13 - 9, 13 - 10, 13 - 11, 13 -12, 13 – 13
! и другие символы отображается сообщение об ошибке в отношении введенных значений

gsh

Полученные результаты свидетельствуют об эффективности и качестве разработанной программы. Но для более детального тестирования необходимо провести несколько тестов.

About

Данный курсовой проект является конечным результатом изученного курса "Программирование и программное обеспечение информационных технологий".

Topics

Resources

Stars

Watchers

Forks

Languages