From 7e0a54a81752f70593c77f3bd7c9c456b4198626 Mon Sep 17 00:00:00 2001 From: kalinovskiymi Date: Sun, 24 May 2026 22:17:33 +0000 Subject: [PATCH] =?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?kalinovskiymi/docs=5F2/data=5F2=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docs_2/data_2/comparative_results.png | Bin 0 -> 63399 bytes .../docs_2/data_2/mazes_visualization.png | Bin 0 -> 98420 bytes kalinovskiymi/docs_2/data_2/results.csv | 16 + kalinovskiymi/docs_2/data_2/task_2_2.py | 483 ++++++++++++++++++ 4 files changed, 499 insertions(+) create mode 100644 kalinovskiymi/docs_2/data_2/comparative_results.png create mode 100644 kalinovskiymi/docs_2/data_2/mazes_visualization.png create mode 100644 kalinovskiymi/docs_2/data_2/results.csv create mode 100644 kalinovskiymi/docs_2/data_2/task_2_2.py diff --git a/kalinovskiymi/docs_2/data_2/comparative_results.png b/kalinovskiymi/docs_2/data_2/comparative_results.png new file mode 100644 index 0000000000000000000000000000000000000000..c6a3592a6121a6b62fb782789451403656611cc8 GIT binary patch literal 63399 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

$c%kH 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%0D6FkyHLOwk0 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 literal 0 HcmV?d00001 diff --git a/kalinovskiymi/docs_2/data_2/mazes_visualization.png b/kalinovskiymi/docs_2/data_2/mazes_visualization.png new file mode 100644 index 0000000000000000000000000000000000000000..ea95abe61e267885ea573012ee453ab43ea52154 GIT binary patch literal 98420 zcmdSB2UwHox-J|mmJw7?P)b0Spwf#V9UJJ-M5Q;Sh!Fx(0zznx1*IcO=qN}SrAZ4l zV4;c_AwnRbC>=tGv;+u{^L}Aw)||a(t^eO=uf5Mcxh^l@%WIPFeV=ka_j5mae92gU z&#uF}U@+L8ix7d^{R29(L@EdEr*Ygo}^DT5sQnU15(~xOv_fpU8MM zGxd6kIUkU5{UY4VQ`l~>a2@YyR&*@l2zXoQVU>ia{_WSdBggh`=3La(+5uOhz)TmdT=S)cj&Ps7O^-g7pg|b$t<})U5S=3lp zAu||dxk&Zs#>Ph9dRD)j-E4$~p@#pAA+wroqCQhceNx)fVnY_PxtR3z!DmH5qrMc%fC_$%=IOv(akHOKq1q3!YbLTHx$9;; z*$hu&Iz4FIw=2*7q}}=)#)MSeUH)-&wK;UPxma$?o0D_-_H+4m0e;DCwpe$j+*+qx zj;j{cYI1d+0AEVBWHB4S27IFq;fu9mwHQ6VRc&^KpKvyVE8U~Gm33yl4#Q>B>jc!| z6BKP3{{z1M9sZFa5-<{vaB*?@<|e+Ipia%VrkvIGQ|^aZ(n>IR_rPY2f%uSF{?OUD zW*tUxY|euR59VHm(Q5i>9{xY%Z0Ug{ia9-FT!+0pS?G^FUdtF$tq%yCc7oS<91a)uvs|X{w*T>q@5kf0Pupf+N@~55-Wx)5b1-19 z64+@2i-rCbr&=xaFGuQH^r`IU;Yc}eOU#}2%J1o6lz=SSiCT0Dr z+NznF!-ohL>VNF6zun>l*+5$;unjuarhm$O^8Ic(L!Qv34{b-TkBo$_kB4F{>gJwJ z#;#Aqc76|sYcob+dg9b6F)BG8C8qA9H{O11HF)U*+_-*Ds@}V09?o8BZu=}fYh_7u zSRZxxsM35)|JRpc2k#6E4q7(METz^jr#6}udOsVI)LCv7BV^tgdfX`E8PGPA

w< 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 0 else 0 + maze = Maze(width, height) + for y, line in enumerate(lines): + for x, char in enumerate(line): + if char == '#': + maze.grid[x][y] = Cell(x, y, True) + else: + cell = Cell(x, y, False) + if char == 'S': + cell.is_start = True + maze.start = cell + elif char == 'E': + cell.is_exit = True + maze.exit = cell + maze.grid[x][y] = cell + if not maze.start or not maze.exit: + raise ValueError("Лабиринт должен содержать старт (S) и выход (E)") + return maze + +class PathFindingStrategy(ABC): + @abstractmethod + def find_path(self, maze, start, exit_cell): + pass + +class BFSPathFinding(PathFindingStrategy): + def find_path(self, maze, start, exit_cell): + queue = deque([start]) + visited = {start: None} + visited_count = 0 + while queue: + current = queue.popleft() + visited_count += 1 + if exit_cell is not None and current == exit_cell: + path = [] + while current: + path.append(current) + current = visited[current] + return path[::-1], visited_count + for neighbor in maze.get_neighbors(current): + if neighbor not in visited: + visited[neighbor] = current + queue.append(neighbor) + return [], visited_count + +class DFSPathFinding(PathFindingStrategy): + def find_path(self, maze, start, exit_cell): + stack = [start] + visited = {start: None} + visited_count = 0 + while stack: + current = stack.pop() + visited_count += 1 + if exit_cell is not None and current == exit_cell: + path = [] + while current: + path.append(current) + current = visited[current] + return path[::-1], visited_count + for neighbor in maze.get_neighbors(current): + if neighbor not in visited: + visited[neighbor] = current + stack.append(neighbor) + return [], visited_count + +class AStarPathFinding(PathFindingStrategy): + def heuristic(self, a, b): + if b is None: + return 0 + return abs(a.x - b.x) + abs(a.y - b.y) + + def find_path(self, maze, start, exit_cell): + open_set = [(0, 0, start, None)] + heapq.heapify(open_set) + g_score = {start: 0} + came_from = {} + visited_count = 0 + while open_set: + _, _, current, parent = heapq.heappop(open_set) + if current in came_from: + continue + visited_count += 1 + came_from[current] = parent + if exit_cell is not None and current == exit_cell: + path = [] + while current: + path.append(current) + current = came_from[current] + return path[::-1], visited_count + for neighbor in maze.get_neighbors(current): + tentative_g = g_score[current] + 1 + if neighbor not in g_score or tentative_g < g_score[neighbor]: + g_score[neighbor] = tentative_g + f_score = tentative_g + self.heuristic(neighbor, exit_cell) + heapq.heappush(open_set, (f_score, id(neighbor), neighbor, current)) + return [], visited_count + + +class SearchStats: + def __init__(self, path, visited_count, time_ms): + self.path = path + self.path_length = len(path) + self.visited_count = visited_count + self.time_ms = time_ms + +class Observer(ABC): + @abstractmethod + def update(self, event): + pass + +class ConsoleView(Observer): + def update(self, event): + if event['type'] == 'path_found': + self.render(event['maze'], event.get('player_pos'), event['path']) + elif event['type'] == 'maze_loaded': + print(f"Лабиринт загружен: {event['maze'].width}x{event['maze'].height}") + elif event['type'] == 'search_start': + print(f"Поиск пути алгоритмом {event['strategy']}...") + elif event['type'] == 'search_end': + print( + f"Путь найден: длина {event['stats'].path_length}, посещено клеток {event['stats'].visited_count}, время {event['stats'].time_ms:.3f}мс") + + def render(self, maze, player_pos=None, path=None): + os.system('cls' if os.name == 'nt' else 'clear') + path_set = set((c.x, c.y) for c in path) if path else set() + for y in range(maze.height): + for x in range(maze.width): + cell = maze.get_cell(x, y) + if player_pos and (x, y) == (player_pos.x, player_pos.y): + print('P', end='') + elif cell.is_start: + print('S', end='') + elif cell.is_exit: + print('E', end='') + elif (x, y) in path_set: + print('.', end='') + elif cell.is_wall: + print('#', end='') + else: + print(' ', end='') + print() + +class MazeSolver: + def __init__(self, maze, strategy=None): + self.maze = maze + self.strategy = strategy + self.observers = [] + + def set_strategy(self, strategy): + self.strategy = strategy + + def add_observer(self, observer): + self.observers.append(observer) + + def notify(self, event): + for observer in self.observers: + observer.update(event) + + def solve(self): + if not self.strategy: + raise ValueError("Стратегия не задана") + self.notify({'type': 'search_start', 'strategy': type(self.strategy).__name__}) + start_time = time.perf_counter() + if self.maze.exit is None: + path, visited = self.strategy.find_path(self.maze, self.maze.start, None) + else: + path, visited = self.strategy.find_path(self.maze, self.maze.start, self.maze.exit) + end_time = time.perf_counter() + time_ms = (end_time - start_time) * 1000 + stats = SearchStats(path, visited, time_ms) + self.notify({'type': 'search_end', 'stats': stats, 'strategy': type(self.strategy).__name__}) + self.notify({'type': 'path_found', 'maze': self.maze, 'path': path}) + return stats + +def is_path_exists(maze): + if maze.exit is None: + return False + queue = deque([maze.start]) + visited = {maze.start} + while queue: + current = queue.popleft() + if current == maze.exit: + return True + for neighbor in maze.get_neighbors(current): + if neighbor not in visited: + visited.add(neighbor) + queue.append(neighbor) + return False + +def generate_maze(width, height, wall_density=0.3, seed=42): + np.random.seed(seed) + maze = Maze(width, height) + for x in range(width): + for y in range(height): + if x == 0 or x == width - 1 or y == 0 or y == height - 1: + maze.grid[x][y] = Cell(x, y, True) + else: + is_wall = np.random.random() < wall_density + maze.grid[x][y] = Cell(x, y, is_wall) + maze.start = maze.get_cell(1, 1) + maze.start.is_wall = False + maze.start.is_start = True + maze.grid[1][1] = maze.start + maze.grid[1][2] = Cell(1, 2, False) + maze.grid[2][1] = Cell(2, 1, False) + maze.exit = maze.get_cell(width - 2, height - 2) + maze.exit.is_wall = False + maze.exit.is_exit = True + maze.grid[width - 2][height - 3] = Cell(width - 2, height - 3, False) + maze.grid[width - 3][height - 2] = Cell(width - 3, height - 2, False) + if not is_path_exists(maze): + for x in range(1, width - 1): + for y in range(1, height - 1): + if np.random.random() < 0.5: + maze.grid[x][y].is_wall = False + if not is_path_exists(maze): + for x in range(1, width - 1): + for y in range(1, height - 1): + if x == 1 and y == 1: + continue + if x == width - 2 and y == height - 2: + continue + maze.grid[x][y].is_wall = False + return maze + +def generate_empty_maze(width, height): + maze = Maze(width, height) + for x in range(width): + for y in range(height): + maze.grid[x][y] = Cell(x, y, False) + maze.start = maze.get_cell(0, 0) + maze.start.is_start = True + maze.exit = maze.get_cell(width - 1, height - 1) + maze.exit.is_exit = True + return maze + +def generate_no_exit_maze(width, height): + maze = Maze(width, height) + np.random.seed(123) + for x in range(width): + for y in range(height): + if x == 0 or x == width - 1 or y == 0 or y == height - 1: + maze.grid[x][y] = Cell(x, y, True) + else: + is_wall = np.random.random() < 0.3 + maze.grid[x][y] = Cell(x, y, is_wall) + maze.start = maze.get_cell(1, 1) + maze.start.is_wall = False + maze.start.is_start = True + maze.grid[1][1] = maze.start + maze.grid[1][2] = Cell(1, 2, False) + maze.grid[2][1] = Cell(2, 1, False) + maze.exit = None + return maze + +def save_maze_to_file(maze, filename): + with open(filename, 'w') as f: + for y in range(maze.height): + for x in range(maze.width): + cell = maze.get_cell(x, y) + if cell.is_start: + f.write('S') + elif cell.is_exit: + f.write('E') + elif cell.is_wall: + f.write('#') + else: + f.write(' ') + f.write('\n') + +def visualize_maze(maze, path=None, title="Лабиринт", ax=None): + grid = np.zeros((maze.height, maze.width)) + for y in range(maze.height): + for x in range(maze.width): + cell = maze.get_cell(x, y) + if cell.is_wall: + grid[y, x] = 1 + elif cell.is_start: + grid[y, x] = 2 + elif cell.is_exit: + grid[y, x] = 3 + if ax is None: + fig, ax = plt.subplots(figsize=(8, 8)) + cmap = plt.cm.colors.ListedColormap(['white', 'black', 'green', 'red']) + ax.imshow(grid, cmap=cmap, interpolation='nearest') + if path: + path_x = [cell.x for cell in path] + path_y = [cell.y for cell in path] + ax.plot(path_x, path_y, 'b-', linewidth=2, label='Путь') + ax.set_title(title) + ax.set_xticks([]) + ax.set_yticks([]) + +def run_experiments(): + mazes_data = { + "Маленький (10x10)": generate_maze(10, 10, 0.2, 10), + "Средний (50x50)": generate_maze(50, 50, 0.3, 20), + "Большой (100x100)": generate_maze(100, 100, 0.3, 30), + "Пустой (50x50)": generate_empty_maze(50, 50), + "Без выхода (50x50)": generate_no_exit_maze(50, 50) + } + os.makedirs("mazes", exist_ok=True) + for name, maze in mazes_data.items(): + filename = f"mazes/{name.replace(' ', '_').replace('(', '').replace(')', '')}.txt" + save_maze_to_file(maze, filename) + print(f"Сохранён {filename}") + strategies = { + "BFS": BFSPathFinding(), + "DFS": DFSPathFinding(), + "A*": AStarPathFinding() + } + results = [] + runs = 5 + fig_mazes, axes_mazes = plt.subplots(len(mazes_data), len(strategies) + 1, figsize=(18, 4 * len(mazes_data))) + if len(mazes_data) == 1: + axes_mazes = [axes_mazes] + for row_idx, (maze_name, maze) in enumerate(mazes_data.items()): + visualize_maze(maze, title=f"{maze_name}", ax=axes_mazes[row_idx][0]) + for col_idx, (strat_name, strategy) in enumerate(strategies.items()): + solver = MazeSolver(maze, strategy) + times = [] + visited_counts = [] + path_lengths = [] + best_path = None + for _ in range(runs): + stats = solver.solve() + times.append(stats.time_ms) + visited_counts.append(stats.visited_count) + path_lengths.append(stats.path_length) + if stats.path: + best_path = stats.path + avg_time = np.mean(times) + avg_visited = np.mean(visited_counts) + avg_path = np.mean(path_lengths) + results.append([maze_name, strat_name, avg_time, avg_visited, avg_path]) + print(f"{maze_name} - {strat_name}: Время={avg_time:.3f}мс, Посещено={avg_visited:.0f}, Длина пути={avg_path:.0f}") + visualize_maze(maze, best_path, f"{maze_name} - {strat_name}", ax=axes_mazes[row_idx][col_idx + 1]) + plt.tight_layout() + plt.savefig('mazes_visualization.png') + plt.close() + with open('results.csv', 'w', newline='', encoding='utf-8-sig') as f: + writer = csv.writer(f) + writer.writerow(["Лабиринт", "Стратегия", "Время_мс", "Посещено", "Длина_пути"]) + writer.writerows(results) + print("\nРезультаты сохранены в results.csv") + return results + +def plot_results(results): + strategies = ["BFS", "DFS", "A*"] + mazes = ["Маленький (10x10)", "Средний (50x50)", "Большой (100x100)", "Пустой (50x50)", "Без выхода (50x50)"] + data = {} + for strat in strategies: + data[strat] = {"times": [], "visited": [], "paths": []} + for row in results: + maze, strat, time_ms, visited, path_len = row + data[strat]["times"].append(time_ms) + data[strat]["visited"].append(visited) + data[strat]["paths"].append(path_len) + + fig, axes = plt.subplots(1, 3, figsize=(18, 6)) + x = np.arange(len(mazes)) + width = 0.25 + colors = {'BFS': 'skyblue', 'DFS': 'lightgreen', 'A*': 'salmon'} + + for i, strat in enumerate(strategies): + offset = (i - 1) * width + times_display = [t if t > 0 else 0.001 for t in data[strat]["times"]] + bars = axes[0].bar(x + offset, times_display, width, label=strat, color=colors[strat]) + for bar, val in zip(bars, data[strat]["times"]): + if val > 0: + axes[0].text(bar.get_x() + bar.get_width() / 2, bar.get_height() * 1.1, + f'{val:.2f}', ha='center', va='bottom', fontsize=8, rotation=90) + axes[0].set_title("Время выполнения (мс)") + axes[0].set_xticks(x) + axes[0].set_xticklabels(mazes, rotation=15, ha='right') + axes[0].set_ylabel("Время (мс)") + axes[0].set_yscale('log') + axes[0].legend() + axes[0].grid(axis='y', alpha=0.3) + + for i, strat in enumerate(strategies): + offset = (i - 1) * width + visited_display = [v if v > 0 else 1 for v in data[strat]["visited"]] + bars = axes[1].bar(x + offset, visited_display, width, label=strat, color=colors[strat]) + for bar, val in zip(bars, data[strat]["visited"]): + if val > 0: + axes[1].text(bar.get_x() + bar.get_width() / 2, bar.get_height() * 1.1, + f'{val:.0f}', ha='center', va='bottom', fontsize=8, rotation=90) + axes[1].set_title("Посещено клеток") + axes[1].set_xticks(x) + axes[1].set_xticklabels(mazes, rotation=15, ha='right') + axes[1].set_ylabel("Количество клеток") + axes[1].set_yscale('log') + axes[1].legend() + axes[1].grid(axis='y', alpha=0.3) + + for i, strat in enumerate(strategies): + offset = (i - 1) * width + paths_display = [p if p > 0 else 1 for p in data[strat]["paths"]] + bars = axes[2].bar(x + offset, paths_display, width, label=strat, color=colors[strat]) + for bar, val in zip(bars, data[strat]["paths"]): + height = bar.get_height() + axes[2].text(bar.get_x() + bar.get_width() / 2, height * 1.1, + f'{val:.0f}', ha='center', va='bottom', fontsize=8, rotation=90) + axes[2].set_title("Длина найденного пути") + axes[2].set_xticks(x) + axes[2].set_xticklabels(mazes, rotation=15, ha='right') + axes[2].set_ylabel("Длина пути") + axes[2].set_yscale('log') + axes[2].legend() + axes[2].grid(axis='y', alpha=0.3) + + plt.tight_layout() + plt.savefig('comparative_results.png') + plt.show() + print("Сравнительные графики сохранены в comparative_results.png") + +if __name__ == "__main__": + print("\nГенерация лабиринтов и запуск экспериментов\n") + results = run_experiments() + print("\nСоздание графиков") + plot_results(results) + print("\nЭксперименты завершены") + print("\nСозданные файлы:") + print(" - 5 текстовых файлов с лабиринтами") + print(" - mazes_visualization.png: Визуализация всех лабиринтов с путями") + print(" - results.csv: Таблица с числовыми результатами") + print(" - comparative_results.png: Сравнительные графики (Время, Посещено, Длина пути)") + print("\nСводка результатов:") + for row in results: + maze, strat, time_ms, visited, path_len = row + print(f"{maze:20s} | {strat:5s} | Время: {time_ms:8.3f}мс | Посещено: {visited:6.0f} | Путь: {path_len:4.0f}") \ No newline at end of file