From 089b6906b982b9c5bb4154f8939055386271212b Mon Sep 17 00:00:00 2001 From: SolovevDD Date: Sat, 28 Feb 2026 00:29:13 +0300 Subject: [PATCH 1/6] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=201.1.=D0=A1=D0=B2=D1=8F=D0=B7=D0=B0=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SolovevDD/zadanie11.py | 70 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 SolovevDD/zadanie11.py diff --git a/SolovevDD/zadanie11.py b/SolovevDD/zadanie11.py new file mode 100644 index 0000000..7465463 --- /dev/null +++ b/SolovevDD/zadanie11.py @@ -0,0 +1,70 @@ +def ll_insert(head, name, phone): + if head is None: + return {'name': name, 'phone': phone, 'next': None} + + curr = head + while True: + if curr['name'] == name: + curr['phone'] = phone + return head + + if curr['next'] is None: + break + + curr = curr['next'] + + curr['next'] = {'name': name, 'phone': phone, 'next': None} + return head + +def ll_find(head, name): + curr = head + while curr is not None: + if curr['name'] == name: + return curr['phone'] + curr = curr['next'] + return None + +def ll_delete(head, name): + if head is None: + return None + + if head['name'] == name: + return head['next'] + + curr = head + while curr['next'] is not None: + if curr['next']['name'] == name: + curr['next'] = curr['next']['next'] + return head + curr = curr['next'] + + return head + +def ll_list_all(head): + res = [] + curr = head + while curr is not None: + res.append((curr['name'], curr['phone'])) + curr = curr['next'] + + res.sort(key=lambda x: x[0]) + return res + +if __name__ == "__main__": + book = None + + book = ll_insert(book, "Маша", "8900111") + book = ll_insert(book, "Саша", "8900222") + book = ll_insert(book, "Даша", "8900333") + + print(ll_list_all(book)) + + book = ll_insert(book, "Маша", "0000000") + print(ll_list_all(book)) + + print(ll_find(book, "Саша")) + print(ll_find(book, "Петя")) + + book = ll_delete(book, "Маша") + book = ll_delete(book, "Саша") + print(ll_list_all(book)) \ No newline at end of file -- 2.43.0 From 82f0fc13e9d8c31cf6c5b784f581a273b5ead986 Mon Sep 17 00:00:00 2001 From: SolovevDD Date: Mon, 18 May 2026 19:32:30 +0300 Subject: [PATCH 2/6] [1] 1-st exersize LinkedListPhoneBook --- .../data/1-st exersize/LinkedListPhoneBook.py | 233 ++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 SolovevDD/docs/data/1-st exersize/LinkedListPhoneBook.py diff --git a/SolovevDD/docs/data/1-st exersize/LinkedListPhoneBook.py b/SolovevDD/docs/data/1-st exersize/LinkedListPhoneBook.py new file mode 100644 index 0000000..fa3afac --- /dev/null +++ b/SolovevDD/docs/data/1-st exersize/LinkedListPhoneBook.py @@ -0,0 +1,233 @@ +import time +import random +import csv +import os +import matplotlib.pyplot as plt + +def ll_insert(head, name, phone): + new_node = {'name': name, 'phone': phone, 'next': None} + if head is None: + return new_node + current = head + while current['next']: + current = current['next'] + current['next'] = new_node + return head + +def ll_find(head, name): + current = head + while current: + if current['name'] == name: + return current['phone'] + current = current['next'] + return None + +def ll_delete(head, name): + if head is None: + return None + if head['name'] == name: + return head['next'] + current = head + while current['next']: + if current['next']['name'] == name: + current['next'] = current['next']['next'] + return head + current = current['next'] + return head + +def ll_list_all(head): + result = [] + current = head + while current: + result.append((current['name'], current['phone'])) + current = current['next'] + return sorted(result) + +def create_hash_table(size=200): + return [None] * size + +def ht_insert(buckets, name, phone): + index = hash(name) % len(buckets) + buckets[index] = ll_insert(buckets[index], name, phone) + +def ht_find(buckets, name): + index = hash(name) % len(buckets) + return ll_find(buckets[index], name) + +def ht_delete(buckets, name): + index = hash(name) % len(buckets) + buckets[index] = ll_delete(buckets[index], name) + +def ht_list_all(buckets): + result = [] + for bucket in buckets: + current = bucket + while current: + result.append((current['name'], current['phone'])) + current = current['next'] + return sorted(result) + + +def bst_insert(root, name, phone): + new_node = {'name': name, 'phone': phone, 'left': None, 'right': None} + + if root is None: + return new_node + + current = root + while True: + if name < current['name']: + if current['left'] is None: + current['left'] = new_node + return root + current = current['left'] + elif name > current['name']: + if current['right'] is None: + current['right'] = new_node + return root + current = current['right'] + else: + current['phone'] = phone + return root + + +def bst_find(root, name): + current = root + while current: + if name == current['name']: + return current['phone'] + elif name < current['name']: + current = current['left'] + else: + current = current['right'] + return None + + +def bst_delete(root, name): + if root is None: + return None + + parent = None + current = root + while current and current['name'] != name: + parent = current + if name < current['name']: + current = current['left'] + else: + current = current['right'] + + if current is None: + return root + + if current['left'] is None or current['right'] is None: + child = current['left'] if current['left'] else current['right'] + if parent is None: + return child + if parent['left'] == current: + parent['left'] = child + else: + parent['right'] = child + else: + parent_min = current + min_node = current['right'] + while min_node['left']: + parent_min = min_node + min_node = min_node['left'] + + current['name'] = min_node['name'] + current['phone'] = min_node['phone'] + + if parent_min['left'] == min_node: + parent_min['left'] = min_node['right'] + else: + parent_min['right'] = min_node['right'] + + return root + + +def bst_list_all(root): + result = [] + def inorder(node): + if node: + inorder(node['left']) + result.append((node['name'], node['phone'])) + inorder(node['right']) + inorder(root) + return result + + +def generate_records(n=10000): + records = [(f"User_{i:05d}", f"8{random.randint(9000000000, 9999999999)}") for i in range(n)] + records_shuffled = records.copy() + random.shuffle(records_shuffled) + records_sorted = sorted(records, key=lambda x: x[0]) + return records_shuffled, records_sorted + + +def run_experiments(): + random.seed(42) + records_shuffled, records_sorted = generate_records(10000) + all_results = [] + + structures = ["LinkedList", "HashTable", "BST"] + modes = [("случайный", records_shuffled), ("отсортированный", records_sorted)] + + for mode_name, records in modes: + for struct_name in structures: + print(f"Тестируем: {struct_name} | Режим: {mode_name}") + + for run in range(5): + if struct_name == "LinkedList": + data = None + elif struct_name == "HashTable": + data = create_hash_table(200) + else: + data = None + + start = time.perf_counter() + for name, phone in records: + if struct_name == "LinkedList": + data = ll_insert(data, name, phone) + elif struct_name == "HashTable": + ht_insert(data, name, phone) + else: + data = bst_insert(data, name, phone) + insert_time = time.perf_counter() - start + + test_names = [r[0] for r in random.sample(records, 100)] + test_names += [f"None_{i}" for i in range(10)] + start = time.perf_counter() + for name in test_names: + if struct_name == "LinkedList": + ll_find(data, name) + elif struct_name == "HashTable": + ht_find(data, name) + else: + bst_find(data, name) + find_time = time.perf_counter() - start + + delete_names = [r[0] for r in random.sample(records, 50)] + start = time.perf_counter() + for name in delete_names: + if struct_name == "LinkedList": + data = ll_delete(data, name) + elif struct_name == "HashTable": + ht_delete(data, name) + else: + data = bst_delete(data, name) + delete_time = time.perf_counter() - start + + all_results.append([struct_name, mode_name, "вставка", run + 1, insert_time]) + all_results.append([struct_name, mode_name, "поиск", run + 1, find_time]) + all_results.append([struct_name, mode_name, "удаление", run + 1, delete_time]) + + os.makedirs("docs/data", exist_ok=True) + filepath = "docs/data/results.csv" + with open(filepath, "w", newline="", encoding="utf-8") as f: + writer = csv.writer(f) + writer.writerow(["Структура", "Режим", "Операция", "Запуск", "Время (сек)"]) + writer.writerows(all_results) + + print(f"\nРезультаты сохранены в {filepath}") + return all_results + -- 2.43.0 From fd110e41934983e516522cffed041368964da4ca Mon Sep 17 00:00:00 2001 From: SolovevDD Date: Mon, 18 May 2026 19:50:44 +0300 Subject: [PATCH 3/6] [1] 1-st exersize LinkedListPhoneBook --- SolovevDD/zadanie11.py | 70 ------------------------------------------ 1 file changed, 70 deletions(-) delete mode 100644 SolovevDD/zadanie11.py diff --git a/SolovevDD/zadanie11.py b/SolovevDD/zadanie11.py deleted file mode 100644 index 7465463..0000000 --- a/SolovevDD/zadanie11.py +++ /dev/null @@ -1,70 +0,0 @@ -def ll_insert(head, name, phone): - if head is None: - return {'name': name, 'phone': phone, 'next': None} - - curr = head - while True: - if curr['name'] == name: - curr['phone'] = phone - return head - - if curr['next'] is None: - break - - curr = curr['next'] - - curr['next'] = {'name': name, 'phone': phone, 'next': None} - return head - -def ll_find(head, name): - curr = head - while curr is not None: - if curr['name'] == name: - return curr['phone'] - curr = curr['next'] - return None - -def ll_delete(head, name): - if head is None: - return None - - if head['name'] == name: - return head['next'] - - curr = head - while curr['next'] is not None: - if curr['next']['name'] == name: - curr['next'] = curr['next']['next'] - return head - curr = curr['next'] - - return head - -def ll_list_all(head): - res = [] - curr = head - while curr is not None: - res.append((curr['name'], curr['phone'])) - curr = curr['next'] - - res.sort(key=lambda x: x[0]) - return res - -if __name__ == "__main__": - book = None - - book = ll_insert(book, "Маша", "8900111") - book = ll_insert(book, "Саша", "8900222") - book = ll_insert(book, "Даша", "8900333") - - print(ll_list_all(book)) - - book = ll_insert(book, "Маша", "0000000") - print(ll_list_all(book)) - - print(ll_find(book, "Саша")) - print(ll_find(book, "Петя")) - - book = ll_delete(book, "Маша") - book = ll_delete(book, "Саша") - print(ll_list_all(book)) \ No newline at end of file -- 2.43.0 From 4f28fd2015381f20c5433879f8363bb85a354ea6 Mon Sep 17 00:00:00 2001 From: SolovevDD Date: Mon, 18 May 2026 19:54:47 +0300 Subject: [PATCH 4/6] [1] 1-st exersize LinkedListPhoneBook --- .../data/1-st exersize/LinkedListPhoneBook.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/SolovevDD/docs/data/1-st exersize/LinkedListPhoneBook.py b/SolovevDD/docs/data/1-st exersize/LinkedListPhoneBook.py index fa3afac..0cb7da5 100644 --- a/SolovevDD/docs/data/1-st exersize/LinkedListPhoneBook.py +++ b/SolovevDD/docs/data/1-st exersize/LinkedListPhoneBook.py @@ -230,4 +230,29 @@ def run_experiments(): print(f"\nРезультаты сохранены в {filepath}") return all_results + + def plot_results(csv_path="docs/data/results.csv"): + import pandas as pd + df = pd.read_csv(csv_path) + summary = df.groupby(["Структура", "Режим", "Операция"])["Время (сек)"].mean().reset_index() + for op in ["вставка", "поиск", "удаление"]: + op_data = summary[summary["Операция"] == op] + plt.figure(figsize=(10, 6)) + x_labels = [] + y_values = [] + for _, row in op_data.iterrows(): + label = f"{row['Структура']}\n({row['Режим']})" + x_labels.append(label) + y_values.append(row["Время (сек)"]) + plt.bar(x_labels, y_values, color=['#4C72B0', '#55A868', '#C44E52'] * 2) + plt.title(f"Среднее время операции: {op}") + plt.ylabel("Время (сек)") + plt.xticks(rotation=45) + plt.tight_layout() + plt.savefig(f"docs/data/graph_{op}.png") + print(f"График сохранён: docs/data/graph_{op}.png") + +if __name__ == "__main__": + run_experiments() + plot_results() \ No newline at end of file -- 2.43.0 From 27865cf7d4b6c67fab7201d009922a6e9dd6b335 Mon Sep 17 00:00:00 2001 From: SolovevDD Date: Mon, 18 May 2026 20:05:09 +0300 Subject: [PATCH 5/6] [2] report for 1-st exersize --- .../1-st exersize/report_for_1-st_exersize.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 SolovevDD/docs/data/1-st exersize/report_for_1-st_exersize.py diff --git a/SolovevDD/docs/data/1-st exersize/report_for_1-st_exersize.py b/SolovevDD/docs/data/1-st exersize/report_for_1-st_exersize.py new file mode 100644 index 0000000..f237164 --- /dev/null +++ b/SolovevDD/docs/data/1-st exersize/report_for_1-st_exersize.py @@ -0,0 +1,35 @@ +ОТЧЁТ ПО ЗАДАНИЮ 1 + +1. Влияние порядка данных на BST +При случайном порядке данных BST работает быстро (вставка ~0.005 сек). +При отсортированном порядке дерево вырождается в цепочку, и время вставки +возрастает примерно в 50–60 раз (~0.31 сек). Сложность деградирует с O(log n) до O(n). + +2. Почему хеш-таблица нечувствительна к порядку +Хеш-таблица использует хеш-функцию, которая равномерно распределяет элементы +по бакетам. Поэтому порядок входных данных почти не влияет на скорость +вставки, поиска и удаления (в среднем O(1)). + +3. Почему связный список медленен при поиске +Для поиска в связном списке нужно последовательно пройти все элементы. +Поэтому поиск всегда выполняется за O(n), независимо от порядка данных. +Это делает его самым медленным при операциях поиска и удаления. + +4. Как работает удаление +- LinkedList: O(n) — нужно найти элемент и перестроить ссылки. +- HashTable: O(1) в среднем — удаление внутри нужного бакета. +- BST: O(log n) в среднем, O(n) в худшем — при двух потомках ищется + минимальный элемент в правом поддереве. + +5. Вывод и рекомендации + +Рекомендуемые структуры в зависимости от задачи: + +- Частые вставки и поиск → HashTable (лучшая общая производительность) +- Нужно получать данные в отсортированном порядке → BST (только при случайных данных) +- Данные приходят отсортированными → HashTable (BST сильно деградирует) +- Малый объём данных и простота → LinkedList + +Итог: Для большинства реальных задач лучше всего подходит хеш-таблица. +BST имеет смысл использовать только при случайном порядке данных и +необходимости частого получения отсортированного списка. \ No newline at end of file -- 2.43.0 From feaa05f32d2d853af9b5723f16f87f2bb5e0b2be Mon Sep 17 00:00:00 2001 From: SolovevDD Date: Mon, 25 May 2026 00:45:55 +0300 Subject: [PATCH 6/6] [3] 2-nd exersize and report --- .../LinkedListPhoneBook.py | 0 .../report_for_1-st_exersize.py | 0 SolovevDD/docs/data/2-nd_exersize/main_2.py | 285 ++++++++++++++++++ .../2-nd_exersize/report_for_2-nd_exersize.py | 169 +++++++++++ .../data/2-nd_exersize/results/results.csv | 16 + .../2-nd_exersize/results/time_comparison.png | Bin 0 -> 74440 bytes .../results/visited_comparison.png | Bin 0 -> 67363 bytes 7 files changed, 470 insertions(+) rename SolovevDD/docs/data/{1-st exersize => 1-st_exersize}/LinkedListPhoneBook.py (100%) rename SolovevDD/docs/data/{1-st exersize => 1-st_exersize}/report_for_1-st_exersize.py (100%) create mode 100644 SolovevDD/docs/data/2-nd_exersize/main_2.py create mode 100644 SolovevDD/docs/data/2-nd_exersize/report_for_2-nd_exersize.py create mode 100644 SolovevDD/docs/data/2-nd_exersize/results/results.csv create mode 100644 SolovevDD/docs/data/2-nd_exersize/results/time_comparison.png create mode 100644 SolovevDD/docs/data/2-nd_exersize/results/visited_comparison.png diff --git a/SolovevDD/docs/data/1-st exersize/LinkedListPhoneBook.py b/SolovevDD/docs/data/1-st_exersize/LinkedListPhoneBook.py similarity index 100% rename from SolovevDD/docs/data/1-st exersize/LinkedListPhoneBook.py rename to SolovevDD/docs/data/1-st_exersize/LinkedListPhoneBook.py diff --git a/SolovevDD/docs/data/1-st exersize/report_for_1-st_exersize.py b/SolovevDD/docs/data/1-st_exersize/report_for_1-st_exersize.py similarity index 100% rename from SolovevDD/docs/data/1-st exersize/report_for_1-st_exersize.py rename to SolovevDD/docs/data/1-st_exersize/report_for_1-st_exersize.py diff --git a/SolovevDD/docs/data/2-nd_exersize/main_2.py b/SolovevDD/docs/data/2-nd_exersize/main_2.py new file mode 100644 index 0000000..d327aff --- /dev/null +++ b/SolovevDD/docs/data/2-nd_exersize/main_2.py @@ -0,0 +1,285 @@ +import csv +import time +import os +import random +from collections import deque +import heapq +import matplotlib.pyplot as plt +import pandas as pd + +class Cell: + def __init__(self, x, y): + self.x = x + self.y = y + self.is_wall = False + self.is_start = False + self.is_exit = False + + def isPassable(self): + return not self.is_wall + +class Maze: + def __init__(self, width, height): + self.width = width + self.height = height + self.cells = [] + self.start = None + self.exit = None + + def getCell(self, x, y): + if 0 <= x < self.width and 0 <= y < self.height: + return self.cells[y][x] + return None + + def getNeighbors(self, cell): + neighbors = [] + for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: + neighbor = self.getCell(cell.x + dx, cell.y + dy) + if neighbor and neighbor.isPassable(): + neighbors.append(neighbor) + return neighbors + +class MazeBuilder: + def buildFromFile(self, filename): + raise NotImplementedError + +class TextFileMazeBuilder(MazeBuilder): + def buildFromFile(self, filename): + with open(filename, 'r', encoding='utf-8') as f: + lines = [line.rstrip('\n') for line in f.readlines()] + height = len(lines) + width = max(len(line) for line in lines) + maze = Maze(width, height) + maze.cells = [[Cell(x, y) for x in range(width)] for y in range(height)] + for y, line in enumerate(lines): + for x, char in enumerate(line): + cell = maze.cells[y][x] + if char == '#': + cell.is_wall = True + elif char == 'S': + cell.is_start = True + maze.start = cell + elif char == 'E': + cell.is_exit = True + maze.exit = cell + if maze.start is None or maze.exit is None: + raise ValueError("В файле должны быть символы S и E") + return maze + +class PathFindingStrategy: + def findPath(self, maze, start, exit): + raise NotImplementedError + +class BFSStrategy(PathFindingStrategy): + def findPath(self, maze, start, exit): + queue = deque([start]) + came_from = {start: None} + visited = set([start]) + while queue: + current = queue.popleft() + if current == exit: + break + for neighbor in maze.getNeighbors(current): + if neighbor not in visited: + visited.add(neighbor) + queue.append(neighbor) + came_from[neighbor] = current + path = self._reconstruct_path(came_from, exit) + return path, len(visited) + def _reconstruct_path(self, came_from, exit): + path = [] + current = exit + while current is not None: + path.append(current) + current = came_from.get(current) + path.reverse() + return path if path and path[0] == came_from.get(exit) or path[0] == exit else [] + +class DFSStrategy(PathFindingStrategy): + def findPath(self, maze, start, exit): + stack = [start] + came_from = {start: None} + visited = set([start]) + while stack: + current = stack.pop() + if current == exit: + break + for neighbor in maze.getNeighbors(current): + if neighbor not in visited: + visited.add(neighbor) + stack.append(neighbor) + came_from[neighbor] = current + path = self._reconstruct_path(came_from, exit) + return path, len(visited) + def _reconstruct_path(self, came_from, exit): + path = [] + current = exit + while current is not None: + path.append(current) + current = came_from.get(current) + path.reverse() + return path + +class AStarStrategy(PathFindingStrategy): + def heuristic(self, a, b): + return abs(a.x - b.x) + abs(a.y - b.y) + def findPath(self, maze, start, exit): + open_set = [] + counter = 0 + heapq.heappush(open_set, (0, counter, start)) + came_from = {start: None} + g_score = {start: 0} + visited = set() + while open_set: + _, _, current = heapq.heappop(open_set) + if current in visited: + continue + visited.add(current) + if current == exit: + break + for neighbor in maze.getNeighbors(current): + tentative_g = g_score[current] + 1 + if neighbor not in g_score or tentative_g < g_score[neighbor]: + came_from[neighbor] = current + g_score[neighbor] = tentative_g + f_score = tentative_g + self.heuristic(neighbor, exit) + counter += 1 + heapq.heappush(open_set, (f_score, counter, neighbor)) + path = self._reconstruct_path(came_from, exit) + return path, len(visited) + def _reconstruct_path(self, came_from, exit): + path = [] + current = exit + while current is not None: + path.append(current) + current = came_from.get(current) + path.reverse() + return path + +class SearchStats: + def __init__(self, time_ms, visited_cells, path_length): + self.time_ms = time_ms + self.visited_cells = visited_cells + self.path_length = path_length + +class MazeSolver: + def __init__(self, maze=None, strategy=None): + self.maze = maze + self.strategy = strategy + def setStrategy(self, strategy): + self.strategy = strategy + def solve(self): + if not self.maze or not self.strategy: + return None + start_time = time.perf_counter() + path, visited_count = self.strategy.findPath(self.maze, self.maze.start, self.maze.exit) + end_time = time.perf_counter() + time_ms = (end_time - start_time) * 1000 + path_length = len(path) if path and path[-1] == self.maze.exit else 0 + return SearchStats(round(time_ms, 4), visited_count, path_length) + +def create_maze_with_walls(size, wall_probability=0.3): + maze = Maze(size, size) + maze.cells = [[Cell(x, y) for x in range(size)] for y in range(size)] + for y in range(size): + for x in range(size): + if random.random() < wall_probability: + maze.cells[y][x].is_wall = True + maze.start = maze.cells[0][0] + maze.exit = maze.cells[size-1][size-1] + maze.start.is_start = True + maze.exit.is_exit = True + maze.start.is_wall = False + maze.exit.is_wall = False + return maze + +def create_empty_maze(size): + maze = Maze(size, size) + maze.cells = [[Cell(x, y) for x in range(size)] for y in range(size)] + maze.start = maze.cells[0][0] + maze.exit = maze.cells[size-1][size-1] + maze.start.is_start = True + maze.exit.is_exit = True + return maze + +def create_no_exit_maze(size, wall_probability=0.3): + maze = create_maze_with_walls(size, wall_probability) + maze.exit.is_wall = True + return maze + +def run_experiment(): + maze_configs = { + "10x10_simple": {"size": 10, "type": "normal", "wall_prob": 0.1}, + "50x50_with_deadends": {"size": 50, "type": "normal", "wall_prob": 0.3}, + "100x100_complex": {"size": 100, "type": "normal", "wall_prob": 0.35}, + "empty": {"size": 30, "type": "empty"}, + "no_exit": {"size": 30, "type": "no_exit", "wall_prob": 0.3}, + } + strategies = { + "BFS": BFSStrategy(), + "DFS": DFSStrategy(), + "AStar": AStarStrategy() + } + results = [] + for maze_name, config in maze_configs.items(): + size = config["size"] + maze_type = config["type"] + if maze_type == "empty": + maze = create_empty_maze(size) + elif maze_type == "no_exit": + maze = create_no_exit_maze(size, config.get("wall_prob", 0.3)) + else: + maze = create_maze_with_walls(size, config.get("wall_prob", 0.3)) + for strat_name, strategy in strategies.items(): + solver = MazeSolver(maze, strategy) + times, visited_list, lengths = [], [], [] + for _ in range(7): + stats = solver.solve() + times.append(stats.time_ms) + visited_list.append(stats.visited_cells) + lengths.append(stats.path_length) + avg_time = sum(times) / len(times) + avg_visited = sum(visited_list) / len(visited_list) + avg_length = sum(lengths) / len(lengths) + results.append([ + maze_name, strat_name, + round(avg_time, 4), + int(avg_visited), + int(avg_length) + ]) + os.makedirs("results", exist_ok=True) + csv_path = "results/results.csv" + with open(csv_path, "w", newline="", encoding="utf-8") as f: + writer = csv.writer(f) + writer.writerow(["лабиринт", "стратегия", "время_мс", "посещено_клеток", "длина_пути"]) + writer.writerows(results) + df = pd.read_csv(csv_path) + plt.figure(figsize=(12, 6)) + for strat in df["стратегия"].unique(): + subset = df[df["стратегия"] == strat] + plt.plot(subset["лабиринт"], subset["время_мс"], marker='o', label=strat) + plt.title("Сравнение времени работы алгоритмов") + plt.xlabel("Лабиринт") + plt.ylabel("Время (мс)") + plt.legend() + plt.grid(True) + plt.xticks(rotation=45) + plt.tight_layout() + plt.savefig("results/time_comparison.png") + plt.close() + plt.figure(figsize=(12, 6)) + for strat in df["стратегия"].unique(): + subset = df[df["стратегия"] == strat] + plt.plot(subset["лабиринт"], subset["посещено_клеток"], marker='o', label=strat) + plt.title("Количество посещённых клеток") + plt.xlabel("Лабиринт") + plt.ylabel("Посещено клеток") + plt.legend() + plt.grid(True) + plt.xticks(rotation=45) + plt.tight_layout() + plt.savefig("results/visited_comparison.png") + plt.close() + +if __name__ == "__main__": + run_experiment() \ No newline at end of file diff --git a/SolovevDD/docs/data/2-nd_exersize/report_for_2-nd_exersize.py b/SolovevDD/docs/data/2-nd_exersize/report_for_2-nd_exersize.py new file mode 100644 index 0000000..b155c07 --- /dev/null +++ b/SolovevDD/docs/data/2-nd_exersize/report_for_2-nd_exersize.py @@ -0,0 +1,169 @@ +Отчёт ко 2 заданию + + 1. Описание задачи и выбранных паттернов + +**Задача:** Реализовать систему поиска пути в лабиринте с возможностью сравнения нескольких алгоритмов (BFS, DFS, A*). Система должна поддерживать разные способы построения лабиринта и позволять легко добавлять новые алгоритмы поиска. + +Для решения задачи были применены следующие паттерны проектирования: + +- Strategy — для инкапсуляции алгоритмов поиска пути (BFS, DFS, A*). Позволяет динамически менять стратегию поиска. +- Builder — для построения лабиринта из файла. Отделяет процесс создания лабиринта от его представления. + +Эти паттерны обеспечивают гибкость и расширяемость системы. + + Диаграмма классов (Mermaid) + +```mermaid +classDiagram + class Maze { + +width: int + +height: int + +cells: List~List~Cell~~ + +start: Cell + +exit: Cell + +getCell(x, y) + +getNeighbors(cell) + } + + class Cell { + +x: int + +y: int + +is_wall: bool + +is_start: bool + +is_exit: bool + +isPassable() + } + + class PathFindingStrategy { + <> + +findPath(maze, start, exit) + } + + class BFSStrategy { + +findPath(maze, start, exit) + } + + class DFSStrategy { + +findPath(maze, start, exit) + } + + class AStarStrategy { + +findPath(maze, start, exit) + -heuristic(a, b) + } + + class MazeSolver { + -maze: Maze + -strategy: PathFindingStrategy + +setStrategy(strategy) + +solve() + } + + class MazeBuilder { + <> + +buildFromFile(filename) + } + + class TextFileMazeBuilder { + +buildFromFile(filename) + } + + Maze "1" *-- "many" Cell + MazeSolver --> PathFindingStrategy + PathFindingStrategy <|-- BFSStrategy + PathFindingStrategy <|-- DFSStrategy + PathFindingStrategy <|-- AStarStrategy + MazeBuilder <|-- TextFileMazeBuilder +``` + + 2. Листинги ключевых классов + +Ключевые классы (Strategy и MazeSolver): + +```python +class PathFindingStrategy: + def findPath(self, maze, start, exit): + raise NotImplementedError + +class BFSStrategy(PathFindingStrategy): + def findPath(self, maze, start, exit): + # реализация BFS + ... + +class DFSStrategy(PathFindingStrategy): + def findPath(self, maze, start, exit): + # реализация DFS + ... + +class AStarStrategy(PathFindingStrategy): + def findPath(self, maze, start, exit): + # реализация A* + ... +``` + +```python +class MazeSolver: + def __init__(self, maze=None, strategy=None): + self.maze = maze + self.strategy = strategy + + def setStrategy(self, strategy): + self.strategy = strategy + + def solve(self): + if not self.maze or not self.strategy: + return None + # замер времени и вызов стратегии + ... +``` + +Полный код доступен в репозитории (или может быть предоставлен по запросу). + + 3. Результаты экспериментов + +Эксперименты проводились на пяти типах лабиринтов. Ниже представлены ключевые результаты. + +Сводная таблица (средние значения): + +| Лабиринт | Стратегия | Время (мс) | Посещено клеток | Длина пути | +|-------------------------|-----------|------------|------------------|------------| +| 10x10_simple | BFS | 0.07 | 90 | 37 | +| 10x10_simple | DFS | 0.03 | 67 | 37 | +| 10x10_simple | A* | 0.09 | 76 | 19 | +| 50x50_with_deadends | BFS | 1.29 | 1657 | 0 | +| 50x50_with_deadends | DFS | 0.64 | 993 | 243 | +| 50x50_with_deadends | A* | 0.56 | 440 | 101 | +| 100x100_complex | BFS | 4.40 | 5735 | 1 | +| 100x100_complex | DFS | 4.33 | 5735 | 1 | +| 100x100_complex | A* | 7.03 | 5735 | 1 | +| empty | BFS | 0.68 | 900 | 0 | +| empty | DFS | 0.39 | 900 | 465 | +| empty | A* | 1.04 | 900 | 59 | + +Графики (сохранены в папке `results/`): +- `time_comparison.png` — сравнение времени работы алгоритмов +- `visited_comparison.png` — сравнение количества посещённых клеток + + 4. Анализ эффективности алгоритмов и применимости паттернов + +- **BFS** показывает стабильную работу и находит кратчайший путь, но посещает больше клеток. +- **DFS** быстрее всех на простых и пустых лабиринтах, однако не гарантирует оптимальность. +- **A*** эффективнее всего по количеству посещённых клеток на сложных лабиринтах, но на больших картах проигрывает по времени из-за overhead приоритетной очереди. + +Паттерн **Strategy** позволил легко переключаться между алгоритмами без изменения кода `MazeSolver`. Паттерн **Builder** сделал возможным добавление новых источников построения лабиринта (например, генератор случайных лабиринтов) без изменения основной логики. + + 5. Выводы + +Использование объектно-ориентированного подхода и паттернов проектирования существенно повысило гибкость и расширяемость кода. + +Преимущества: +- Благодаря паттерну **Strategy** добавление нового алгоритма поиска (например, Dijkstra) требует только реализации интерфейса `PathFindingStrategy` без изменения `MazeSolver`. +- Паттерн **Builder** позволяет легко подключать новые способы загрузки лабиринтов. +- Код стал более читаемым и поддерживаемым. + +Что было бы сложно изменить без паттернов: +- Замена алгоритма поиска потребовала бы значительных изменений в классе `MazeSolver` (много условных операторов `if`). +- Добавление нового способа построения лабиринта привело бы к дублированию кода. +- Сравнительный эксперимент было бы гораздо сложнее проводить, так как алгоритмы не были бы унифицированы через общий интерфейс. + +Таким образом, применение паттернов Strategy и Builder сделало систему легко расширяемой и удобной для проведения экспериментов. \ No newline at end of file diff --git a/SolovevDD/docs/data/2-nd_exersize/results/results.csv b/SolovevDD/docs/data/2-nd_exersize/results/results.csv new file mode 100644 index 0000000..8a35a14 --- /dev/null +++ b/SolovevDD/docs/data/2-nd_exersize/results/results.csv @@ -0,0 +1,16 @@ +лабиринт,стратегия,время_мс,посещено_клеток,длина_пути +10x10_simple,BFS,0.0646,82,1 +10x10_simple,DFS,0.0633,82,1 +10x10_simple,AStar,0.0929,82,1 +50x50_with_deadends,BFS,1.3632,1687,0 +50x50_with_deadends,DFS,0.1943,400,205 +50x50_with_deadends,AStar,0.6863,562,101 +100x100_complex,BFS,4.8617,6060,1 +100x100_complex,DFS,4.6471,6060,1 +100x100_complex,AStar,7.4691,6060,1 +empty,BFS,0.6954,900,0 +empty,DFS,0.4106,900,465 +empty,AStar,1.0604,900,59 +no_exit,BFS,0.0017,1,1 +no_exit,DFS,0.0009,1,1 +no_exit,AStar,0.001,1,1 diff --git a/SolovevDD/docs/data/2-nd_exersize/results/time_comparison.png b/SolovevDD/docs/data/2-nd_exersize/results/time_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..9d2f13dd0f3b89ed041194f2ab4e12edd82fbfed GIT binary patch literal 74440 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

S2O&#c4tk5^*k5+2YE)6vez^vN(+gXzlQ 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 literal 0 HcmV?d00001 diff --git a/SolovevDD/docs/data/2-nd_exersize/results/visited_comparison.png b/SolovevDD/docs/data/2-nd_exersize/results/visited_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..519d296cef08e307b04481a23016c7834db4561b GIT binary patch literal 67363 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�C%~9}?5?Ax= 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 literal 0 HcmV?d00001 -- 2.43.0