From 65594bdb6e5a1da699632f17c7b1f64d1d372fbc Mon Sep 17 00:00:00 2001 From: raskatovia Date: Sat, 23 May 2026 12:34:31 +0300 Subject: [PATCH] =?UTF-8?q?[2]=20=D0=BE=D1=84=D0=BE=D1=80=D0=BC=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BE=D1=82=D1=87=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- raskatovia/docs/task2report.md | 46 ++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/raskatovia/docs/task2report.md b/raskatovia/docs/task2report.md index e69de29..d78ae3b 100644 --- a/raskatovia/docs/task2report.md +++ b/raskatovia/docs/task2report.md @@ -0,0 +1,46 @@ +Цель работы + +В этом задании я сделал программу для поиска пути в лабиринте. Лабиринт загружается из текстового файла, после этого для него запускаются три алгоритма: BFS, DFS и A\*. Нужно было сравнить как они проходят разные карты + + + + В файле maze.py находится описание лабиринта. Cell отвечает за отдельную клетку, а Maze хранит всю карту, старт, финиш и умеет находить соседние клетки, куда можно идти. Для загрузки карты из файла сделан MazeBuilder. Он читает строки, проверяет их длину и ищет точки S и F. \[тут я столкнулся с ошибкой на hard.txt, потому что одна строка была другой длины] + + В файле solver.py находится поиск пути.MazeSolver получает стратегию поиска и запускает её. Были сделаны три стратегии: BfsStrategy, DfsStrategy и AstarStrategy. BFS идёт в ширину, DFS идёт в глубину, а A\* использует расстояние до финиша + + Сначала программа проверялась на simple.txt, потом были добавлены medium.txt и hard.txt. Для каждой карты запускались все три алгоритма. Программа выводила найденный путь, количество посещённых клеток и длину пути + + Для замеров сделан файл zamery.py. Он запускает алгоритмы по 5 раз и сохраняет результаты в results.csv + + Результаты + +simple.txt; BFS; время 0.00001532; посещено 9; длина пути 5 + +simple.txt; DFS; время 0.00000710; посещено 5; длина пути 5 + +simple.txt; A\*; время 0.00001304; посещено 5; длина пути 5 + + + +medium.txt; BFS; время 0.00003650; посещено 29; длина пути 29 + +medium.txt; DFS; время 0.00003346; посещено 29; длина пути 29 + +medium.txt; A\*; время 0.00004344; посещено 29; длина пути 29 + + + +hard.txt; BFS; время 0.00004418; посещено 38; длина пути 19 + +hard.txt; DFS; время 0.00002262; посещено 19; длина пути 19 + +hard.txt; A\*; время 0.00003804; посещено 25; длина пути 19 + + + + По результатам видно, что на простом лабиринте разница почти не важна. На medium.txt все алгоритмы прошли примерно одинаково. На hard.txt разница заметнее: BFS посетил больше всего клеток, DFS меньше всего, а A\* оказался между ними. При этом длина пути на hard.txt у всех получилась одинаковая + + Заключение + +В работе получилось сделать загрузку лабиринта из файла и несколько способов поиска пути. BFS надёжный, но может обходить больше клеток. DFS простой и иногда быстро доходит до финиша, но зависит от формы лабиринта. A\* старается идти ближе к цели, но на маленьких картах его преимущество не всегда видно.В целом задание было понятнее когда появились карты и путь стал выводиться прямо в консоли. Самая заметная проблема была с неправильной строкой в hard.txt, но после исправления все карты начали нормально запускаться +