From 89e9ab282a6959fdd5456acb5b1307b97a10ff91 Mon Sep 17 00:00:00 2001 From: groshevava Date: Sun, 24 May 2026 14:12:45 +0000 Subject: [PATCH 1/4] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?groshevava/docs=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- groshevava/docs/task_2.doc | Bin 0 -> 264192 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 groshevava/docs/task_2.doc diff --git a/groshevava/docs/task_2.doc b/groshevava/docs/task_2.doc new file mode 100644 index 0000000000000000000000000000000000000000..358605b06e77668f096370b9d92d57f070f8ee7d GIT binary patch literal 264192 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

~a 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≫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

nMZc-_Uq=zRvcPLx7`3ui)Wcl(Y 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

iEk?f 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 literal 0 HcmV?d00001 From 5b3441628a4bc35d5b9288bab0a95d22cb97f4a1 Mon Sep 17 00:00:00 2001 From: groshevava Date: Sun, 24 May 2026 14:16:51 +0000 Subject: [PATCH 2/4] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?groshevava/docs/data=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- groshevava/docs/data/builders.py | 75 +++++++++++ groshevava/docs/data/main.py | 201 ++++++++++++++++++++++++++++++ groshevava/docs/data/models.py | 46 +++++++ groshevava/docs/data/observers.py | 60 +++++++++ groshevava/docs/data/solver.py | 61 +++++++++ 5 files changed, 443 insertions(+) create mode 100644 groshevava/docs/data/builders.py create mode 100644 groshevava/docs/data/main.py create mode 100644 groshevava/docs/data/models.py create mode 100644 groshevava/docs/data/observers.py create mode 100644 groshevava/docs/data/solver.py diff --git a/groshevava/docs/data/builders.py b/groshevava/docs/data/builders.py new file mode 100644 index 0000000..3235376 --- /dev/null +++ b/groshevava/docs/data/builders.py @@ -0,0 +1,75 @@ +# maze_solver/builders.py +from abc import ABC, abstractmethod +from models import Cell, Maze + + +class MazeBuilder(ABC): + """Интерфейс строителя лабиринта.""" + @abstractmethod + def buildFromFile(self, filename: str) -> Maze: + """Строит объект Maze из файла.""" + pass + + +class TextFileMazeBuilder(MazeBuilder): + """Строитель для текстового формата: ■ стена, ' ' проход, S старт, E выход.""" + + # Поддерживаемые символы стен + WALL_SYMBOLS = {'#', '■', '█', '▓', '▒', '░'} + + def __init__(self, require_exit: bool = True): + """ + Args: + require_exit: Если False, позволяет создавать лабиринты без выхода + """ + self.require_exit = require_exit + + def buildFromFile(self, filename: str) -> Maze: + with open(filename, 'r', encoding='utf-8') as f: + lines = f.readlines() + + # Убираем символы новой строки и пустые строки в конце файла + cleaned_lines = [line.rstrip('\n') for line in lines if line.strip() != ''] + + if not cleaned_lines: + raise ValueError("Файл лабиринта пуст") + + height = len(cleaned_lines) + width = len(cleaned_lines[0]) + + grid = [] + start_cell = None + exit_cell = None + + for y, line in enumerate(cleaned_lines): + row = [] + if len(line) != width: + raise ValueError( + f"Строка {y} имеет длину {len(line)}, ожидалось {width}. " + f"Лабиринт должен быть прямоугольным." + ) + + for x, char in enumerate(line): + is_wall = char in self.WALL_SYMBOLS + cell = Cell(x, y, is_wall) + + if char == 'S': + cell.isStart = True + start_cell = cell + elif char == 'E': + cell.isExit = True + exit_cell = cell + + row.append(cell) + grid.append(row) + + if not start_cell: + raise ValueError("В лабиринте не найдена стартовая позиция (S)") + + if self.require_exit and not exit_cell: + raise ValueError("В лабиринте не найдена выходная позиция (E)") + + maze = Maze(width, height, grid) + maze.start = start_cell + maze.exit = exit_cell + return maze \ No newline at end of file diff --git a/groshevava/docs/data/main.py b/groshevava/docs/data/main.py new file mode 100644 index 0000000..303c32c --- /dev/null +++ b/groshevava/docs/data/main.py @@ -0,0 +1,201 @@ +from builders import TextFileMazeBuilder +from strategies import BFSStrategy, DFSStrategy, AStarStrategy +from solver import MazeSolver +from observers import ConsoleView +from experiments import run_experiments, save_to_csv +import random + +WALL = '■' +PASSAGE = ' ' +START = 'S' +EXIT = 'E' + + +def generate_maze_prim(size: int, filename: str, label: str): + random.seed(hash(filename) % 10000) + + grid = [[WALL for _ in range(size)] for _ in range(size)] + + start_x, start_y = 1, 1 + grid[start_y][start_x] = PASSAGE + + walls = [] + + for dx, dy in [(0, -1), (0, 1), (-1, 0), (1, 0)]: + wall_x = start_x + dx + wall_y = start_y + dy + cell_x = start_x + 2*dx + cell_y = start_y + 2*dy + + if 0 <= cell_x < size and 0 <= cell_y < size: + if grid[wall_y][wall_x] == WALL: + walls.append((wall_x, wall_y, start_x, start_y, cell_x, cell_y)) + + while walls: + idx = random.randint(0, len(walls) - 1) + wall_x, wall_y, from_x, from_y, to_x, to_y = walls.pop(idx) + + if grid[to_y][to_x] == WALL: + grid[wall_y][wall_x] = PASSAGE + grid[to_y][to_x] = PASSAGE + + for dx, dy in [(0, -1), (0, 1), (-1, 0), (1, 0)]: + new_wall_x = to_x + dx + new_wall_y = to_y + dy + new_cell_x = to_x + 2*dx + new_cell_y = to_y + 2*dy + + if 0 <= new_cell_x < size and 0 <= new_cell_y < size: + if grid[new_wall_y][new_wall_x] == WALL: + walls.append((new_wall_x, new_wall_y, to_x, to_y, new_cell_x, new_cell_y)) + + grid[1][1] = START + grid[size-2][size-2] = EXIT + + with open(filename, 'w', encoding='utf-8') as f: + for row in grid: + f.write(''.join(row) + '\n') + + print(f"✓ {label}: {filename}") + + +def generate_small_maze(filename='small_maze.txt'): + maze = [ + "■■■■■■■■■■", + "■S ■", + "■ ■■■■ ■ ■", + "■ ■ ■ ■ ■", + "■ ■ ■■ ■ ■", + "■ ■ ■ ■", + "■ ■■■■■■ ■", + "■ ■", + "■ ■■■■■■■■", + "■ E■", + "■■■■■■■■■■" + ] + + with open(filename, 'w', encoding='utf-8') as f: + f.write('\n'.join(maze)) + print(f"Маленький лабиринт 10x10: {filename}") + + +def generate_no_exit_maze(filename='no_exit_maze.txt'): + maze = [ + "■■■■■■■■■■", + "■S ■", + "■ ■■■■ ■ ■", + "■ ■ ■ ■ ■", + "■ ■ ■■ ■ ■", + "■ ■ ■ ■", + "■ ■■■■■■ ■", + "■ ■", + "■ ■■■■■■■■", + "■ ■■■■■■", + "■■■■■E■■■■" + ] + + with open(filename, 'w', encoding='utf-8') as f: + f.write('\n'.join(maze)) + print(f"Лабиринт без выхода 10x10: {filename}") + + +def generate_empty_maze(filename='empty_maze.txt'): + size = 10 + maze = [] + maze.append(WALL * size) + + for i in range(size - 2): + if i == 0: + row = WALL + START + PASSAGE * (size - 3) + WALL + elif i == size - 3: + row = WALL + PASSAGE * (size - 3) + EXIT + WALL + else: + row = WALL + PASSAGE * (size - 2) + WALL + maze.append(row) + + maze.append(WALL * size) + + with open(filename, 'w', encoding='utf-8') as f: + f.write('\n'.join(maze)) + print(f"Пустой лабиринт 10x10: {filename}") + + +def main(): + print("=" * 60) + print("ГЕНЕРАЦИЯ ЛАБИРИНТОВ") + print("=" * 60) + + generate_small_maze('small_maze.txt') + generate_maze_prim(50, 'medium_maze.txt', 'Средний лабиринт 50x50') + generate_maze_prim(100, 'large_maze.txt', 'Большой лабиринт 100x100') + generate_no_exit_maze('no_exit_maze.txt') + generate_empty_maze('empty_maze.txt') + + print("\n" + "=" * 60) + print("ДЕМОНСТРАЦИЯ НА МАЛЕНЬКОМ ЛАБИРИНТЕ") + print("=" * 60) + + builder = TextFileMazeBuilder() + maze = builder.buildFromFile('small_maze.txt') + + print(f"Размер: {maze.width}x{maze.height}") + print(f"Старт: ({maze.start.x}, {maze.start.y})") + print(f"Выход: ({maze.exit.x}, {maze.exit.y})") + + view = ConsoleView() + solver = MazeSolver(maze) + solver.attach(view) + + strategies = { + "BFS (поиск в ширину)": BFSStrategy(), + "DFS (поиск в глубину)": DFSStrategy(), + "A*": AStarStrategy() + } + + for name, strat in strategies.items(): + print(f"\n{'─' * 40}") + print(f"Стратегия: {name}") + + solver.setStrategy(strat) + path, stats = solver.solve() + + if path: + print(f"Путь найден! Длина: {len(path)} шагов") + print(f" Время: {stats.time_ms:.3f} мс | Посещено: {stats.visited_count}") + view.render(maze, path=path) + else: + print("Путь не найден!") + + # Эксперименты + print("\n" + "=" * 60) + print("ЭКСПЕРИМЕНТЫ НА ВСЕХ ЛАБИРИНТАХ") + print("=" * 60) + + test_mazes = {} + maze_files = [ + ("Маленький (10x10)", "small_maze.txt"), + ("Средний (50x50)", "medium_maze.txt"), + ("Большой (100x100)", "large_maze.txt"), + ("Без выхода (10x10)", "no_exit_maze.txt"), + ("Пустой (10x10)", "empty_maze.txt") + ] + + for name, filename in maze_files: + try: + test_mazes[name] = builder.buildFromFile(filename) + m = test_mazes[name] + print(f"{name} загружен ({m.width}x{m.height})") + except Exception as e: + print(f"Ошибка {name}: {e}") + + if test_mazes: + print(f"\nЗапуск тестов (по 3 прогона)...") + results = run_experiments(test_mazes, strategies, runs=3) + save_to_csv(results) + + print("ГОТОВО! Графики: python visualize_results.py") + + + +if __name__ == "__main__": + main() diff --git a/groshevava/docs/data/models.py b/groshevava/docs/data/models.py new file mode 100644 index 0000000..0ddb4ff --- /dev/null +++ b/groshevava/docs/data/models.py @@ -0,0 +1,46 @@ +# maze_solver/models.py +from typing import Optional, List + + +class Cell: + """Представляет одну клетку лабиринта.""" + def __init__(self, x: int, y: int, is_wall: bool = False): + self.x = x + self.y = y + self.isWall = is_wall + self.isStart = False + self.isExit = False + + def isPassable(self) -> bool: + """Можно ли пройти через клетку.""" + return not self.isWall + + def __repr__(self): + return f"Cell({self.x}, {self.y}, Wall={self.isWall})" + + +class Maze: + """Хранит полную карту лабиринта.""" + def __init__(self, width: int, height: int, grid: Optional[List[List[Cell]]] = None): + self.width = width + self.height = height + self.grid = grid if grid else [] + self.start: Optional[Cell] = None + self.exit: Optional[Cell] = None + + def getCell(self, x: int, y: int) -> Optional[Cell]: + """Безопасное получение клетки по координатам.""" + if 0 <= x < self.width and 0 <= y < self.height: + return self.grid[y][x] + return None + + def getNeighbors(self, cell: Cell) -> List[Cell]: + """Возвращает список соседних ПРОХОДИМЫХ клеток.""" + neighbors = [] + directions = [(0, -1), (0, 1), (-1, 0), (1, 0)] # up, down, left, right + for dx, dy in directions: + nx, ny = cell.x + dx, cell.y + dy + neighbor = self.getCell(nx, ny) + if neighbor and neighbor.isPassable(): + neighbors.append(neighbor) + return neighbors \ No newline at end of file diff --git a/groshevava/docs/data/observers.py b/groshevava/docs/data/observers.py new file mode 100644 index 0000000..effd9a3 --- /dev/null +++ b/groshevava/docs/data/observers.py @@ -0,0 +1,60 @@ +import os +from abc import ABC, abstractmethod +from typing import Optional, List +from models import Maze, Cell + + +class Observer(ABC): + @abstractmethod + def update(self, event: str, data=None): + pass + + +class ConsoleView(Observer): + WALL_CHAR = '■' + START_CHAR = 'S' + EXIT_CHAR = 'E' + PATH_CHAR = '•' + PLAYER_CHAR = 'P' + PASSAGE_CHAR = ' ' + + def update(self, event: str, data=None): + if event == "search_started": + print(f"\n Запущен поиск с помощью: {data['strategy']}") + elif event == "path_found": + stats = data['stats'] + print(f" Путь найден! {stats}") + elif event == "path_not_found": + stats = data['stats'] + print(f" Путь НЕ найден. {stats}") + elif event == "step": + self.render(data['maze'], data['current'], data.get('path')) + + @staticmethod + def render(maze: Maze, player_pos: Optional[Cell] = None, path: Optional[List[Cell]] = None): + os.system('cls' if os.name == 'nt' else 'clear') + path_set = set(path) if path else set() + + print("┌" + "─" * maze.width + "┐") + + for y in range(maze.height): + row_str = "│" + for x in range(maze.width): + cell = maze.getCell(x, y) + + if player_pos and cell == player_pos: + row_str += ConsoleView.PLAYER_CHAR + elif cell.isStart: + row_str += ConsoleView.START_CHAR + elif cell.isExit: + row_str += ConsoleView.EXIT_CHAR + elif cell in path_set: + row_str += ConsoleView.PATH_CHAR + elif cell.isWall: + row_str += ConsoleView.WALL_CHAR + else: + row_str += ConsoleView.PASSAGE_CHAR + row_str += "│" + print(row_str) + + print("└" + "─" * maze.width + "┘") \ No newline at end of file diff --git a/groshevava/docs/data/solver.py b/groshevava/docs/data/solver.py new file mode 100644 index 0000000..90b7903 --- /dev/null +++ b/groshevava/docs/data/solver.py @@ -0,0 +1,61 @@ +import time +from typing import List, Tuple, Optional +from models import Maze, Cell +from strategies import PathFindingStrategy + + +class SearchStats: + def __init__(self, time_ms: float, visited: int, path_length: int): + self.time_ms = time_ms + self.visited_count = visited + self.path_length = path_length + + def __str__(self): + return (f"Время: {self.time_ms:.4f} мс | " + f"Посещено: {self.visited_count} | " + f"Длина пути: {self.path_length}") + + +class MazeSolver: + def __init__(self, maze: Maze, strategy: Optional[PathFindingStrategy] = None): + self.maze = maze + self.strategy = strategy + self._observers = [] + + def setStrategy(self, strategy: PathFindingStrategy): + self.strategy = strategy + + def attach(self, observer): + self._observers.append(observer) + + def detach(self, observer): + self._observers.remove(observer) + + def _notify(self, event: str, data=None): + for observer in self._observers: + observer.update(event, data) + + def solve(self) -> Tuple[List[Cell], SearchStats]: + if not self.strategy: + raise ValueError("Стратегия поиска не установлена.") + if not self.maze.start or not self.maze.exit: + raise ValueError("В лабиринте не определены старт или выход.") + + self._notify("search_started", {"strategy": type(self.strategy).__name__}) + + start_time = time.perf_counter() + path = self.strategy.findPath(self.maze, self.maze.start, self.maze.exit) + end_time = time.perf_counter() + + elapsed_ms = (end_time - start_time) * 1000 + visited = self.strategy.visited_count + path_len = len(path) + + stats = SearchStats(elapsed_ms, visited, path_len) + + if path: + self._notify("path_found", {"path": path, "stats": stats}) + else: + self._notify("path_not_found", {"stats": stats}) + + return path, stats \ No newline at end of file From 95b152b17c89a3e496d2769160eaac6cf9f43902 Mon Sep 17 00:00:00 2001 From: groshevava Date: Sun, 24 May 2026 14:18:14 +0000 Subject: [PATCH 3/4] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?groshevava/docs/data=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- groshevava/docs/data/empty_maze.txt | 10 ++ groshevava/docs/data/large_maze.txt | 100 +++++++++++ .../docs/data/maze_experiment_results.csv | 16 ++ groshevava/docs/data/strategies.py | 104 +++++++++++ groshevava/docs/data/visualize_results.py | 163 ++++++++++++++++++ 5 files changed, 393 insertions(+) create mode 100644 groshevava/docs/data/empty_maze.txt create mode 100644 groshevava/docs/data/large_maze.txt create mode 100644 groshevava/docs/data/maze_experiment_results.csv create mode 100644 groshevava/docs/data/strategies.py create mode 100644 groshevava/docs/data/visualize_results.py diff --git a/groshevava/docs/data/empty_maze.txt b/groshevava/docs/data/empty_maze.txt new file mode 100644 index 0000000..87c27f3 --- /dev/null +++ b/groshevava/docs/data/empty_maze.txt @@ -0,0 +1,10 @@ +■■■■■■■■■■ +■S ■ +■ ■ +■ ■ +■ ■ +■ ■ +■ ■ +■ ■ +■ E■ +■■■■■■■■■■ \ No newline at end of file diff --git a/groshevava/docs/data/large_maze.txt b/groshevava/docs/data/large_maze.txt new file mode 100644 index 0000000..837792d --- /dev/null +++ b/groshevava/docs/data/large_maze.txt @@ -0,0 +1,100 @@ +■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ +■S ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■ ■■■■■■■■■■■■■■■ ■ ■ ■■■■■ ■■■■■■■ ■■■■■ ■ ■■■ ■ ■■■ ■■■■■ ■■■■■ ■■■ ■■■■■ ■■■■■ ■ ■■■■■ ■ ■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■ ■ ■■■■■ ■ ■ ■ ■■■■■■■ ■■■ ■■■■■ ■■■ ■ ■■■ ■■■■■■■ ■ ■ ■ ■ ■■■ ■ ■■■■■ ■■■ ■ ■ ■■■ ■ ■■■■■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■■■ ■■■■■ ■■■ ■ ■■■ ■■■ ■■■ ■■■ ■ ■■■■■■■■■ ■ ■ ■■■■■ ■■■■■ ■ ■ ■■■■■ ■■■ ■■■■■■■■■■■■■■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■ ■ ■■■■■ ■ ■ ■■■■■■■■■ ■■■ ■■■ ■■■ ■ ■ ■ ■■■ ■ ■■■ ■■■■■■■ ■■■ ■■■■■ ■■■■■■■■■■■ ■■■ ■ ■ ■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■ ■ ■ ■■■■■ ■■■■■■■■■ ■■■■■■■ ■ ■■■■■ ■■■■■■■ ■■■ ■ ■■■■■ ■■■ ■■■ ■ ■■■ ■ ■ ■ ■ ■ ■■■ ■ ■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■■■ ■■■ ■■■■■ ■ ■ ■ ■ ■■■ ■■■■■■■■■ ■ ■ ■■■ ■ ■ ■■■■■ ■ ■ ■■■■■■■■■ ■ ■■■ ■■■ ■■■ ■■■■■■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■■■■■■■■■ ■■■ ■ ■■■■■ ■■■■■■■■■■■ ■ ■ ■■■ ■■■■■ ■■■ ■■■■■ ■ ■ ■ ■ ■■■■■ ■■■ ■ ■■■ ■ ■ ■■■■■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■ ■ ■■■ ■■■ ■■■ ■ ■■■■■ ■■■■■ ■■■ ■■■■■ ■■■ ■ ■■■■■ ■ ■ ■■■ ■■■■■■■ ■ ■ ■ ■ ■ ■■■ ■■■■■ ■■■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■■■ ■ ■ ■■■ ■ ■■■ ■■■ ■ ■■■■■ ■ ■ ■ ■ ■■■ ■ ■ ■ ■■■ ■■■ ■■■ ■■■ ■ ■■■■■■■■■■■■■ ■ ■ ■ ■■■ ■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■■■■■ ■ ■■■ ■ ■ ■■■■■■■ ■■■ ■■■■■ ■■■■■ ■ ■ ■ ■ ■ ■ ■■■■■ ■■■ ■■■■■■■ ■■■■■ ■■■■■■■ ■■■■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■ ■■■ ■ ■■■ ■■■ ■■■ ■■■■■■■ ■ ■■■ ■ ■■■ ■■■■■■■■■■■ ■■■■■■■■■ ■ ■ ■■■ ■■■■■ ■ ■■■ ■ ■■■ ■■■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■ ■■■■■■■■■ ■■■ ■■■ ■■■ ■ ■■■■■ ■■■■■ ■■■■■ ■■■ ■ ■ ■■■ ■ ■■■■■ ■ ■■■■■■■ ■■■ ■ ■ ■■■ ■ ■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■■■ ■■■■■ ■■■ ■ ■■■■■■■ ■■■ ■ ■ ■■■■■ ■■■ ■ ■■■ ■■■ ■■■ ■■■■■■■ ■ ■■■■■■■ ■ ■■■ ■■■■■ ■ ■■■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■■■■■■■ ■■■■■■■ ■ ■ ■ ■■■ ■ ■ ■ ■■■■■■■ ■ ■ ■ ■ ■ ■■■■■ ■ ■ ■ ■ ■■■■■ ■ ■ ■■■■■ ■■■ ■■■■■■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■■■ ■ ■ ■ ■■■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■■■ ■■■ ■ ■ ■■■■■■■ ■ ■■■■■■■■■■■ ■ ■■■■■■■ ■ ■ ■■■■■■■ ■ ■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■■■■■ ■ ■ ■■■ ■ ■ ■■■ ■■■■■■■■■■■■■■■ ■■■■■■■■■ ■ ■■■■■ ■ ■ ■ ■■■■■■■■■■■■■ ■■■ ■■■ ■■■ ■ ■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■■■ ■ ■ ■■■■■■■■■ ■■■■■■■ ■■■■■■■■■ ■■■ ■■■ ■■■ ■■■■■ ■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■ ■ ■ ■ ■ ■ ■■■ ■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■■■■■ ■ ■■■■■■■ ■■■ ■■■ ■ ■ ■■■■■■■ ■ ■ ■■■■■■■■■■■■■■■ ■ ■ ■ ■■■■■ ■■■ ■■■■■■■ ■■■■■■■■■ ■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■■■ ■■■ ■ ■■■ ■ ■ ■ ■ ■■■■■ ■ ■ ■■■ ■■■ ■■■ ■■■ ■ ■ ■■■■■ ■ ■ ■ ■■■■■■■■■ ■ ■■■■■■■■■ ■ ■ ■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■ ■ ■ ■■■■■ ■■■ ■ ■ ■■■ ■ ■ ■■■■■ ■■■ ■ ■■■■■■■■■■■ ■■■■■ ■■■ ■ ■ ■■■■■■■■■ ■ ■ ■■■■■ ■ ■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■■■■■■■ ■■■ ■ ■ ■ ■ ■ ■■■ ■■■ ■ ■ ■■■ ■■■ ■ ■ ■■■■■■■■■■■ ■■■ ■■■■■ ■ ■■■ ■ ■ ■■■ ■ ■■■ ■■■■■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■■■ ■■■ ■ ■■■ ■■■■■ ■ ■ ■ ■■■ ■■■■■■■■■■■ ■ ■ ■■■■■■■■■■■■■■■ ■■■ ■■■■■ ■■■■■■■■■■■ ■■■■■ ■ ■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■■■ ■ ■ ■ ■■■ ■■■■■ ■■■■■ ■ ■ ■ ■■■ ■■■ ■ ■■■ ■■■ ■■■ ■ ■■■■■ ■■■ ■■■ ■■■ ■ ■ ■■■ ■■■■■■■■■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■■■ ■ ■ ■■■ ■ ■■■ ■ ■■■ ■■■ ■■■■■■■■■■■ ■ ■■■■■■■■■ ■■■ ■■■ ■■■■■ ■ ■■■■■■■ ■■■ ■ ■■■■■■■■■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■ ■■■■■■■■■ ■ ■■■ ■ ■■■■■■■ ■■■ ■■■ ■■■ ■ ■■■■■ ■■■ ■■■■■■■ ■■■■■■■■■ ■ ■ ■■■ ■■■■■■■■■ ■■■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■■■■■ ■■■ ■ ■ ■■■ ■■■ ■■■ ■■■ ■ ■■■ ■■■ ■■■ ■ ■ ■■■ ■ ■ ■■■ ■ ■ ■ ■ ■ ■ ■■■■■■■■■ ■ ■ ■■■■■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■ ■ ■■■ ■ ■ ■ ■■■ ■ ■ ■■■ ■■■ ■ ■ ■■■■■ ■■■ ■ ■ ■ ■■■■■■■■■■■ ■ ■ ■ ■ ■■■ ■ ■■■■■ ■■■ ■ ■ ■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■■■■■■■■■■■ ■ ■ ■■■ ■ ■■■ ■■■■■ ■■■■■■■ ■■■■■ ■ ■■■■■ ■ ■ ■ ■ ■■■ ■■■■■■■■■■■■■■■■■ ■■■■■ ■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■■■■■■■ ■ ■■■ ■ ■■■ ■ ■ ■ ■■■ ■■■■■■■■■ ■ ■■■■■■■ ■■■■■■■ ■■■ ■ ■■■■■ ■ ■■■■■ ■■■ ■■■■■ ■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■■■■■■■ ■■■ ■ ■ ■■■■■ ■ ■■■ ■■■■■■■ ■ ■■■■■ ■■■■■ ■ ■ ■ ■■■■■■■■■■■ ■ ■■■■■ ■■■■■ ■■■■■ ■■■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■ ■■■ ■■■ ■■■■■ ■■■ ■■■ ■ ■■■ ■■■ ■■■ ■ ■ ■■■ ■■■ ■ ■ ■■■■■ ■■■■■■■ ■ ■ ■ ■ ■■■■■ ■■■■■ ■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■■■■■ ■■■■■ ■ ■■■■■ ■■■ ■ ■■■ ■■■ ■ ■■■ ■ ■ ■■■■■ ■ ■ ■ ■ ■■■ ■ ■ ■■■ ■■■ ■■■■■■■ ■ ■■■■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■■■ ■ ■■■ ■ ■ ■■■■■■■■■■■ ■ ■ ■ ■■■ ■ ■■■ ■■■ ■■■ ■ ■ ■■■■■■■ ■ ■■■ ■■■ ■■■■■ ■■■ ■ ■■■ ■■■ ■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■■■ ■■■■■ ■■■ ■ ■■■■■■■ ■■■ ■ ■ ■■■■■ ■ ■ ■ ■ ■ ■ ■ ■■■ ■ ■ ■ ■ ■ ■ ■■■ ■■■ ■■■■■■■■■ ■ ■ ■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■ ■ ■■■ ■■■ ■ ■ ■ ■■■ ■ ■■■ ■■■ ■ ■ ■ ■ ■■■■■ ■ ■■■ ■■■■■ ■ ■■■■■■■■■■■ ■ ■ ■ ■ ■ ■■■■■■■■■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■ ■■■■■ ■ ■ ■■■■■■■ ■ ■■■■■■■■■■■■■■■■■ ■ ■■■ ■ ■ ■ ■■■ ■ ■ ■■■■■ ■■■ ■■■■■■■ ■ ■ ■ ■■■ ■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■■■ ■ ■■■ ■ ■ ■■■■■ ■■■■■■■ ■ ■■■ ■ ■ ■■■ ■■■ ■■■ ■ ■ ■ ■■■ ■■■ ■■■■■ ■ ■■■■■■■■■■■■■■■ ■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■ ■■■ ■■■ ■ ■ ■■■ ■■■ ■ ■ ■■■ ■■■ ■■■ ■ ■■■■■■■ ■■■■■ ■ ■■■■■ ■ ■ ■■■ ■ ■■■ ■ ■■■ ■■■■■ ■■■■■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■■■ ■■■■■■■ ■ ■ ■■■ ■■■ ■ ■ ■ ■ ■ ■ ■ ■ ■■■■■■■ ■■■ ■ ■ ■ ■ ■ ■■■ ■ ■ ■ ■■■■■ ■ ■ ■■■ ■■■ ■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■■■■■ ■■■■■ ■■■■■ ■ ■■■ ■■■ ■ ■ ■■■■■ ■ ■■■ ■■■ ■■■■■■■ ■■■ ■ ■■■ ■ ■ ■ ■ ■■■ ■■■■■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■■■ ■■■■■ ■ ■■■ ■■■ ■ ■■■ ■ ■ ■■■■■■■■■ ■ ■ ■■■■■ ■ ■ ■ ■■■ ■■■■■■■■■ ■ ■ ■ ■■■ ■ ■■■ ■■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■■■ ■■■ ■ ■■■ ■■■ ■ ■■■ ■ ■ ■ ■ ■■■■■ ■■■ ■■■■■ ■ ■ ■ ■ ■ ■ ■ ■■■ ■ ■ ■ ■■■ ■ ■ ■■■ ■■■■■ ■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■ ■ ■■■ ■■■ ■ ■■■■■■■■■ ■■■ ■ ■■■■■■■■■ ■■■■■ ■ ■■■ ■ ■■■ ■ ■■■■■ ■■■■■ ■ ■ ■■■■■ ■ ■■■ ■ ■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■■■■■■■ ■ ■ ■■■ ■ ■ ■ ■■■ ■ ■■■ ■■■■■■■ ■ ■ ■■■ ■ ■ ■ ■■■■■ ■ ■■■■■ ■■■■■■■ ■■■■■ ■■■■■■■ ■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■ ■■■ ■■■ ■■■ ■■■■■■■■■ ■■■■■ ■■■ ■■■■■ ■ ■■■ ■ ■ ■ ■■■ ■■■ ■ ■■■■■■■ ■■■ ■■■■■ ■■■■■■■ ■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■■■ ■ ■ ■ ■ ■■■ ■ ■■■■■ ■ ■ ■ ■ ■■■■■■■ ■ ■■■■■■■ ■■■■■■■ ■ ■ ■ ■ ■ ■■■ ■ ■ ■ ■■■■■ ■■■ ■ ■ ■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■■■ ■■■ ■ ■ ■ ■■■■■ ■■■ ■ ■ ■ ■ ■ ■ ■ ■ ■■■ ■■■ ■■■■■ ■ ■■■■■■■ ■■■ ■ ■■■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■■■ ■■■ ■■■ ■■■ ■■■■■ ■ ■ ■ ■■■■■ ■■■ ■■■■■ ■ ■■■■■ ■■■■■■■ ■■■ ■■■■■■■ ■ ■ ■■■ ■■■ ■■■ ■■■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■■■ ■ ■■■ ■■■ ■ ■■■ ■ ■■■ ■■■■■ ■■■■■ ■■■■■ ■■■■■ ■■■ ■■■ ■■■ ■■■■■ ■ ■ ■■■ ■ ■ ■ ■■■■■ ■ ■■E +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ diff --git a/groshevava/docs/data/maze_experiment_results.csv b/groshevava/docs/data/maze_experiment_results.csv new file mode 100644 index 0000000..3fae22f --- /dev/null +++ b/groshevava/docs/data/maze_experiment_results.csv @@ -0,0 +1,16 @@ +maze,strategy,time_ms,visited,path_length +Маленький (10x10),BFS (поиск в ширину),0.1492,44.0,16.0 +Маленький (10x10),DFS (поиск в глубину),0.095,30.0,30.0 +Маленький (10x10),A* (A-star),0.1717,39.0,16.0 +Средний (50x50),BFS (поиск в ширину),3.6384,1243.0,97.0 +Средний (50x50),DFS (поиск в глубину),1.9872,614.0,97.0 +Средний (50x50),A* (A-star),2.048,444.0,97.0 +Большой (100x100),BFS (поиск в ширину),16.6951,4997.0,213.0 +Большой (100x100),DFS (поиск в глубину),10.7515,3610.0,213.0 +Большой (100x100),A* (A-star),13.2112,2836.0,213.0 +Без выхода (10x10),BFS (поиск в ширину),0,0,0 +Без выхода (10x10),DFS (поиск в глубину),0,0,0 +Без выхода (10x10),A* (A-star),0,0,0 +Пустой (10x10),BFS (поиск в ширину),0.1921,64.0,15.0 +Пустой (10x10),DFS (поиск в глубину),0.1362,43.0,29.0 +Пустой (10x10),A* (A-star),0.2633,64.0,15.0 diff --git a/groshevava/docs/data/strategies.py b/groshevava/docs/data/strategies.py new file mode 100644 index 0000000..4120d27 --- /dev/null +++ b/groshevava/docs/data/strategies.py @@ -0,0 +1,104 @@ +from abc import ABC, abstractmethod +from collections import deque +import heapq +from typing import List, Dict, Optional +from models import Cell, Maze + + +class PathFindingStrategy(ABC): + def __init__(self): + self.visited_count = 0 + + @abstractmethod + def findPath(self, maze: Maze, start: Cell, exit: Cell) -> List[Cell]: + pass + + def _reconstruct_path(self, parent: Dict[Cell, Optional[Cell]], current: Cell) -> List[Cell]: + path = [] + while current: + path.append(current) + current = parent.get(current) + return path[::-1] + + +class BFSStrategy(PathFindingStrategy): + def findPath(self, maze: Maze, start: Cell, exit: Cell) -> List[Cell]: + self.visited_count = 0 + queue = deque([start]) + visited = {start} + parent = {start: None} + + while queue: + current = queue.popleft() + self.visited_count += 1 + + if current == exit: + return self._reconstruct_path(parent, current) + + for neighbor in maze.getNeighbors(current): + if neighbor not in visited: + visited.add(neighbor) + parent[neighbor] = current + queue.append(neighbor) + return [] + + +class DFSStrategy(PathFindingStrategy): + def findPath(self, maze: Maze, start: Cell, exit: Cell) -> List[Cell]: + self.visited_count = 0 + stack = [start] + visited = {start} + parent = {start: None} + + while stack: + current = stack.pop() + self.visited_count += 1 + + if current == exit: + return self._reconstruct_path(parent, current) + + for neighbor in maze.getNeighbors(current): + if neighbor not in visited: + visited.add(neighbor) + parent[neighbor] = current + stack.append(neighbor) + return [] + + +class AStarStrategy(PathFindingStrategy): + + @staticmethod + def _heuristic(a: Cell, b: Cell) -> int: + return abs(a.x - b.x) + abs(a.y - b.y) + + def findPath(self, maze: Maze, start: Cell, exit: Cell) -> List[Cell]: + self.visited_count = 0 + counter = 0 + open_set = [] + heapq.heappush(open_set, (0, counter, start)) + counter += 1 + + came_from = {start: None} + g_score = {start: 0} + visited = set() + + while open_set: + _, _, current = heapq.heappop(open_set) + self.visited_count += 1 + + if current == exit: + return self._reconstruct_path(came_from, current) + + if current in visited: + continue + visited.add(current) + + for neighbor in maze.getNeighbors(current): + tentative_g_score = g_score[current] + 1 + if neighbor not in g_score or tentative_g_score < g_score[neighbor]: + came_from[neighbor] = current + g_score[neighbor] = tentative_g_score + f_score = tentative_g_score + self._heuristic(neighbor, exit) + heapq.heappush(open_set, (f_score, counter, neighbor)) + counter += 1 + return [] \ No newline at end of file diff --git a/groshevava/docs/data/visualize_results.py b/groshevava/docs/data/visualize_results.py new file mode 100644 index 0000000..1cca2df --- /dev/null +++ b/groshevava/docs/data/visualize_results.py @@ -0,0 +1,163 @@ +import matplotlib.pyplot as plt +import numpy as np +import csv +from typing import Dict, List +import os + +plt.style.use('seaborn-v0_8-darkgrid') + +def load_results(filename: str = 'maze_experiment_results.csv') -> List[Dict]: + if not os.path.exists(filename): + print(f"Файл {filename} не найден! Сначала запустите main.py") + return [] + + with open(filename, 'r', encoding='utf-8') as f: + reader = csv.DictReader(f) + results = [] + for row in reader: + row['time_ms'] = float(row['time_ms']) + row['visited'] = int(float(row['visited'])) + row['path_length'] = int(float(row['path_length'])) + results.append(row) + return results + +def organize_data(results: List[Dict]) -> Dict: + data = {} + for row in results: + maze = row['maze'] + strategy = row['strategy'].split('(')[0].strip() + + if maze not in data: + data[maze] = {} + if strategy not in data[maze]: + data[maze][strategy] = {'time_ms': [], 'visited': [], 'path_length': []} + + data[maze][strategy]['time_ms'].append(row['time_ms']) + data[maze][strategy]['visited'].append(row['visited']) + data[maze][strategy]['path_length'].append(row['path_length']) + return data + +def create_main_chart(data: Dict, save_dir: str = 'charts'): + + if not os.path.exists(save_dir): + os.makedirs(save_dir) + + maze_names = list(data.keys()) + strategies = ['BFS', 'DFS', 'A*'] + colors = {'BFS': '#3498db', 'DFS': '#e74c3c', 'A*': '#2ecc71'} + + fig, axes = plt.subplots(1, 3, figsize=(16, 6)) + fig.suptitle('Сравнение алгоритмов поиска пути', fontsize=16, fontweight='bold') + + x = np.arange(len(maze_names)) + width = 0.25 + + # График 1: Время + for i, strat in enumerate(strategies): + values = [] + for maze in maze_names: + if strat in data[maze] and data[maze][strat]['time_ms']: + values.append(np.mean(data[maze][strat]['time_ms'])) + else: + values.append(0) + + bars = axes[0].bar(x + i * width, values, width, label=strat, + color=colors[strat], edgecolor='black', linewidth=0.5) + + for bar, val in zip(bars, values): + if val > 0: + axes[0].text(bar.get_x() + bar.get_width()/2., bar.get_height(), + f'{val:.1f}', ha='center', va='bottom', fontsize=7) + + axes[0].set_title('Время выполнения (мс)', fontweight='bold') + axes[0].set_xticks(x + width) + axes[0].set_xticklabels([n.split('(')[0].strip() for n in maze_names], rotation=15, fontsize=8) + axes[0].legend(fontsize=8) + + # График 2: Посещённые клетки + for i, strat in enumerate(strategies): + values = [] + for maze in maze_names: + if strat in data[maze] and data[maze][strat]['visited']: + values.append(np.mean(data[maze][strat]['visited'])) + else: + values.append(0) + + bars = axes[1].bar(x + i * width, values, width, label=strat, + color=colors[strat], edgecolor='black', linewidth=0.5) + + for bar, val in zip(bars, values): + if val > 0: + axes[1].text(bar.get_x() + bar.get_width()/2., bar.get_height(), + f'{int(val)}', ha='center', va='bottom', fontsize=7) + + axes[1].set_title('Посещённые клетки', fontweight='bold') + axes[1].set_xticks(x + width) + axes[1].set_xticklabels([n.split('(')[0].strip() for n in maze_names], rotation=15, fontsize=8) + + # График 3: Длина пути + for i, strat in enumerate(strategies): + values = [] + for maze in maze_names: + if strat in data[maze] and data[maze][strat]['path_length']: + values.append(np.mean(data[maze][strat]['path_length'])) + else: + values.append(0) + + bars = axes[2].bar(x + i * width, values, width, label=strat, + color=colors[strat], edgecolor='black', linewidth=0.5) + + for bar, val in zip(bars, values): + if val > 0: + axes[2].text(bar.get_x() + bar.get_width()/2., bar.get_height(), + f'{int(val)}', ha='center', va='bottom', fontsize=7) + + axes[2].set_title('Длина пути (шагов)', fontweight='bold') + axes[2].set_xticks(x + width) + axes[2].set_xticklabels([n.split('(')[0].strip() for n in maze_names], rotation=15, fontsize=8) + + plt.tight_layout() + filepath = os.path.join(save_dir, 'comparison_all_metrics.png') + plt.savefig(filepath, dpi=150, bbox_inches='tight') + plt.close() + print(f" График сохранён: {filepath}") + +def print_table(data: Dict): + print("\n" + "=" * 80) + print("РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ") + print("=" * 80) + + for maze_name, strategies in data.items(): + print(f"\n{maze_name}") + print("-" * 60) + print(f"{'Алгоритм':<10} {'Время(мс)':<12} {'Посещено':<12} {'Длина пути':<12}") + print("-" * 46) + + for strat in ['BFS', 'DFS', 'A*']: + if strat in strategies and strategies[strat]['time_ms']: + t = np.mean(strategies[strat]['time_ms']) + v = np.mean(strategies[strat]['visited']) + p = np.mean(strategies[strat]['path_length']) + print(f"{strat:<10} {t:<12.2f} {int(v):<12} {int(p):<12}") + +def main(): + print("=" * 60) + print("ВИЗУАЛИЗАЦИЯ РЕЗУЛЬТАТОВ") + print("=" * 60) + + results = load_results('maze_experiment_results.csv') + + if not results: + print("Нет данных. Запустите сначала main.py") + return + + data = organize_data(results) + + print_table(data) + + # Один график + print("\nСоздание графика...") + create_main_chart(data) + +if __name__ == "__main__": + main() \ No newline at end of file From 7164968879fe7404413cc13f57ae2d393a027083 Mon Sep 17 00:00:00 2001 From: groshevava Date: Sun, 24 May 2026 14:19:05 +0000 Subject: [PATCH 4/4] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?groshevava/docs/data=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- groshevava/docs/data/medium_maze.txt | 50 +++++++++++++++++++++++ groshevava/docs/data/no_exit_maze.txt | 11 +++++ groshevava/docs/data/small_maze.txt | 11 +++++ groshevava/docs/data/unreachable_maze.txt | 11 +++++ 4 files changed, 83 insertions(+) create mode 100644 groshevava/docs/data/medium_maze.txt create mode 100644 groshevava/docs/data/no_exit_maze.txt create mode 100644 groshevava/docs/data/small_maze.txt create mode 100644 groshevava/docs/data/unreachable_maze.txt diff --git a/groshevava/docs/data/medium_maze.txt b/groshevava/docs/data/medium_maze.txt new file mode 100644 index 0000000..95de1ec --- /dev/null +++ b/groshevava/docs/data/medium_maze.txt @@ -0,0 +1,50 @@ +■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ +■S■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■■■■■ ■ ■ ■ ■ ■ ■ ■ ■ ■■■ ■■■ ■■■■■■■■■■■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■■■ ■■■ ■■■■■ ■■■ ■■■■■ ■■■ ■ ■■■■■ ■■■■■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■■■ ■■■■■ ■■■ ■ ■■■ ■ ■ ■■■■■ ■ ■ ■ ■■■ ■■■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■■■ ■■■■■■■ ■ ■■■ ■■■ ■ ■■■ ■■■ ■ ■■■ ■■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■■■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■■■ ■■■■■ ■■■ ■■■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■ ■■■■■ ■ ■■■■■■■ ■ ■ ■ ■ ■ ■ ■■■ ■■■ ■■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■■■ ■■■■■■■ ■ ■■■ ■ ■ ■ ■ ■ ■■■ ■■■■■ ■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■ ■ ■ ■ ■ ■■■■■■■■■ ■■■ ■ ■■■■■ ■ ■■■■■ ■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■■■■■ ■■■■■■■ ■■■ ■ ■■■ ■■■■■ ■■■■■ ■ ■ ■■■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■ ■■■ ■■■■■ ■■■ ■ ■■■ ■■■ ■■■■■■■ ■■■■■■■ ■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■ ■■■ ■■■■■■■■■ ■■■ ■ ■■■ ■ ■■■■■■■ ■ ■ ■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■■■■■ ■ ■■■ ■ ■ ■ ■■■■■■■■■■■■■ ■ ■ ■ ■■■■■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■■■ ■■■ ■ ■■■■■ ■ ■ ■ ■ ■ ■■■■■ ■■■ ■■■ ■■■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■■■ ■ ■ ■ ■■■ ■ ■■■ ■■■■■ ■■■■■ ■■■ ■ ■ ■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■ ■ ■■■ ■ ■ ■ ■■■■■ ■■■ ■ ■ ■ ■■■■■ ■■■■■ ■■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■ ■■■■■■■ ■ ■ ■ ■■■■■ ■ ■■■ ■ ■■■ ■■■ ■ ■■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■ ■ ■ ■ ■■■■■ ■■■ ■ ■ ■■■ ■ ■ ■ ■ ■ ■■■■■ ■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■ ■■■ ■■■ ■ ■■■ ■ ■ ■■■■■ ■■■ ■ ■ ■■■■■ ■ ■ ■■■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■■■■■ ■■■ ■ ■ ■■■ ■■■■■ ■■■■■ ■ ■■■ ■■■■■ ■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■ ■■■■■■■ ■ ■■■ ■ ■ ■■■■■■■■■ ■■■■■ ■■■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■■■■■ ■■■ ■ ■■■■■ ■■■■■ ■■■■■ ■ ■ ■■■ ■■■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■■■ ■ ■■■ ■ ■ ■ ■ ■ ■ ■■■■■ ■■■ ■■■ ■ ■■■■■■■ ■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■■■ ■ ■■■■■■■ ■ ■■■■■■■■■ ■■■ ■■■■■ ■ ■ ■ ■■■ +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ +■■■ ■■■ ■ ■■■■■■■ ■ ■ ■■■ ■ ■■■ ■■■ ■ ■■■■■ ■■■ E +■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ diff --git a/groshevava/docs/data/no_exit_maze.txt b/groshevava/docs/data/no_exit_maze.txt new file mode 100644 index 0000000..31658c0 --- /dev/null +++ b/groshevava/docs/data/no_exit_maze.txt @@ -0,0 +1,11 @@ +■■■■■■■■■■ +■S ■ +■ ■■■■ ■ ■ +■ ■ ■ ■ ■ +■ ■ ■■ ■ ■ +■ ■ ■ ■ +■ ■■■■■■ ■ +■ ■ +■ ■■■■■■■■ +■ ■■■■■■ +■■■■■E■■■■ \ No newline at end of file diff --git a/groshevava/docs/data/small_maze.txt b/groshevava/docs/data/small_maze.txt new file mode 100644 index 0000000..5d0835f --- /dev/null +++ b/groshevava/docs/data/small_maze.txt @@ -0,0 +1,11 @@ +■■■■■■■■■■ +■S ■ +■ ■■■■ ■ ■ +■ ■ ■ ■ ■ +■ ■ ■■ ■ ■ +■ ■ ■ ■ +■ ■■■■■■ ■ +■ ■ +■ ■■■■■■■■ +■ E■ +■■■■■■■■■■ \ No newline at end of file diff --git a/groshevava/docs/data/unreachable_maze.txt b/groshevava/docs/data/unreachable_maze.txt new file mode 100644 index 0000000..bc0c7ce --- /dev/null +++ b/groshevava/docs/data/unreachable_maze.txt @@ -0,0 +1,11 @@ +########## +#S # +# ##### # +# # # # +# # # # ## +# # # # +##### # ## +# # # +# ##### # +# ###### +#####E#### \ No newline at end of file