diff --git a/tseremonnikovaaa/lab2/docs/data/main2.py b/tseremonnikovaaa/lab2/docs/data/main2.py index 563c3ef2..e467ebae 100644 --- a/tseremonnikovaaa/lab2/docs/data/main2.py +++ b/tseremonnikovaaa/lab2/docs/data/main2.py @@ -475,4 +475,80 @@ def create_test_mazes(): maze5.start = cell if is_exit: maze5.exit = cell - save_maze_to_file(maze5, "mazes/no_exit.txt") \ No newline at end of file + save_maze_to_file(maze5, "mazes/no_exit.txt") + +def print_analysis(): + """Вывод анализа эффективности алгоритмов""" + print(" АНАЛИЗ ЭФФЕКТИВНОСТИ АЛГОРИТМОВ ПОИСКА ПУТИ") + + print(""" + BFS (Поиск в ширину): + - Всегда находит КРАТЧАЙШИЙ путь + - Сложность O(V+E) + - Много памяти (очередь) + - Лучший выбор для поиска минимального пути + + DFS (Поиск в глубину): + - НЕ гарантирует кратчайший путь + - Сложность O(V+E) + - Мало памяти + - Быстрый, но путь может быть очень длинным + - Хорош для проверки существования пути + + A* (Алгоритм с эвристикой): + - Находит КРАТЧАЙШИЙ путь (при допустимой эвристике) + - Эвристика: манхэттенское расстояние |x1-x2| + |y1-y2| + - Быстрее BFS благодаря целенаправленному поиску + - Лучший выбор для больших запутанных лабиринтов + """) + + print(""" + ВЛИЯНИЕ ТИПА ЛАБИРИНТА: + + Простой лабиринт (tiny.txt): + - Все алгоритмы работают быстро + - Разница в скорости незначительна + - BFS и A* находят оптимальный путь + - DFS может найти более длинный путь + + Средний лабиринт (medium.txt): + - A* начинает показывать преимущество + - BFS исследует больше клеток + - DFS может заблудиться в тупиках + + Большой лабиринт (large.txt): + - A* значительно быстрее BFS + - DFS сильно проигрывает на запутанных лабиринтах + + Пустой лабиринт (empty.txt): + - A* значительно быстрее BFS + - DFS быстро уходит вглубь, но путь неоптимальный + + Лабиринт без выхода (no_exit.txt): + - Все алгоритмы обходят все достижимые клетки + - Возвращают пустой путь + """) + + print(""" + ВЫВОДЫ ПО ПАТТЕРНАМ: + + BUILDER: + - Скрывает сложность парсинга файлов + - Легко добавить новый формат + - Код загрузки не смешивается с логикой лабиринта + + STRATEGY: + - Алгоритмы можно менять во время выполнения + - Легко добавить новый алгоритм + - Код не дублируется + + OBSERVER: + - Отделяет визуализацию от логики + - Легко добавить GUI или логирование + - Наблюдателей можно добавлять динамически + + COMMAND: + - Позволяет выполнять и отменять действия + - Удобно для пошагового управления + - История команд позволяет сохранять/загружать состояние + """) \ No newline at end of file