# Отчёт: поиск пути в лабиринте

Паттерны: Builder, Strategy, Observer

```mermaid
classDiagram
class MazeBuilder
class TextFileMazeBuilder
class PathFindingStrategy
class BFSStrategy
class DFSStrategy
class AStarStrategy
class MazeSolver
class Observer
class ConsoleView
MazeBuilder <|-- TextFileMazeBuilder
PathFindingStrategy <|-- BFSStrategy
PathFindingStrategy <|-- DFSStrategy
PathFindingStrategy <|-- AStarStrategy
Observer <|-- ConsoleView
MazeSolver --> PathFindingStrategy
```

| Лабиринт | Стратегия | Время (мс) | Длина пути | Найден |
| --- | --- | --- | --- | --- |
| маленький 10x10 | BFS | 0.14 | 19 | да |
| маленький 10x10 | DFS | 0.08 | 37 | да |
| маленький 10x10 | A | 0.25 | 19 | да |
| средний 50x50 | BFS | 2.88 | 99 | да |
| средний 50x50 | DFS | 1.91 | 283 | да |
| средний 50x50 | A | 2.43 | 99 | да |
| большой 100x100 | BFS | 12.23 | 199 | да |
| большой 100x100 | DFS | 8.78 | 1643 | да |
| большой 100x100 | A | 8.60 | 199 | да |
| пустой 50x50 | BFS | 4.88 | 99 | да |
| пустой 50x50 | DFS | 3.13 | 1275 | да |
| пустой 50x50 | A | 11.55 | 99 | да |
| без выхода 20x20 | BFS | 0.00 | 0 | нет |
| без выхода 20x20 | DFS | 0.00 | 0 | нет |
| без выхода 20x20 | A | 0.00 | 0 | нет |

![График](data/maze_time_comparison.png)

## Выводы

- BFS и A* находят кратчайший путь.
- DFS путь может быть длиннее.
- На пустом лабиринте алгоритмы работают быстрее всего.
- Без выхода все стратегии возвращают пустой путь.
