From 10dcc4307f25c284f6e75a2cce24506d938e4017 Mon Sep 17 00:00:00 2001 From: not why Date: Mon, 25 May 2026 03:26:25 +0300 Subject: [PATCH] added report --- soninrv/docs/performance_plot.png | Bin 0 -> 85480 bytes soninrv/docs/report2.md | 105 ++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 soninrv/docs/performance_plot.png create mode 100644 soninrv/docs/report2.md diff --git a/soninrv/docs/performance_plot.png b/soninrv/docs/performance_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..81c8327f659e312e388a52043f75f4ebe58b4293 GIT binary patch literal 85480 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 N@(DGC40&VU{{x9m|7-vN literal 0 HcmV?d00001 diff --git a/soninrv/docs/report2.md b/soninrv/docs/report2.md new file mode 100644 index 0000000..d626e8e --- /dev/null +++ b/soninrv/docs/report2.md @@ -0,0 +1,105 @@ +# Отчёт по лабораторной работе «Поиск выхода из лабиринта» + +## 1. Цель работы + +Разработать гибкую расширяемую программу для загрузки лабиринта из текстового файла, поиска пути от старта до выхода с возможностью выбора алгоритма и экспериментального сравнения алгоритмов. В ходе работы применены паттерны проектирования GoF: **Builder**, **Strategy**, **Observer**, **Command**. + +Реализованные алгоритмы поиска пути: + +- **BFS** (поиск в ширину) — гарантирует кратчайший путь по числу шагов. +- **DFS** (поиск в глубину) — не гарантирует кратчайший путь, но быстрее при удачном порядке соседей. +- **A\*** (с манхэттенской эвристикой) — направленный поиск, учитывает веса клеток. +- **Dijkstra** — оптимален для взвешенных графов, без эвристики. + +Тестовые лабиринты: + +- Маленький 10×10 — простой путь. +- Средний 50×50 — с тупиками (алгоритм Прима). +- Большой 100×100 — запутанная структура. +- Пустой 30×30 — без стен, демонстрирует максимальную нагрузку. +- Без выхода 20×20 — старт и выход разделены глухой стеной. +- Взвешенный 40×40 — клетки с разным весом: асфальт (1), песок (2), болото (3). + +Каждый эксперимент повторялся 7 раз, результаты усреднены. + +## 2. Описание паттернов + +| Паттерн | Классы | Назначение | +|---|---|---| +| Builder | `MazeBuilder`, `TextFileMazeBuilder` | Скрывает парсинг файла; новый формат = новый класс | +| Strategy | `PathFindingStrategy`, BFS/DFS/A\*/Dijkstra | Смена алгоритма одной строкой без изменения остального кода | +| Observer | `Observer`, `ConsoleView` | Визуализация отделена от логики поиска | +| Command | `Command`, `MoveCommand`, `CommandHistory` | Пошаговое управление игроком с поддержкой undo | + +## 3. Результаты экспериментов + +Усреднённые значения (7 повторений) представлены в таблице: + +| Лабиринт | Алгоритм | Время, мс | Посещено клеток | Длина пути | +|---|---|---|---|---| +| 10×10 | BFS | 0.081 | 28 | 21 | +| 10×10 | DFS | 0.053 | 22 | 21 | +| 10×10 | A\* | 0.088 | 24 | 21 | +| 10×10 | Dijkstra | 0.672 | 28 | 21 | +| 50×50 | BFS | 1.150 | 493 | 257 | +| 50×50 | DFS | 0.614 | 263 | 257 | +| 50×50 | A\* | 1.220 | 357 | 257 | +| 50×50 | Dijkstra | 1.685 | 493 | 257 | +| 100×100 | BFS | 11.378 | 4783 | 1953 | +| 100×100 | DFS | 5.141 | 2161 | 1953 | +| 100×100 | A\* | 18.019 | 4741 | 1953 | +| 100×100 | Dijkstra | 17.489 | 4783 | 1953 | +| 30×30 пустой | BFS | 1.832 | 784 | 55 | +| 30×30 пустой | DFS | 1.151 | 433 | 379 | +| 30×30 пустой | A\* | 3.748 | 784 | 55 | +| 30×30 пустой | Dijkstra | 3.945 | 784 | 55 | +| 20×20 без выхода | BFS | 0.370 | 162 | — | +| 20×20 без выхода | DFS | 0.373 | 162 | — | +| 20×20 без выхода | A\* | 0.708 | 162 | — | +| 20×20 без выхода | Dijkstra | 0.677 | 162 | — | +| 40×40 взвешенный | BFS | 1.104 | 533 | 321 | +| 40×40 взвешенный | DFS | 0.774 | 361 | 321 | +| 40×40 взвешенный | A\* | 1.516 | 452 | 321 | +| 40×40 взвешенный | Dijkstra | 1.725 | 533 | 321 | + +Графическое представление результатов приведено на рисунке ниже. + +![Сравнение производительности](performance_comparison.png) + +## 4. Анализ результатов + +### 4.1. BFS + +Гарантирует кратчайший путь по числу шагов. Исследует все клетки на расстоянии d перед переходом к d+1, поэтому число посещённых клеток максимально среди всех алгоритмов — на лабиринте 100×100 это 4783 клетки. На пустом лабиринте 30×30 BFS находит оптимальный путь длиной 55 клеток, тогда как DFS даёт 379. Время растёт линейно с размером: от 0.08 мс (10×10) до 11.4 мс (100×100). + +### 4.2. DFS + +Самый быстрый алгоритм по времени: на лабиринте 100×100 — 5.1 мс против 11.4 мс у BFS. Посещает вдвое меньше клеток (2161 против 4783), так как уходит глубоко в одном направлении. Однако на пустом лабиринте DFS даёт путь в 7 раз длиннее оптимального (379 против 55) — алгоритм уходит в угол и обходит весь лабиринт по периметру. Оптимальная длина пути при этом совпадает с BFS только в лабиринтах-лабиринтах (50×50 и 100×100), где единственный путь — сам. + +### 4.3. A\* + +На невзвешенных лабиринтах находит тот же кратчайший путь, что BFS, но исследует на 20–30% меньше клеток благодаря манхэттенской эвристике (на 50×50: 357 против 493). Однако на большом лабиринте 100×100 оказывается медленнее BFS (18 мс против 11 мс) из-за накладных расходов на `heapq`. На взвешенном лабиринте A\* корректно учитывает стоимость клеток, в отличие от BFS. + +### 4.4. Dijkstra + +На невзвешенных лабиринтах полностью совпадает с BFS по посещённым клеткам и длине пути, но медленнее из-за `heapq` вместо `deque`. На взвешенном лабиринте 40×40 корректно минимизирует суммарный вес пути. Практически вытесняется A\* везде, где цель заранее известна. + +### 4.5. Лабиринт «без выхода» + +Все алгоритмы обходят все 162 доступные клетки левой секции и возвращают пустой путь. Реализация корректно обрабатывает этот случай через событие `no_path` для Observer. A\* и Dijkstra работают медленнее (0.7 мс против 0.37 мс у BFS/DFS) из-за накладных расходов `heapq` при полном обходе без нахождения цели. + +## 5. Выводы и рекомендации + +На основе полученных результатов можно сформулировать следующие рекомендации: + +- **Кратчайший путь в невзвешенном лабиринте → BFS.** Гарантированный результат, простая реализация на `deque`, линейное масштабирование. + +- **Максимальная скорость, длина пути не критична → DFS.** В 2 раза быстрее BFS на больших лабиринтах, посещает вдвое меньше клеток. Не использовать на открытых пространствах — путь может быть многократно длиннее оптимального. + +- **Взвешенный граф, цель известна → A\*.** Направленный поиск + учёт весов. На небольших и средних лабиринтах быстрее и экономнее BFS. На очень больших (100×100+) накладные расходы `heapq` могут перевесить выигрыш от эвристики. + +- **Взвешенный граф, нужны все кратчайшие расстояния → Dijkstra.** Оптимален без целевой точки. С целевой точкой предпочтительнее A\*. + +**Итог:** для навигации в лабиринте с одним выходом оптимален BFS (гарантия) или DFS (скорость). A\* предпочтителен при взвешенных клетках. Паттерн Strategy позволяет переключать алгоритмы без изменения остального кода — `solver.set_strategy(AStarStrategy())`. + +