From 091488afe94204076d9bf2c7870b367b236eef68 Mon Sep 17 00:00:00 2001 From: victorovaas Date: Sat, 5 Sep 2026 08:13:44 +0000 Subject: [PATCH 01/10] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20?= =?UTF-8?q?=C2=ABvictorovaas=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- victorovaas/experiments.py | 282 +++++++++++++++++++++++++++++++++++++ victorovaas/make_graphs.py | 123 ++++++++++++++++ 2 files changed, 405 insertions(+) create mode 100644 victorovaas/experiments.py create mode 100644 victorovaas/make_graphs.py diff --git a/victorovaas/experiments.py b/victorovaas/experiments.py new file mode 100644 index 0000000..72e83c0 --- /dev/null +++ b/victorovaas/experiments.py @@ -0,0 +1,282 @@ +import random +import time +import csv +import os +from lab1.phonebook import * + +def generate_test_data(n=10000): + + records = [(f"User_{i:05d}", f"+7-999-{i:07d}") 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 get_random_names(records, n=100): + return[name for name, _ in random.sample(records, min(n, len(records)))] + +def run_linked_experiments(records, mode_name): + + print(f"\n связный список ({mode_name}):") + + print("вставка 10000 записей:") + + insert_times = [] + for run in range(5): + start = time.perf_counter() + head = None + for name, phone in records: + head = ll_insert(head, name, phone) + end = time.perf_counter() + insert_times.append(end - start) + print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") + + avg_insert = sum(insert_times) / 5 + print(f"среднее: {avg_insert:.6f} сек") + + print("поиск 110 записей:") + + exist_names = get_random_names(records, 100) + non_exist_names = [f"None_{i}" for i in range(10)] + + find_times = [] + for run in range(5): + start = time.perf_counter() + + for name in exist_names: + ll_find(head, name) + for name in non_exist_names: + ll_find(head, name) + + end = time.perf_counter() + find_times.append(end - start) + print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") + + avg_find = sum(find_times) / 5 + print(f"среднее: {avg_find:.6f} сек") + + print("удаление 50 случайных записей:") + + to_delete = get_random_names(records,50) + + delete_times = [] + for run in range(5): + current_head = head + start = time.perf_counter() + for name in to_delete: + current_head = ll_delete(current_head, name) + end = time.perf_counter() + delete_times.append(end - start) + print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") + + avg_delete = sum(delete_times) / 5 + print(f"среднее: {avg_delete:.6f} сек") + + return{ + 'structure': 'LinkedList', + 'mode': mode_name, + 'insert_avg': avg_insert, + 'insert_all': insert_times, + 'find_avg': avg_find, + 'find_all': find_times, + 'delete_avg': avg_delete, + 'delete_all': delete_times + } + +def run_hash_experiments(records, mode_name): + + print(f"\n хеш-таблица({mode_name})") + + print("вставка 10000 записей:") + + insert_times = [] + for run in range(5): + start = time.perf_counter() + + buckets = ht_create(1000) + for name, phone in records: + buckets = ht_insert(buckets, name, phone) + + end = time.perf_counter() + insert_times.append(end - start) + print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") + + avg_insert = sum(insert_times) / 5 + print(f"среднее: {avg_insert:.6f} сек") + + print("поиск 110 записей:") + + exist_names = get_random_names(records, 100) + non_exist_names = [f"None_{i}" for i in range(10)] + + find_times = [] + for run in range(5): + start = time.perf_counter() + + for name in exist_names: + ht_find(buckets, name) + for name in non_exist_names: + ht_find(buckets, name) + + end = time.perf_counter() + find_times.append(end - start) + print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") + + avg_find = sum(find_times) / 5 + print(f"среднее: {avg_find:.6f} сек") + + print("удаление 50 случайных записей:") + + to_delete = get_random_names(records,50) + + delete_times = [] + for run in range(5): + current_buckets = buckets.copy() + start = time.perf_counter() + for name in to_delete: + current_buckets = ht_delete(current_buckets, name) + end = time.perf_counter() + delete_times.append(end - start) + print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") + + avg_delete = sum(delete_times) / 5 + print(f"среднее: {avg_delete:.6f} сек") + + return{ + 'structure': 'HashTable', + 'mode': mode_name, + 'insert_avg': avg_insert, + 'insert_all': insert_times, + 'find_avg': avg_find, + 'find_all': find_times, + 'delete_avg': avg_delete, + 'delete_all': delete_times + } + +def run_bst_experiments(records, mode_name): + + print(f"\n двоичное дерево({mode_name})") + + print("вставка 10000 записей:") + + insert_times = [] + for run in range(5): + start = time.perf_counter() + + root = None + for name, phone in records: + root = bst_insert(root, name, phone) + + end = time.perf_counter() + insert_times.append(end - start) + print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") + + avg_insert = sum(insert_times) / 5 + print(f"среднее: {avg_insert:.6f} сек") + + print("поиск 110 записей:") + + exist_names = get_random_names(records, 100) + non_exist_names = [f"None_{i}" for i in range(10)] + + find_times = [] + for run in range(5): + start = time.perf_counter() + + for name in exist_names: + bst_find(root, name) + for name in non_exist_names: + bst_find(root, name) + + end = time.perf_counter() + find_times.append(end - start) + print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") + + avg_find = sum(find_times) / 5 + print(f"среднее: {avg_find:.6f} сек") + + print("удаление 50 случайных записей:") + + to_delete = get_random_names(records,50) + + delete_times = [] + for run in range(5): + current_root = root + start = time.perf_counter() + for name in to_delete: + current_root = bst_delete(current_root, name) + end = time.perf_counter() + delete_times.append(end - start) + print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") + + avg_delete = sum(delete_times) / 5 + print(f"среднее: {avg_delete:.6f} сек") + + return{ + 'structure': 'BST', + 'mode': mode_name, + 'insert_avg': avg_insert, + 'insert_all': insert_times, + 'find_avg': avg_find, + 'find_all': find_times, + 'delete_avg': avg_delete, + 'delete_all': delete_times + } + +def save_results_to_csv(all_results): + + os.makedirs("docs/data", exist_ok=True) + + with open("docs/data/results.csv", "w", encoding="utf-8") as f: + + f.write("Структура, Режим, Операция, Замер, Время (сек)\n") + + for res in all_results: + struct = res['structure'] + mode = res['mode'] + + + for i, t in enumerate(res['insert_all']): + f.write(f"{struct},{mode},вставка,{i+1},{t}\n") + f.write(f"{struct},{mode},вставка,среднее,{res['insert_avg']}\n") + + + for i, t in enumerate(res['find_all']): + f.write(f"{struct},{mode},поиск,{i+1},{t}\n") + f.write(f"{struct},{mode},поиск,среднее,{res['find_avg']}\n") + + + for i, t in enumerate(res['delete_all']): + f.write(f"{struct},{mode},удаление,{i+1},{t}\n") + f.write(f"{struct},{mode},удаление,среднее,{res['delete_avg']}\n") + + +def main(): + print("эксперименты по замеру производительности") + + records_shuffled, records_sorted = generate_test_data(10000) + + all_results = [] + + print("режим: случайный порядок") + + all_results.append(run_linked_experiments(records_shuffled, "случайный")) + all_results.append(run_hash_experiments(records_shuffled, "случайный")) + all_results.append(run_bst_experiments(records_shuffled, "случайный")) + + print("режим: отсортированный порядок") + + all_results.append(run_linked_experiments(records_sorted, "отсортированный")) + all_results.append(run_hash_experiments(records_sorted, "отсортированный")) + all_results.append(run_bst_experiments(records_sorted, "отсортированный")) + + save_results_to_csv(all_results) + +if __name__== "__main__": + main() + + + diff --git a/victorovaas/make_graphs.py b/victorovaas/make_graphs.py new file mode 100644 index 0000000..e23e7b6 --- /dev/null +++ b/victorovaas/make_graphs.py @@ -0,0 +1,123 @@ + +import matplotlib.pyplot as plt +import numpy as np +import os + + +os.makedirs('docs/data', exist_ok=True) + + +structures = ['LinkedList', 'HashTable', 'BST'] + +random_insert = [0.0037545, 0.015088, 0.026280] +sorted_insert = [0.0017544, 0.011369, 4.930788] + +random_search = [0.00000962, 0.0001646, 0.0002592] +sorted_search = [0.00000858, 0.00014016, 0.047126] + +random_delete = [0.0000079, 0.00009824, 0.00016984] +sorted_delete = [0.00000294, 0.00005878, 0.023013] + +x = np.arange(len(structures)) +width = 0.35 + +#график вставка +fig, ax = plt.subplots(figsize=(12, 7)) + +bars1 = ax.bar(x - width/2, random_insert, width, label='Случайный порядок', color='#3498db') +bars2 = ax.bar(x + width/2, sorted_insert, width, label='Отсортированный порядок', color='#e74c3c') + + +for bar in bars1: + height = bar.get_height() + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +for bar in bars2: + height = bar.get_height() + if height < 1: + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + else: + ax.annotate(f'{height:.1f} сек', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 5), textcoords="offset points", ha='center', va='bottom', fontsize=10, fontweight='bold') + +ax.set_ylabel('Время (сек)', fontsize=12) +ax.set_title('Время вставки 10000 записей', fontsize=14, fontweight='bold') +ax.set_xticks(x) +ax.set_xticklabels(structures, fontsize=11) +ax.legend(fontsize=11) +ax.set_yscale('log') +ax.grid(True, alpha=0.3, axis='y') + +plt.tight_layout() +plt.savefig('docs/data/graph_insert.png', dpi=150, bbox_inches='tight') +plt.close() + + +# график поиск +fig, ax = plt.subplots(figsize=(12, 7)) + +bars1 = ax.bar(x - width/2, random_search, width, label='Случайный порядок', color='#3498db') +bars2 = ax.bar(x + width/2, sorted_search, width, label='Отсортированный порядок', color='#e74c3c') + +for bar in bars1: + height = bar.get_height() + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +for bar in bars2: + height = bar.get_height() + if height < 0.01: + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + else: + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +ax.set_ylabel('Время (сек)', fontsize=12) +ax.set_title('Время поиска 110 записей', fontsize=14, fontweight='bold') +ax.set_xticks(x) +ax.set_xticklabels(structures, fontsize=11) +ax.legend(fontsize=11) +ax.set_yscale('log') +ax.grid(True, alpha=0.3, axis='y') + +plt.tight_layout() +plt.savefig('docs/data/graph_search.png', dpi=150, bbox_inches='tight') +plt.close() + + +# график удаление +fig, ax = plt.subplots(figsize=(12, 7)) + +bars1 = ax.bar(x - width/2, random_delete, width, label='Случайный порядок', color='#3498db') +bars2 = ax.bar(x + width/2, sorted_delete, width, label='Отсортированный порядок', color='#e74c3c') + +for bar in bars1: + height = bar.get_height() + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +for bar in bars2: + height = bar.get_height() + if height < 0.01: + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + else: + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +ax.set_ylabel('Время (сек)', fontsize=12) +ax.set_title('Время удаления 50 записей', fontsize=14, fontweight='bold') +ax.set_xticks(x) +ax.set_xticklabels(structures, fontsize=11) +ax.legend(fontsize=11) +ax.set_yscale('log') +ax.grid(True, alpha=0.3, axis='y') + +plt.tight_layout() +plt.savefig('docs/data/graph_delete.png', dpi=150, bbox_inches='tight') +plt.close() + + From de3a8108fd45594ddae0cb43707954c522b5424f Mon Sep 17 00:00:00 2001 From: victorovaas Date: Sat, 5 Sep 2026 08:14:28 +0000 Subject: [PATCH 02/10] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20victorovaas/make=5Fgraphs.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- victorovaas/make_graphs.py | 123 ------------------------------------- 1 file changed, 123 deletions(-) delete mode 100644 victorovaas/make_graphs.py diff --git a/victorovaas/make_graphs.py b/victorovaas/make_graphs.py deleted file mode 100644 index e23e7b6..0000000 --- a/victorovaas/make_graphs.py +++ /dev/null @@ -1,123 +0,0 @@ - -import matplotlib.pyplot as plt -import numpy as np -import os - - -os.makedirs('docs/data', exist_ok=True) - - -structures = ['LinkedList', 'HashTable', 'BST'] - -random_insert = [0.0037545, 0.015088, 0.026280] -sorted_insert = [0.0017544, 0.011369, 4.930788] - -random_search = [0.00000962, 0.0001646, 0.0002592] -sorted_search = [0.00000858, 0.00014016, 0.047126] - -random_delete = [0.0000079, 0.00009824, 0.00016984] -sorted_delete = [0.00000294, 0.00005878, 0.023013] - -x = np.arange(len(structures)) -width = 0.35 - -#график вставка -fig, ax = plt.subplots(figsize=(12, 7)) - -bars1 = ax.bar(x - width/2, random_insert, width, label='Случайный порядок', color='#3498db') -bars2 = ax.bar(x + width/2, sorted_insert, width, label='Отсортированный порядок', color='#e74c3c') - - -for bar in bars1: - height = bar.get_height() - ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), - xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) - -for bar in bars2: - height = bar.get_height() - if height < 1: - ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), - xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) - else: - ax.annotate(f'{height:.1f} сек', xy=(bar.get_x() + bar.get_width()/2, height), - xytext=(0, 5), textcoords="offset points", ha='center', va='bottom', fontsize=10, fontweight='bold') - -ax.set_ylabel('Время (сек)', fontsize=12) -ax.set_title('Время вставки 10000 записей', fontsize=14, fontweight='bold') -ax.set_xticks(x) -ax.set_xticklabels(structures, fontsize=11) -ax.legend(fontsize=11) -ax.set_yscale('log') -ax.grid(True, alpha=0.3, axis='y') - -plt.tight_layout() -plt.savefig('docs/data/graph_insert.png', dpi=150, bbox_inches='tight') -plt.close() - - -# график поиск -fig, ax = plt.subplots(figsize=(12, 7)) - -bars1 = ax.bar(x - width/2, random_search, width, label='Случайный порядок', color='#3498db') -bars2 = ax.bar(x + width/2, sorted_search, width, label='Отсортированный порядок', color='#e74c3c') - -for bar in bars1: - height = bar.get_height() - ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), - xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) - -for bar in bars2: - height = bar.get_height() - if height < 0.01: - ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), - xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) - else: - ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), - xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) - -ax.set_ylabel('Время (сек)', fontsize=12) -ax.set_title('Время поиска 110 записей', fontsize=14, fontweight='bold') -ax.set_xticks(x) -ax.set_xticklabels(structures, fontsize=11) -ax.legend(fontsize=11) -ax.set_yscale('log') -ax.grid(True, alpha=0.3, axis='y') - -plt.tight_layout() -plt.savefig('docs/data/graph_search.png', dpi=150, bbox_inches='tight') -plt.close() - - -# график удаление -fig, ax = plt.subplots(figsize=(12, 7)) - -bars1 = ax.bar(x - width/2, random_delete, width, label='Случайный порядок', color='#3498db') -bars2 = ax.bar(x + width/2, sorted_delete, width, label='Отсортированный порядок', color='#e74c3c') - -for bar in bars1: - height = bar.get_height() - ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), - xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) - -for bar in bars2: - height = bar.get_height() - if height < 0.01: - ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), - xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) - else: - ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), - xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) - -ax.set_ylabel('Время (сек)', fontsize=12) -ax.set_title('Время удаления 50 записей', fontsize=14, fontweight='bold') -ax.set_xticks(x) -ax.set_xticklabels(structures, fontsize=11) -ax.legend(fontsize=11) -ax.set_yscale('log') -ax.grid(True, alpha=0.3, axis='y') - -plt.tight_layout() -plt.savefig('docs/data/graph_delete.png', dpi=150, bbox_inches='tight') -plt.close() - - From 78222d064e4dd2284f7b75810afc9a64f34e9ff3 Mon Sep 17 00:00:00 2001 From: victorovaas Date: Sat, 5 Sep 2026 08:14:34 +0000 Subject: [PATCH 03/10] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20victorovaas/experiments.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- victorovaas/experiments.py | 282 ------------------------------------- 1 file changed, 282 deletions(-) delete mode 100644 victorovaas/experiments.py diff --git a/victorovaas/experiments.py b/victorovaas/experiments.py deleted file mode 100644 index 72e83c0..0000000 --- a/victorovaas/experiments.py +++ /dev/null @@ -1,282 +0,0 @@ -import random -import time -import csv -import os -from lab1.phonebook import * - -def generate_test_data(n=10000): - - records = [(f"User_{i:05d}", f"+7-999-{i:07d}") 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 get_random_names(records, n=100): - return[name for name, _ in random.sample(records, min(n, len(records)))] - -def run_linked_experiments(records, mode_name): - - print(f"\n связный список ({mode_name}):") - - print("вставка 10000 записей:") - - insert_times = [] - for run in range(5): - start = time.perf_counter() - head = None - for name, phone in records: - head = ll_insert(head, name, phone) - end = time.perf_counter() - insert_times.append(end - start) - print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") - - avg_insert = sum(insert_times) / 5 - print(f"среднее: {avg_insert:.6f} сек") - - print("поиск 110 записей:") - - exist_names = get_random_names(records, 100) - non_exist_names = [f"None_{i}" for i in range(10)] - - find_times = [] - for run in range(5): - start = time.perf_counter() - - for name in exist_names: - ll_find(head, name) - for name in non_exist_names: - ll_find(head, name) - - end = time.perf_counter() - find_times.append(end - start) - print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") - - avg_find = sum(find_times) / 5 - print(f"среднее: {avg_find:.6f} сек") - - print("удаление 50 случайных записей:") - - to_delete = get_random_names(records,50) - - delete_times = [] - for run in range(5): - current_head = head - start = time.perf_counter() - for name in to_delete: - current_head = ll_delete(current_head, name) - end = time.perf_counter() - delete_times.append(end - start) - print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") - - avg_delete = sum(delete_times) / 5 - print(f"среднее: {avg_delete:.6f} сек") - - return{ - 'structure': 'LinkedList', - 'mode': mode_name, - 'insert_avg': avg_insert, - 'insert_all': insert_times, - 'find_avg': avg_find, - 'find_all': find_times, - 'delete_avg': avg_delete, - 'delete_all': delete_times - } - -def run_hash_experiments(records, mode_name): - - print(f"\n хеш-таблица({mode_name})") - - print("вставка 10000 записей:") - - insert_times = [] - for run in range(5): - start = time.perf_counter() - - buckets = ht_create(1000) - for name, phone in records: - buckets = ht_insert(buckets, name, phone) - - end = time.perf_counter() - insert_times.append(end - start) - print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") - - avg_insert = sum(insert_times) / 5 - print(f"среднее: {avg_insert:.6f} сек") - - print("поиск 110 записей:") - - exist_names = get_random_names(records, 100) - non_exist_names = [f"None_{i}" for i in range(10)] - - find_times = [] - for run in range(5): - start = time.perf_counter() - - for name in exist_names: - ht_find(buckets, name) - for name in non_exist_names: - ht_find(buckets, name) - - end = time.perf_counter() - find_times.append(end - start) - print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") - - avg_find = sum(find_times) / 5 - print(f"среднее: {avg_find:.6f} сек") - - print("удаление 50 случайных записей:") - - to_delete = get_random_names(records,50) - - delete_times = [] - for run in range(5): - current_buckets = buckets.copy() - start = time.perf_counter() - for name in to_delete: - current_buckets = ht_delete(current_buckets, name) - end = time.perf_counter() - delete_times.append(end - start) - print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") - - avg_delete = sum(delete_times) / 5 - print(f"среднее: {avg_delete:.6f} сек") - - return{ - 'structure': 'HashTable', - 'mode': mode_name, - 'insert_avg': avg_insert, - 'insert_all': insert_times, - 'find_avg': avg_find, - 'find_all': find_times, - 'delete_avg': avg_delete, - 'delete_all': delete_times - } - -def run_bst_experiments(records, mode_name): - - print(f"\n двоичное дерево({mode_name})") - - print("вставка 10000 записей:") - - insert_times = [] - for run in range(5): - start = time.perf_counter() - - root = None - for name, phone in records: - root = bst_insert(root, name, phone) - - end = time.perf_counter() - insert_times.append(end - start) - print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") - - avg_insert = sum(insert_times) / 5 - print(f"среднее: {avg_insert:.6f} сек") - - print("поиск 110 записей:") - - exist_names = get_random_names(records, 100) - non_exist_names = [f"None_{i}" for i in range(10)] - - find_times = [] - for run in range(5): - start = time.perf_counter() - - for name in exist_names: - bst_find(root, name) - for name in non_exist_names: - bst_find(root, name) - - end = time.perf_counter() - find_times.append(end - start) - print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") - - avg_find = sum(find_times) / 5 - print(f"среднее: {avg_find:.6f} сек") - - print("удаление 50 случайных записей:") - - to_delete = get_random_names(records,50) - - delete_times = [] - for run in range(5): - current_root = root - start = time.perf_counter() - for name in to_delete: - current_root = bst_delete(current_root, name) - end = time.perf_counter() - delete_times.append(end - start) - print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") - - avg_delete = sum(delete_times) / 5 - print(f"среднее: {avg_delete:.6f} сек") - - return{ - 'structure': 'BST', - 'mode': mode_name, - 'insert_avg': avg_insert, - 'insert_all': insert_times, - 'find_avg': avg_find, - 'find_all': find_times, - 'delete_avg': avg_delete, - 'delete_all': delete_times - } - -def save_results_to_csv(all_results): - - os.makedirs("docs/data", exist_ok=True) - - with open("docs/data/results.csv", "w", encoding="utf-8") as f: - - f.write("Структура, Режим, Операция, Замер, Время (сек)\n") - - for res in all_results: - struct = res['structure'] - mode = res['mode'] - - - for i, t in enumerate(res['insert_all']): - f.write(f"{struct},{mode},вставка,{i+1},{t}\n") - f.write(f"{struct},{mode},вставка,среднее,{res['insert_avg']}\n") - - - for i, t in enumerate(res['find_all']): - f.write(f"{struct},{mode},поиск,{i+1},{t}\n") - f.write(f"{struct},{mode},поиск,среднее,{res['find_avg']}\n") - - - for i, t in enumerate(res['delete_all']): - f.write(f"{struct},{mode},удаление,{i+1},{t}\n") - f.write(f"{struct},{mode},удаление,среднее,{res['delete_avg']}\n") - - -def main(): - print("эксперименты по замеру производительности") - - records_shuffled, records_sorted = generate_test_data(10000) - - all_results = [] - - print("режим: случайный порядок") - - all_results.append(run_linked_experiments(records_shuffled, "случайный")) - all_results.append(run_hash_experiments(records_shuffled, "случайный")) - all_results.append(run_bst_experiments(records_shuffled, "случайный")) - - print("режим: отсортированный порядок") - - all_results.append(run_linked_experiments(records_sorted, "отсортированный")) - all_results.append(run_hash_experiments(records_sorted, "отсортированный")) - all_results.append(run_bst_experiments(records_sorted, "отсортированный")) - - save_results_to_csv(all_results) - -if __name__== "__main__": - main() - - - From 1f488408aaa8c14ef2a77cc176d2f9fc36a6ac86 Mon Sep 17 00:00:00 2001 From: victorovaas Date: Sat, 5 Sep 2026 08:15:51 +0000 Subject: [PATCH 04/10] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20victorovaas/lab1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- victorovaas/lab1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 victorovaas/lab1 diff --git a/victorovaas/lab1 b/victorovaas/lab1 new file mode 100644 index 0000000..e69de29 From ac36eb6c8179fd67c4743078d04337cf0e389c0a Mon Sep 17 00:00:00 2001 From: victorovaas Date: Sat, 5 Sep 2026 08:17:21 +0000 Subject: [PATCH 05/10] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20victorovaas/lab1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- victorovaas/lab1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 victorovaas/lab1 diff --git a/victorovaas/lab1 b/victorovaas/lab1 deleted file mode 100644 index e69de29..0000000 From 56e881192a80bd1f1b0d47cd6bf033229412104f Mon Sep 17 00:00:00 2001 From: victorovaas Date: Sat, 5 Sep 2026 08:18:52 +0000 Subject: [PATCH 06/10] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20victorovaas/lab1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- victorovaas/lab1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 victorovaas/lab1 diff --git a/victorovaas/lab1 b/victorovaas/lab1 new file mode 100644 index 0000000..e69de29 From 82c6dd2718333b203415d4015ebccc50001caa8d Mon Sep 17 00:00:00 2001 From: victorovaas Date: Sat, 5 Sep 2026 08:19:47 +0000 Subject: [PATCH 07/10] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20?= =?UTF-8?q?=C2=ABvictorovaas=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- victorovaas/experiments.py | 282 +++++++++++++++++++++++++++++++++++++ victorovaas/make_graphs.py | 123 ++++++++++++++++ 2 files changed, 405 insertions(+) create mode 100644 victorovaas/experiments.py create mode 100644 victorovaas/make_graphs.py diff --git a/victorovaas/experiments.py b/victorovaas/experiments.py new file mode 100644 index 0000000..72e83c0 --- /dev/null +++ b/victorovaas/experiments.py @@ -0,0 +1,282 @@ +import random +import time +import csv +import os +from lab1.phonebook import * + +def generate_test_data(n=10000): + + records = [(f"User_{i:05d}", f"+7-999-{i:07d}") 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 get_random_names(records, n=100): + return[name for name, _ in random.sample(records, min(n, len(records)))] + +def run_linked_experiments(records, mode_name): + + print(f"\n связный список ({mode_name}):") + + print("вставка 10000 записей:") + + insert_times = [] + for run in range(5): + start = time.perf_counter() + head = None + for name, phone in records: + head = ll_insert(head, name, phone) + end = time.perf_counter() + insert_times.append(end - start) + print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") + + avg_insert = sum(insert_times) / 5 + print(f"среднее: {avg_insert:.6f} сек") + + print("поиск 110 записей:") + + exist_names = get_random_names(records, 100) + non_exist_names = [f"None_{i}" for i in range(10)] + + find_times = [] + for run in range(5): + start = time.perf_counter() + + for name in exist_names: + ll_find(head, name) + for name in non_exist_names: + ll_find(head, name) + + end = time.perf_counter() + find_times.append(end - start) + print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") + + avg_find = sum(find_times) / 5 + print(f"среднее: {avg_find:.6f} сек") + + print("удаление 50 случайных записей:") + + to_delete = get_random_names(records,50) + + delete_times = [] + for run in range(5): + current_head = head + start = time.perf_counter() + for name in to_delete: + current_head = ll_delete(current_head, name) + end = time.perf_counter() + delete_times.append(end - start) + print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") + + avg_delete = sum(delete_times) / 5 + print(f"среднее: {avg_delete:.6f} сек") + + return{ + 'structure': 'LinkedList', + 'mode': mode_name, + 'insert_avg': avg_insert, + 'insert_all': insert_times, + 'find_avg': avg_find, + 'find_all': find_times, + 'delete_avg': avg_delete, + 'delete_all': delete_times + } + +def run_hash_experiments(records, mode_name): + + print(f"\n хеш-таблица({mode_name})") + + print("вставка 10000 записей:") + + insert_times = [] + for run in range(5): + start = time.perf_counter() + + buckets = ht_create(1000) + for name, phone in records: + buckets = ht_insert(buckets, name, phone) + + end = time.perf_counter() + insert_times.append(end - start) + print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") + + avg_insert = sum(insert_times) / 5 + print(f"среднее: {avg_insert:.6f} сек") + + print("поиск 110 записей:") + + exist_names = get_random_names(records, 100) + non_exist_names = [f"None_{i}" for i in range(10)] + + find_times = [] + for run in range(5): + start = time.perf_counter() + + for name in exist_names: + ht_find(buckets, name) + for name in non_exist_names: + ht_find(buckets, name) + + end = time.perf_counter() + find_times.append(end - start) + print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") + + avg_find = sum(find_times) / 5 + print(f"среднее: {avg_find:.6f} сек") + + print("удаление 50 случайных записей:") + + to_delete = get_random_names(records,50) + + delete_times = [] + for run in range(5): + current_buckets = buckets.copy() + start = time.perf_counter() + for name in to_delete: + current_buckets = ht_delete(current_buckets, name) + end = time.perf_counter() + delete_times.append(end - start) + print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") + + avg_delete = sum(delete_times) / 5 + print(f"среднее: {avg_delete:.6f} сек") + + return{ + 'structure': 'HashTable', + 'mode': mode_name, + 'insert_avg': avg_insert, + 'insert_all': insert_times, + 'find_avg': avg_find, + 'find_all': find_times, + 'delete_avg': avg_delete, + 'delete_all': delete_times + } + +def run_bst_experiments(records, mode_name): + + print(f"\n двоичное дерево({mode_name})") + + print("вставка 10000 записей:") + + insert_times = [] + for run in range(5): + start = time.perf_counter() + + root = None + for name, phone in records: + root = bst_insert(root, name, phone) + + end = time.perf_counter() + insert_times.append(end - start) + print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") + + avg_insert = sum(insert_times) / 5 + print(f"среднее: {avg_insert:.6f} сек") + + print("поиск 110 записей:") + + exist_names = get_random_names(records, 100) + non_exist_names = [f"None_{i}" for i in range(10)] + + find_times = [] + for run in range(5): + start = time.perf_counter() + + for name in exist_names: + bst_find(root, name) + for name in non_exist_names: + bst_find(root, name) + + end = time.perf_counter() + find_times.append(end - start) + print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") + + avg_find = sum(find_times) / 5 + print(f"среднее: {avg_find:.6f} сек") + + print("удаление 50 случайных записей:") + + to_delete = get_random_names(records,50) + + delete_times = [] + for run in range(5): + current_root = root + start = time.perf_counter() + for name in to_delete: + current_root = bst_delete(current_root, name) + end = time.perf_counter() + delete_times.append(end - start) + print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") + + avg_delete = sum(delete_times) / 5 + print(f"среднее: {avg_delete:.6f} сек") + + return{ + 'structure': 'BST', + 'mode': mode_name, + 'insert_avg': avg_insert, + 'insert_all': insert_times, + 'find_avg': avg_find, + 'find_all': find_times, + 'delete_avg': avg_delete, + 'delete_all': delete_times + } + +def save_results_to_csv(all_results): + + os.makedirs("docs/data", exist_ok=True) + + with open("docs/data/results.csv", "w", encoding="utf-8") as f: + + f.write("Структура, Режим, Операция, Замер, Время (сек)\n") + + for res in all_results: + struct = res['structure'] + mode = res['mode'] + + + for i, t in enumerate(res['insert_all']): + f.write(f"{struct},{mode},вставка,{i+1},{t}\n") + f.write(f"{struct},{mode},вставка,среднее,{res['insert_avg']}\n") + + + for i, t in enumerate(res['find_all']): + f.write(f"{struct},{mode},поиск,{i+1},{t}\n") + f.write(f"{struct},{mode},поиск,среднее,{res['find_avg']}\n") + + + for i, t in enumerate(res['delete_all']): + f.write(f"{struct},{mode},удаление,{i+1},{t}\n") + f.write(f"{struct},{mode},удаление,среднее,{res['delete_avg']}\n") + + +def main(): + print("эксперименты по замеру производительности") + + records_shuffled, records_sorted = generate_test_data(10000) + + all_results = [] + + print("режим: случайный порядок") + + all_results.append(run_linked_experiments(records_shuffled, "случайный")) + all_results.append(run_hash_experiments(records_shuffled, "случайный")) + all_results.append(run_bst_experiments(records_shuffled, "случайный")) + + print("режим: отсортированный порядок") + + all_results.append(run_linked_experiments(records_sorted, "отсортированный")) + all_results.append(run_hash_experiments(records_sorted, "отсортированный")) + all_results.append(run_bst_experiments(records_sorted, "отсортированный")) + + save_results_to_csv(all_results) + +if __name__== "__main__": + main() + + + diff --git a/victorovaas/make_graphs.py b/victorovaas/make_graphs.py new file mode 100644 index 0000000..e23e7b6 --- /dev/null +++ b/victorovaas/make_graphs.py @@ -0,0 +1,123 @@ + +import matplotlib.pyplot as plt +import numpy as np +import os + + +os.makedirs('docs/data', exist_ok=True) + + +structures = ['LinkedList', 'HashTable', 'BST'] + +random_insert = [0.0037545, 0.015088, 0.026280] +sorted_insert = [0.0017544, 0.011369, 4.930788] + +random_search = [0.00000962, 0.0001646, 0.0002592] +sorted_search = [0.00000858, 0.00014016, 0.047126] + +random_delete = [0.0000079, 0.00009824, 0.00016984] +sorted_delete = [0.00000294, 0.00005878, 0.023013] + +x = np.arange(len(structures)) +width = 0.35 + +#график вставка +fig, ax = plt.subplots(figsize=(12, 7)) + +bars1 = ax.bar(x - width/2, random_insert, width, label='Случайный порядок', color='#3498db') +bars2 = ax.bar(x + width/2, sorted_insert, width, label='Отсортированный порядок', color='#e74c3c') + + +for bar in bars1: + height = bar.get_height() + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +for bar in bars2: + height = bar.get_height() + if height < 1: + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + else: + ax.annotate(f'{height:.1f} сек', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 5), textcoords="offset points", ha='center', va='bottom', fontsize=10, fontweight='bold') + +ax.set_ylabel('Время (сек)', fontsize=12) +ax.set_title('Время вставки 10000 записей', fontsize=14, fontweight='bold') +ax.set_xticks(x) +ax.set_xticklabels(structures, fontsize=11) +ax.legend(fontsize=11) +ax.set_yscale('log') +ax.grid(True, alpha=0.3, axis='y') + +plt.tight_layout() +plt.savefig('docs/data/graph_insert.png', dpi=150, bbox_inches='tight') +plt.close() + + +# график поиск +fig, ax = plt.subplots(figsize=(12, 7)) + +bars1 = ax.bar(x - width/2, random_search, width, label='Случайный порядок', color='#3498db') +bars2 = ax.bar(x + width/2, sorted_search, width, label='Отсортированный порядок', color='#e74c3c') + +for bar in bars1: + height = bar.get_height() + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +for bar in bars2: + height = bar.get_height() + if height < 0.01: + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + else: + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +ax.set_ylabel('Время (сек)', fontsize=12) +ax.set_title('Время поиска 110 записей', fontsize=14, fontweight='bold') +ax.set_xticks(x) +ax.set_xticklabels(structures, fontsize=11) +ax.legend(fontsize=11) +ax.set_yscale('log') +ax.grid(True, alpha=0.3, axis='y') + +plt.tight_layout() +plt.savefig('docs/data/graph_search.png', dpi=150, bbox_inches='tight') +plt.close() + + +# график удаление +fig, ax = plt.subplots(figsize=(12, 7)) + +bars1 = ax.bar(x - width/2, random_delete, width, label='Случайный порядок', color='#3498db') +bars2 = ax.bar(x + width/2, sorted_delete, width, label='Отсортированный порядок', color='#e74c3c') + +for bar in bars1: + height = bar.get_height() + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +for bar in bars2: + height = bar.get_height() + if height < 0.01: + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + else: + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +ax.set_ylabel('Время (сек)', fontsize=12) +ax.set_title('Время удаления 50 записей', fontsize=14, fontweight='bold') +ax.set_xticks(x) +ax.set_xticklabels(structures, fontsize=11) +ax.legend(fontsize=11) +ax.set_yscale('log') +ax.grid(True, alpha=0.3, axis='y') + +plt.tight_layout() +plt.savefig('docs/data/graph_delete.png', dpi=150, bbox_inches='tight') +plt.close() + + From 106ea57b17f52eaf7feab0435366cefadeb5be0c Mon Sep 17 00:00:00 2001 From: victorovaas Date: Sat, 5 Sep 2026 11:45:48 +0300 Subject: [PATCH 08/10] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B2=D1=83=D1=8E=20=D0=BB?= =?UTF-8?q?=D0=B0=D0=B1=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- victorovaas/docs/graph_delete.png | Bin 0 -> 47379 bytes victorovaas/docs/graph_insert.png | Bin 0 -> 46679 bytes victorovaas/docs/graph_search.png | Bin 0 -> 47055 bytes victorovaas/docs/results.csv | 109 +++++++++++++ victorovaas/docs/отчет.ipynb | 259 ++++++++++++++++++++++++++++++ victorovaas/lab1 | 0 victorovaas/lab1/phonebook.py | 195 ++++++++++++++++++++++ 7 files changed, 563 insertions(+) create mode 100644 victorovaas/docs/graph_delete.png create mode 100644 victorovaas/docs/graph_insert.png create mode 100644 victorovaas/docs/graph_search.png create mode 100644 victorovaas/docs/results.csv create mode 100644 victorovaas/docs/отчет.ipynb delete mode 100644 victorovaas/lab1 create mode 100644 victorovaas/lab1/phonebook.py diff --git a/victorovaas/docs/graph_delete.png b/victorovaas/docs/graph_delete.png new file mode 100644 index 0000000000000000000000000000000000000000..9d348a3cf7ac6ddd9a10caf11738a764bfbb4c96 GIT binary patch literal 47379 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 A0RR91 literal 0 HcmV?d00001 diff --git a/victorovaas/docs/graph_search.png b/victorovaas/docs/graph_search.png new file mode 100644 index 0000000000000000000000000000000000000000..5f6ef8e3f9c1696a132d1065b97e4bc3a8142be3 GIT binary patch literal 47055 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%0Dr8{<$^QIqZ3hGsYU%gCGJGZZ?8VV3#cR%G$s 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 PZ|&Z$x-DkQk@No-a>N6| literal 0 HcmV?d00001 diff --git a/victorovaas/docs/results.csv b/victorovaas/docs/results.csv new file mode 100644 index 0000000..6294cdd --- /dev/null +++ b/victorovaas/docs/results.csv @@ -0,0 +1,109 @@ +Структура, Режим, Операция, Замер, Время (сек) +LinkedList,случайный,вставка,1,0.002888800110667944 +LinkedList,случайный,вставка,2,0.0021659000776708126 +LinkedList,случайный,вставка,3,0.0017211001832038164 +LinkedList,случайный,вставка,4,0.0030869999900460243 +LinkedList,случайный,вставка,5,0.001962300157174468 +LinkedList,случайный,вставка,среднее,0.002365020103752613 +LinkedList,случайный,поиск,1,2.210005186498165e-05 +LinkedList,случайный,поиск,2,2.5300076231360435e-05 +LinkedList,случайный,поиск,3,7.3998235166072845e-06 +LinkedList,случайный,поиск,4,6.360001862049103e-05 +LinkedList,случайный,поиск,5,1.1400086805224419e-05 +LinkedList,случайный,поиск,среднее,2.5960011407732962e-05 +LinkedList,случайный,удаление,1,3.4999102354049683e-06 +LinkedList,случайный,удаление,2,3.600027412176132e-06 +LinkedList,случайный,удаление,3,3.8000289350748062e-06 +LinkedList,случайный,удаление,4,3.700144588947296e-06 +LinkedList,случайный,удаление,5,1.2399861589074135e-05 +LinkedList,случайный,удаление,среднее,5.399994552135467e-06 +HashTable,случайный,вставка,1,0.012187300017103553 +HashTable,случайный,вставка,2,0.013890399830415845 +HashTable,случайный,вставка,3,0.016815599985420704 +HashTable,случайный,вставка,4,0.015115999849513173 +HashTable,случайный,вставка,5,0.016828800085932016 +HashTable,случайный,вставка,среднее,0.014967619953677059 +HashTable,случайный,поиск,1,0.00015189987607300282 +HashTable,случайный,поиск,2,0.00014359992928802967 +HashTable,случайный,поиск,3,0.0001275001559406519 +HashTable,случайный,поиск,4,0.00013029994443058968 +HashTable,случайный,поиск,5,0.00012869993224740028 +HashTable,случайный,поиск,среднее,0.00013639996759593487 +HashTable,случайный,удаление,1,6.400002166628838e-05 +HashTable,случайный,удаление,2,6.669992581009865e-05 +HashTable,случайный,удаление,3,6.220000796020031e-05 +HashTable,случайный,удаление,4,6.079999729990959e-05 +HashTable,случайный,удаление,5,6.149988621473312e-05 +HashTable,случайный,удаление,среднее,6.3039967790246e-05 +BST,случайный,вставка,1,0.02116320002824068 +BST,случайный,вставка,2,0.030665799975395203 +BST,случайный,вставка,3,0.03345289989374578 +BST,случайный,вставка,4,0.024382099974900484 +BST,случайный,вставка,5,0.023698499891906977 +BST,случайный,вставка,среднее,0.026672499952837825 +BST,случайный,поиск,1,0.000593199860304594 +BST,случайный,поиск,2,0.0002499001566320658 +BST,случайный,поиск,3,0.00023610005155205727 +BST,случайный,поиск,4,0.0002258999738842249 +BST,случайный,поиск,5,0.00021369988098740578 +BST,случайный,поиск,среднее,0.00030375998467206954 +BST,случайный,удаление,1,0.00013720011338591576 +BST,случайный,удаление,2,0.00014800019562244415 +BST,случайный,удаление,3,0.00013739988207817078 +BST,случайный,удаление,4,0.00011579995043575764 +BST,случайный,удаление,5,0.000120899872854352 +BST,случайный,удаление,среднее,0.00013186000287532807 +LinkedList,отсортированный,вставка,1,0.001382600050419569 +LinkedList,отсортированный,вставка,2,0.001325399847701192 +LinkedList,отсортированный,вставка,3,0.0017267998773604631 +LinkedList,отсортированный,вставка,4,0.0014553999062627554 +LinkedList,отсортированный,вставка,5,0.0015736999921500683 +LinkedList,отсортированный,вставка,среднее,0.0014927799347788095 +LinkedList,отсортированный,поиск,1,6.700167432427406e-06 +LinkedList,отсортированный,поиск,2,4.440010525286198e-05 +LinkedList,отсортированный,поиск,3,1.71000137925148e-05 +LinkedList,отсортированный,поиск,4,1.2999866157770157e-05 +LinkedList,отсортированный,поиск,5,1.309998333454132e-05 +LinkedList,отсортированный,поиск,среднее,1.886002719402313e-05 +LinkedList,отсортированный,удаление,1,3.400025889277458e-06 +LinkedList,отсортированный,удаление,2,8.100178092718124e-06 +LinkedList,отсортированный,удаление,3,6.5998174250125885e-06 +LinkedList,отсортированный,удаление,4,7.0999376475811005e-06 +LinkedList,отсортированный,удаление,5,4.400033503770828e-06 +LinkedList,отсортированный,удаление,среднее,5.91999851167202e-06 +HashTable,отсортированный,вставка,1,0.011284200008958578 +HashTable,отсортированный,вставка,2,0.010727699846029282 +HashTable,отсортированный,вставка,3,0.01438950002193451 +HashTable,отсортированный,вставка,4,0.01296229986473918 +HashTable,отсортированный,вставка,5,0.01131929992698133 +HashTable,отсортированный,вставка,среднее,0.012136599933728575 +HashTable,отсортированный,поиск,1,0.0003611000720411539 +HashTable,отсортированный,поиск,2,0.0001191999763250351 +HashTable,отсортированный,поиск,3,9.760004468262196e-05 +HashTable,отсортированный,поиск,4,9.760004468262196e-05 +HashTable,отсортированный,поиск,5,9.860005229711533e-05 +HashTable,отсортированный,поиск,среднее,0.00015482003800570965 +HashTable,отсортированный,удаление,1,4.630000330507755e-05 +HashTable,отсортированный,удаление,2,7.409998215734959e-05 +HashTable,отсортированный,удаление,3,5.159992724657059e-05 +HashTable,отсортированный,удаление,4,4.519987851381302e-05 +HashTable,отсортированный,удаление,5,4.630000330507755e-05 +HashTable,отсортированный,удаление,среднее,5.269995890557766e-05 +BST,отсортированный,вставка,1,5.333359000040218 +BST,отсортированный,вставка,2,6.843581699999049 +BST,отсортированный,вставка,3,7.348331299843267 +BST,отсортированный,вставка,4,6.589022800093517 +BST,отсортированный,вставка,5,6.936362499836832 +BST,отсортированный,вставка,среднее,6.6101314599625765 +BST,отсортированный,поиск,1,0.03562769992277026 +BST,отсортированный,поиск,2,0.058094599982723594 +BST,отсортированный,поиск,3,0.05625390005297959 +BST,отсортированный,поиск,4,0.0391436000354588 +BST,отсортированный,поиск,5,0.05448610009625554 +BST,отсортированный,поиск,среднее,0.04872118001803756 +BST,отсортированный,удаление,1,0.024612600216642022 +BST,отсортированный,удаление,2,0.017923400038853288 +BST,отсортированный,удаление,3,0.021369999973103404 +BST,отсортированный,удаление,4,0.025744799990206957 +BST,отсортированный,удаление,5,0.03334249998442829 +BST,отсортированный,удаление,среднее,0.024598660040646793 diff --git a/victorovaas/docs/отчет.ipynb b/victorovaas/docs/отчет.ipynb new file mode 100644 index 0000000..298c9d5 --- /dev/null +++ b/victorovaas/docs/отчет.ipynb @@ -0,0 +1,259 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d7f65344", + "metadata": {}, + "source": [ + "# Отчёт \n", + "## Телефонный справочник: реализация и сравнение структур данных\n", + "\n", + "**Студент:** Викторова А.С.\n", + "**Группа:** 429\n", + "**Дата:** 01.09.2026" + ] + }, + { + "cell_type": "markdown", + "id": "f69aa231", + "metadata": {}, + "source": [ + "## Введение\n", + "\n", + "### О чем работа.\n", + "В данной работе рассматриваются три базовые структуры данных:\n", + "- Связный список (LinkedList)\n", + "- Хеш-таблица (HashTable)\n", + "- Двоичное дерево поиска (BST)\n", + "\n", + "Они применяются для хранения записей телефонного справочника.\n", + "\n", + "### Цель всей работы\n", + "Реализовать три структуры данных «с нуля», применить их для хранения записей телефонного справочника и экспериментально сравнить производительность основных операций (вставка, поиск, удаление).\n", + "\n", + "### Задачи по достижению цели\n", + "1. Реализовать связный список с операциями insert, find, delete, list_all\n", + "2. Реализовать хеш-таблицу на основе связных списков\n", + "3. Реализовать двоичное дерево поиска\n", + "4. Сгенерировать тестовые данные (10000 записей)\n", + "5. Провести замеры времени для каждой структуры (5 повторений)\n", + "6. Сравнить результаты и сделать выводы" + ] + }, + { + "cell_type": "markdown", + "id": "56e2f617", + "metadata": {}, + "source": [ + "## Часть 1. Общая информация о структурах данных\n", + "\n", + "### 1.1 Для неспециалистов\n", + "\n", + "**Что такое структура данных?**\n", + "Это способ организации и хранения данных в компьютере.\n", + "\n", + "**Три структуры из работы:**\n", + "\n", + "| Структура | Как работает | Пример из жизни |\n", + "|-----------|--------------|-----------------|\n", + "| Связный список | Цепочка элементов, где каждый знает следующий | Верёвка с узелками |\n", + "| Хеш-таблица | Массив корзин, элемент попадает в корзину по номеру | Картотека с ящиками |\n", + "| Двоичное дерево | Иерархическая структура: левые меньше, правые больше | Телефонный справочник |\n", + "\n", + "### 1.2 Обзор технологий\n", + "\n", + "**Связный список**\n", + "- Узел: `{'name': str, 'phone': str, 'next': None}`\n", + "- Вставка: O(1) в начало, O(n) в конец\n", + "- Поиск: O(n) - линейный обход\n", + "- Удаление: O(n) - сначала найти\n", + "\n", + "**Хеш-таблица**\n", + "- Корзины: список из None или голов списков\n", + "- Хеш-функция: `hash = (hash * 31 + ord(ch)) % size`\n", + "- Вставка/поиск/удаление: O(1) в среднем\n", + "\n", + "**Двоичное дерево поиска (BST)**\n", + "- Узел: `{'name': str, 'phone': str, 'left': None, 'right': None}`\n", + "- Вставка/поиск/удаление: O(log n) в среднем, O(n) в худшем\n", + "\n", + "### 1.3 Обоснование выбора подхода\n", + "\n", + "**Почему именно эти структуры?**\n", + "1. Они фундаментальны и изучаются в курсе\n", + "2. Показывают разные компромиссы (скорость vs порядок)\n", + "3. Позволяют наглядно сравнить производительность\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "d9327709", + "metadata": {}, + "source": [ + "## Часть 2. Техническая реализация\n", + "\n", + "### 2.1 Постановка задачи\n", + "\n", + "Реализовать телефонный справочник с операциями:\n", + "- `insert(name, phone)` — добавить или обновить запись\n", + "- `find(name)` — вернуть телефон или None\n", + "- `delete(name)` — удалить запись\n", + "- `list_all()` — вернуть все записи, отсортированные по имени\n", + "\n", + "### 2.2 Верхнеуровневое решение\n", + "\n", + "**Связный список (LinkedList)**\n", + "- `ll_insert(head, name, phone)` — добавление в конец, возвращает голову\n", + "- `ll_find(head, name)` — линейный поиск, возвращает телефон или None\n", + "- `ll_delete(head, name)` — удаление с перепривязкой, возвращает голову\n", + "- `ll_list_all(head)` — сбор всех записей и сортировка\n", + "\n", + "**Хеш-таблица (HashTable)**\n", + "- `hash_function(name, size)` — ключ → номер корзины\n", + "- `ht_create(size)` — создание таблицы\n", + "- `ht_insert(buckets, name, phone)` — вызов ll_insert для нужной корзины\n", + "- `ht_find(buckets, name)` — вызов ll_find для нужной корзины\n", + "- `ht_delete(buckets, name)` — вызов ll_delete для нужной корзины\n", + "- `ht_list_all(buckets)` — сбор из всех корзин + сортировка\n", + "\n", + "**Двоичное дерево (BST)**\n", + "- `bst_insert(root, name, phone)` — итеративная вставка\n", + "- `bst_find(root, name)` — поиск\n", + "- `bst_delete(root, name)` — удаление с поиском преемника\n", + "- `bst_list_all(root)` — in-order обход (уже отсортировано)" + ] + }, + { + "cell_type": "markdown", + "id": "c1cd08d8", + "metadata": {}, + "source": [ + "## Часть 3. Эксперименты и результаты\n", + "\n", + "### 3.1 Инструменты и методика\n", + "\n", + "**Параметры эксперимента:**\n", + "- Количество записей: 10 000\n", + "- Количество повторений: 5\n", + "- Поиск: 100 существующих + 10 несуществующих\n", + "- Удаление: 50 случайных записей\n", + "- Режимы: случайный порядок, отсортированный порядок\n", + "\n", + "### 3.2 Результаты" + ] + }, + { + "cell_type": "markdown", + "id": "94634c57", + "metadata": {}, + "source": [ + "![Таблица результатов](data/table_results.png)\n", + "\n", + "*Таблица 1 - Результаты экспериментов (среднее время в секундах)*" + ] + }, + { + "cell_type": "markdown", + "id": "5689bbd0", + "metadata": {}, + "source": [ + "### 3.3 Графики\n", + "\n", + "#### График 1: Время вставки 10000 записей\n", + "\n", + "![Вставка](data/graph_insert.png)\n", + "\n", + "#### График 2: Время поиска 110 записей\n", + "\n", + "![Поиск](data/graph_search.png)\n", + "\n", + "#### График 3: Время удаления 50 записей\n", + "\n", + "![Удаление](data/graph_delete.png)" + ] + }, + { + "cell_type": "markdown", + "id": "5561d9dd", + "metadata": {}, + "source": [ + "### 3.4 Сравнение и анализ\n", + "\n", + "**Как порядок входных данных влияет на BST?**\n", + "\n", + "| Режим | Вставка | Поиск | Удаление |\n", + "|-------|---------|-------|----------|\n", + "| Случайный | 0.026 сек | 0.00026 сек | 0.00017 сек |\n", + "| Отсортированный | 4.931 сек | 0.047 сек | 0.023 сек |\n", + "\n", + "Вывод: На случайных данных BST работает быстро (O(log n)). На отсортированных данных BST вырождается в связный список (O(n)). Работает медленее в 190 раз.\n", + "\n", + "**Техническая ошибка:** Из-за ограничения глубины рекурсии в Python (1000 вызовов) рекурсивная реализация BST не смогла бы обработать 10000 записей. Поэтому все операции BST были реализованы итеративно.\n", + "\n", + "**Почему хеш-таблица не чувствительна к порядку?**\n", + "\n", + "Хеш-функция распределяет записи по корзинам независимо от порядка вставки. Распределение по корзинам равномерное.\n", + "\n", + "**Почему связный список всегда медленен при поиске?**\n", + "\n", + "Связный список не имеет индексов. Поэтому нужно перебирать элементы последовательно. Сложность поиска - O(n).\n", + "\n", + "**Как удаление работает в каждой структуре?**\n", + "\n", + "| Структура | Сложность |\n", + "|-----------|-----------|\n", + "| LinkedList | O(n) |\n", + "| HashTable | O(1) |\n", + "| BST | O(log n) / O(n) |\n", + "\n", + "В связных списках сначала нужно найти, потом перепривязать. В хеш-таблице сразу находишь корзину по хешу. В двоичном дереве нужно найти узел и перестроить поддеревья." + ] + }, + { + "cell_type": "markdown", + "id": "a57d1502", + "metadata": {}, + "source": [ + "## Заключение\n", + "\n", + "### Выводы из каждой части\n", + "\n", + "**Из части 1:**\n", + "- Каждая структура имеет свои теоретические характеристики\n", + "- Связный список - прост, но медленен\n", + "- Хеш-таблица - быстра, но не сохраняет порядок\n", + "- BST - быстр и сохраняет порядок, но требует балансировки\n", + "\n", + "**Из части 2:**\n", + "- Все три структуры успешно реализованы\n", + "- Хеш-таблица использует связный список для корзин\n", + "- BST написан итеративно для избежания RecursionError\n", + "\n", + "**Из части 3:**\n", + "- Эксперименты подтвердили теоретические оценки\n", + "- BST на отсортированных данных деградирует\n", + "- Хеш-таблица стабильна независимо от порядка\n", + "\n", + "### Итоговая рекомендация\n", + "\n", + "| Сценарий | Рекомендация | Причина |\n", + "|----------|--------------|---------|\n", + "| Частый поиск по ключу | Хеш-таблица | O(1) |\n", + "| Частые вставки/удаления | Хеш-таблица | Стабильная скорость |\n", + "| Нужен отсортированный вывод | Сбалансированное дерево | In-order обход |\n", + "| Данные поступают отсортированно | Хеш-таблица | BST деградирует |\n", + "| Мало данных (<100) | Любая | Разница незаметна |\n", + "\n", + "**Для телефонного справочника лучший выбор - хеш-таблица.**" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/victorovaas/lab1 b/victorovaas/lab1 deleted file mode 100644 index e69de29..0000000 diff --git a/victorovaas/lab1/phonebook.py b/victorovaas/lab1/phonebook.py new file mode 100644 index 0000000..2676b26 --- /dev/null +++ b/victorovaas/lab1/phonebook.py @@ -0,0 +1,195 @@ +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'] is not None: + current = current['next'] + + current['next'] = new_node + return head + +def ll_find(head, name): + current = head + while current is not None: + 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'] is not None: + if current['next']['name'] == name: + current['next'] = current['next']['next'] + return head + current = current['next'] + return head + +def ll_list_all(head): + records = [] + current = head + + while current is not None: + records.append((current['name'], current['phone'])) + current = current['next'] + records.sort(key=lambda x: x[0]) + return records + +def hash_function(name, table_size): + total = 0 + for ch in name: + total = (total*31 + ord(ch)) % table_size + return total + +def ht_create(size=1000): + return [None]*size + +def ht_insert(buckets, name, phone): + idx = hash_function(name, len(buckets)) + buckets[idx] = ll_insert(buckets[idx], name, phone) + return buckets + +def ht_find(buckets, name): + idx = hash_function(name, len(buckets)) + return ll_find(buckets[idx], name) + +def ht_delete(buckets, name): + idx = hash_function(name, len(buckets)) + buckets[idx] = ll_delete(buckets[idx], name) + return buckets + +def ht_list_all(buckets): + records = [] + for bucket in buckets: + current = bucket + while current is not None: + records.append((current['name'], current['phone'])) + current = current['next'] + records.sort(key=lambda x: x[0]) + return records + +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 + break + current = current['left'] + elif name > current['name']: + if current['right'] is None: + current['right'] = new_node + break + current = current['right'] + else: + current['phone'] = phone + break + + return root + + +def bst_find(root, name): + + current = root + while current is not None: + if name == current['name']: + return current['phone'] + elif name < current['name']: + current = current['left'] + else: + current = current['right'] + return None + + +def _bst_find_min(node): + + current = node + while current['left'] is not None: + current = current['left'] + return current + + +def bst_delete(root, name): + + if root is None: + return None + + parent = None + current = root + + while current is not None 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 and current['right'] is None: + if parent is None: + return None + if parent['left'] == current: + parent['left'] = None + else: + parent['right'] = None + return root + + if current['left'] is None: + child = current['right'] + elif current['right'] is None: + child = current['left'] + else: + successor_parent = current + successor = current['right'] + while successor['left'] is not None: + successor_parent = successor + successor = successor['left'] + + current['name'] = successor['name'] + current['phone'] = successor['phone'] + + if successor_parent['left'] == successor: + successor_parent['left'] = successor['right'] + else: + successor_parent['right'] = successor['right'] + + return root + + if parent is None: + return child + if parent['left'] == current: + parent['left'] = child + else: + parent['right'] = child + + return root + + +def bst_list_all(root): + records = [] + + def inorder(node): + if node is None: + return + inorder(node['left']) + records.append((node['name'], node['phone'])) + inorder(node['right']) + + inorder(root) + return records \ No newline at end of file From 69d425a34e06c6a8feb92267b0ae1a0c6eca8390 Mon Sep 17 00:00:00 2001 From: victorovaas Date: Sat, 5 Sep 2026 11:53:01 +0300 Subject: [PATCH 09/10] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=D0=B0=20=D0=B2=D1=82=D0=BE=D1=80=D1=83=D1=8E=20=D0=BB?= =?UTF-8?q?=D0=B0=D0=B1=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- victorovaas/lab2/dead.txt | 20 + .../lab2/docs/data/dead_path_graph.png | Bin 0 -> 25772 bytes .../lab2/docs/data/dead_time_graph.png | Bin 0 -> 25175 bytes .../lab2/docs/data/dead_visited_graph.png | Bin 0 -> 27055 bytes .../lab2/docs/data/empty_path_graph.png | Bin 0 -> 23501 bytes .../lab2/docs/data/empty_time_graph.png | Bin 0 -> 24257 bytes .../lab2/docs/data/empty_visited_graph.png | Bin 0 -> 25310 bytes .../lab2/docs/data/maze_experiments.csv | 13 + .../lab2/docs/data/maze_table_results.png | Bin 0 -> 141935 bytes .../lab2/docs/data/noexit_time_graph.png | Bin 0 -> 24062 bytes .../lab2/docs/data/noexit_visited_graph.png | Bin 0 -> 23455 bytes .../lab2/docs/data/simple_path_graph.png | Bin 0 -> 21226 bytes .../lab2/docs/data/simple_time_graph.png | Bin 0 -> 28966 bytes .../lab2/docs/data/simple_visited_graph.png | Bin 0 -> 21392 bytes victorovaas/lab2/docs/lab2_report.ipynb | 237 +++++++++++ victorovaas/lab2/empty.txt | 50 +++ victorovaas/{ => lab2}/experiments.py | 0 victorovaas/lab2/lab2/maze_solver.py | 367 ++++++++++++++++++ victorovaas/{ => lab2}/make_graphs.py | 0 victorovaas/lab2/make_lab2_plots.py | 162 ++++++++ victorovaas/lab2/maze_experiments.py | 154 ++++++++ victorovaas/lab2/noexit.txt | 10 + victorovaas/lab2/simple.txt | 5 + 23 files changed, 1018 insertions(+) create mode 100644 victorovaas/lab2/dead.txt create mode 100644 victorovaas/lab2/docs/data/dead_path_graph.png create mode 100644 victorovaas/lab2/docs/data/dead_time_graph.png create mode 100644 victorovaas/lab2/docs/data/dead_visited_graph.png create mode 100644 victorovaas/lab2/docs/data/empty_path_graph.png create mode 100644 victorovaas/lab2/docs/data/empty_time_graph.png create mode 100644 victorovaas/lab2/docs/data/empty_visited_graph.png create mode 100644 victorovaas/lab2/docs/data/maze_experiments.csv create mode 100644 victorovaas/lab2/docs/data/maze_table_results.png create mode 100644 victorovaas/lab2/docs/data/noexit_time_graph.png create mode 100644 victorovaas/lab2/docs/data/noexit_visited_graph.png create mode 100644 victorovaas/lab2/docs/data/simple_path_graph.png create mode 100644 victorovaas/lab2/docs/data/simple_time_graph.png create mode 100644 victorovaas/lab2/docs/data/simple_visited_graph.png create mode 100644 victorovaas/lab2/docs/lab2_report.ipynb create mode 100644 victorovaas/lab2/empty.txt rename victorovaas/{ => lab2}/experiments.py (100%) create mode 100644 victorovaas/lab2/lab2/maze_solver.py rename victorovaas/{ => lab2}/make_graphs.py (100%) create mode 100644 victorovaas/lab2/make_lab2_plots.py create mode 100644 victorovaas/lab2/maze_experiments.py create mode 100644 victorovaas/lab2/noexit.txt create mode 100644 victorovaas/lab2/simple.txt diff --git a/victorovaas/lab2/dead.txt b/victorovaas/lab2/dead.txt new file mode 100644 index 0000000..5f30fec --- /dev/null +++ b/victorovaas/lab2/dead.txt @@ -0,0 +1,20 @@ +#################### +#S # +# # +# # +# # +# ######### # +# # # +# # # +# # # +# # # +# # # +# # # +# # # +# # # +# # # +# # +# # +# # +# E# +#################### diff --git a/victorovaas/lab2/docs/data/dead_path_graph.png b/victorovaas/lab2/docs/data/dead_path_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5299126d26436e6f081c68b38f8df6743bb088d9 GIT binary patch literal 25772 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 ZwxS|mvly6Z)~q1Ucewky)ohPC_6Mzv_7MO8 literal 0 HcmV?d00001 diff --git a/victorovaas/lab2/docs/data/dead_time_graph.png b/victorovaas/lab2/docs/data/dead_time_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..64a1d4e5b1c7efaf28b30259ff14d93584d064d8 GIT binary patch literal 25175 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

Z;PbNTo_8S0Dck5dnA3pc4CIWiKiJB#e&Mw& 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 GQ~v=KaZ(Tf literal 0 HcmV?d00001 diff --git a/victorovaas/lab2/docs/data/empty_visited_graph.png b/victorovaas/lab2/docs/data/empty_visited_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c7388d60273825b9e045fc6a8143f44b0e830c76 GIT binary patch literal 25310 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 ay@mZ^XJ`@jyQFluDU6q=AEEjrHT563WbJ1F literal 0 HcmV?d00001 diff --git a/victorovaas/lab2/docs/data/maze_experiments.csv b/victorovaas/lab2/docs/data/maze_experiments.csv new file mode 100644 index 0000000..d10c814 --- /dev/null +++ b/victorovaas/lab2/docs/data/maze_experiments.csv @@ -0,0 +1,13 @@ +Лабиринт,Стратегия,Время(мс),Посещено клеток,Длина пути +Простой,BFS,0.017,11.0,6.0 +Простой,DFS,0.017,9.0,8.0 +Простой,A*,0.024,9.0,6.0 +С тупиками,BFS,0.355,306.0,35.0 +С тупиками,DFS,0.18,198.0,81.0 +С тупиками,A*,0.407,225.0,35.0 +Пустой,BFS,2.873,2304.0,95.0 +Пустой,DFS,8.03,2304.0,1129.0 +Пустой,A*,4.278,2304.0,95.0 +Без выхода,BFS,0.003,1.0,нет пути +Без выхода,DFS,0.002,1.0,нет пути +Без выхода,A*,0.014,1.0,нет пути diff --git a/victorovaas/lab2/docs/data/maze_table_results.png b/victorovaas/lab2/docs/data/maze_table_results.png new file mode 100644 index 0000000000000000000000000000000000000000..f24630db1ae1e72f07ca63e62e2486ddf4f94bff GIT binary patch literal 141935 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�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 z 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

rAqwY;L>{EGx6nC9Mj8XS~*7{)!Nu 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 z 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 literal 0 HcmV?d00001 diff --git a/victorovaas/lab2/docs/data/simple_path_graph.png b/victorovaas/lab2/docs/data/simple_path_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9042b6cf23edbefca2d2b13f8d9e77db47a99a3b GIT binary patch literal 21226 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

JhnY`O{T=lH{CpIJ4s;R7A{$00@En` zM|>JQgrdd}-|8|ZakkSveJR~xHk`ZmiXqjqFj#6funQz<8-&nXqwXwd%NhG1)Jg~Z z6SkK9NY{&;DF>8qD%adw%v7rl!jPKhwy;s1L`#S$HTTU&P!`kbWP+TyQwkc^G%a5u z!o3Q0QwLPvon#N!k1|2odVHac;v zQJb5#T|1)J!z5iRq?qaspIzHP#~7sP_DarvR`Ax7B#-)IX2QF0GV|L2C4@BeHIMh% zwe@$L7P}w#;X2}`+0U{^j+|Ih4+kOoj~iJF}4P^v_vIq|I&$aKb6VQU!nF~9G&#waU}x1J{xTUUPnllri^{B>0aq%l{bSze6T-vpbm6XOJ_IVoY^I@%A5C@(-W?51aL06951J literal 0 HcmV?d00001 diff --git a/victorovaas/lab2/docs/data/simple_time_graph.png b/victorovaas/lab2/docs/data/simple_time_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9f355913aa38610d466f8a793615239e6a851c83 GIT binary patch literal 28966 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 AHvj+t literal 0 HcmV?d00001 diff --git a/victorovaas/lab2/docs/lab2_report.ipynb b/victorovaas/lab2/docs/lab2_report.ipynb new file mode 100644 index 0000000..b74a85e --- /dev/null +++ b/victorovaas/lab2/docs/lab2_report.ipynb @@ -0,0 +1,237 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "bdef001e", + "metadata": {}, + "source": [ + "# Отчёт \n", + "## Поиск выхода из лабиринта: применение паттернов проектирования\n", + "\n", + "**Студент:** Викторова А.С.\n", + "**Группа:** 429\n", + "**Дата:** 03.09.2026" + ] + }, + { + "cell_type": "markdown", + "id": "21f948a4", + "metadata": {}, + "source": [ + "## Введение\n", + "\n", + "### О чём это работа\n", + "В данной работе реализуется программа для поиска выхода из лабиринта с применением паттернов проектирования. Поддерживаются три алгоритма поиска пути: BFS, DFS и A*.\n", + "\n", + "### Цель работы\n", + "Разработать гибкую, расширяемую программу для загрузки лабиринта из файла, поиска пути от старта до выхода с возможностью выбора алгоритма, визуализации процесса и экспериментального сравнения алгоритмов. Применить минимум 3 паттерна проектирования.\n", + "\n", + "### Задачи\n", + "1. Реализовать модель лабиринта (классы Cell, Maze)\n", + "2. Реализовать загрузку лабиринта из файла (паттерн Builder)\n", + "3. Реализовать алгоритмы поиска пути (паттерн Strategy): BFS, DFS, A*\n", + "4. Реализовать класс-оркестратор MazeSolver со сбором статистики\n", + "5. Реализовать визуализацию (паттерн Observer) и пошаговое управление (паттерн Command)\n", + "6. Провести эксперименты на лабиринтах разной сложности\n", + "7. Сравнить результаты и сделать выводы\n" + ] + }, + { + "cell_type": "markdown", + "id": "cf1dc2ba", + "metadata": {}, + "source": [ + "## Часть 1. Паттерны проектирования\n", + "\n", + "### Использованные паттерны\n", + "\n", + "| Паттерн | Назначение | Реализация |\n", + "|---------|------------|------------|\n", + "| Builder | Создание лабиринта из файла | TextFileMazeBuilder |\n", + "| Strategy | Семейство алгоритмов поиска | BFSStrategy, DFSStrategy, AStarStrategy |\n", + "| Observer | Уведомление о событиях | ConsoleView |\n", + "| Command | Отмена ходов | MoveCommand |\n" + ] + }, + { + "cell_type": "markdown", + "id": "55cef4b9", + "metadata": {}, + "source": [ + "## Часть 2. Реализация\n", + "\n", + "### 2.1 Модель лабиринта\n", + "\n", + "**Класс Cell** - клетка лабиринта\n", + "- Поля: x, y, is_wall, is_start, is_exit\n", + "- Метод: is_passable() - возвращает True, если не стена\n", + "\n", + "**Класс Maze** - лабиринт\n", + "- Поля: width, height, cells[][], start, exit\n", + "- Методы: get_cell(x, y), get_neighbors(cell)\n", + "\n", + "### 2.2 Загрузка лабиринта (Builder)\n", + "\n", + "**TextFileMazeBuilder**\n", + "- Читает файл с символами (# - стена, пробел - проход, S - старт, E - выход)\n", + "- Создаёт клетки с нужными флагами\n", + "- Возвращает готовый Maze\n", + "\n", + "### 2.3 Алгоритмы поиска (Strategy)\n", + "\n", + "**Интерфейс PathFindingStrategy**\n", + "- Метод: find_path(maze, start, exit) возвращает (путь, количество_посещённых)\n", + "\n", + "**BFSStrategy** - поиск в ширину (очередь)\n", + "- Гарантирует кратчайший путь\n", + "\n", + "**DFSStrategy** - поиск в глубину (стек)\n", + "- Быстрый, но не гарантирует кратчайший путь\n", + "\n", + "**AStarStrategy** - A* (приоритетная очередь)\n", + "- Использует эвристику (манхэттенское расстояние)\n", + "\n", + "### 2.4 Оркестратор\n", + "\n", + "**MazeSolver**\n", + "- Поля: maze, strategy\n", + "- Методы: set_strategy(), solve() → SearchStats\n", + "\n", + "**SearchStats**\n", + "- Поля: path, time_ms, visited_count, path_length" + ] + }, + { + "cell_type": "markdown", + "id": "5c9bd0d2", + "metadata": {}, + "source": [ + "## Часть 3. Эксперименты\n", + "\n", + "### 3.1 Условия\n", + "\n", + "| Параметр | Значение |\n", + "|----------|----------|\n", + "| Повторений | 5 |\n", + "| Алгоритмы | BFS, DFS, A* |\n", + "| Лабиринты | Простой (10x10), С тупиками (50x50), Пустой (100x100), Без выхода |\n", + "\n", + "### 3.2 Тестовые лабиринты\n", + "\n", + "| Лабиринт | Размер | Характеристика |\n", + "|----------|--------|----------------|\n", + "| Простой | 10x10 | Прямой путь от старта к выходу |\n", + "| С тупиками | 20x20 | Много тупиков, запутанный |\n", + "| Пустой | 50x50 | Без стен (максимальная производительность) |\n", + "| Без выхода | 10x10 | Выход отгорожен стенами |\n", + "\n", + "### 3.3 Результаты экспериментов\n", + "\n", + "| Лабиринт | Стратегия | Время (мс) | Посещено клеток | Длина пути |\n", + "|----------|-----------|------------|-----------------|------------|\n", + "| Простой (10x10) | BFS | 0.020 | 11 | 6 |\n", + "| Простой (10x10) | DFS | 0.012 | 9 | 8 |\n", + "| Простой (10x10) | A* | 0.020 | 9 | 6 |\n", + "| С тупиками (20x20) | BFS | 0.492 | 306 | 35 |\n", + "| С тупиками (20x20) | DFS | 0.234 | 198 | 81 |\n", + "| С тупиками (20x20) | A* | 0.456 | 225 | 35 |\n", + "| Пустой (50x50) | BFS | 3.486 | 2304 | 95 |\n", + "| Пустой (50x50) | DFS | 10.452 | 2304 | 1129 |\n", + "| Пустой (50x50) | A* | 5.743 | 2304 | 95 |\n", + "| Без выхода | BFS | 0.010 | 1 | нет пути |\n", + "| Без выхода | DFS | 0.003 | 1 | нет пути |\n", + "| Без выхода | A* | 0.004 | 1 | нет пути |\n", + "\n", + "### 3.4 Графики\n", + "\n", + "#### Простой лабиринт (10x10)\n", + "\n", + "![Время](data/simple_time_graph.png)\n", + "![Посещено](data/simple_visited_graph.png)\n", + "![Длина пути](data/simple_path_graph.png)\n", + "\n", + "#### Лабиринт с тупиками (20x20)\n", + "\n", + "![Время](data/dead_time_graph.png)\n", + "![Посещено](data/dead_visited_graph.png)\n", + "![Длина пути](data/dead_path_graph.png)\n", + "\n", + "#### Пустой лабиринт (50x50)\n", + "\n", + "![Время](data/empty_time_graph.png)\n", + "![Посещено](data/empty_visited_graph.png)\n", + "![Длина пути](data/empty_path_graph.png)\n", + "\n", + "#### Лабиринт без выхода\n", + "\n", + "![Время](data/noexit_time_graph.png)\n", + "![Посещено](data/noexit_visited_graph.png)\n", + "\n", + "### 3.5 Общая таблица результатов\n", + "\n", + "![Таблица](data/maze_table_results.png)\n", + "\n", + "### 3.6 Анализ результатов\n", + "\n", + "**Простой лабиринт (10x10):**\n", + "- BFS и A* нашли кратчайший путь (6 шагов)\n", + "- DFS нашёл более длинный путь (8 шагов), но был быстрее всех\n", + "\n", + "**Лабиринт с тупиками (20x20):**\n", + "- BFS и A* нашли кратчайший путь (35 шагов)\n", + "- DFS нашёл очень длинный путь (81 шаг), так как ушёл в глубину по тупикам\n", + "\n", + "**Пустой лабиринт (50x50):**\n", + "- BFS и A* нашли кратчайший путь (95 шагов)\n", + "- DFS нашёл очень длинный путь (1129 шагов)\n", + "\n", + "**Лабиринт без выхода:**\n", + "- Все алгоритмы посетили только стартовую клетку (1) и вернули \"нет пути\"\n", + "\n", + "### 3.7 Сравнение алгоритмов\n", + "\n", + "| Алгоритм | Кратчайший путь | Скорость | Память | Когда использовать |\n", + "|----------|-----------------|----------|--------|-------------------|\n", + "| BFS | Да | Средняя | Много | Нужен гарантированно кратчайший путь |\n", + "| DFS | Нет | Быстрая | Мало | Важна скорость, не важна длина пути |\n", + "| A* | Да | Быстрая | Средне | Большие лабиринты, есть эвристика |\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "e687a8ee", + "metadata": {}, + "source": [ + "## Заключение\n", + "\n", + "### Выводы\n", + "\n", + "1. **BFS** гарантирует кратчайший путь, но медленнее на больших лабиринтах\n", + "2. **DFS** самый быстрый, но путь может быть очень длинным\n", + "3. **A*** - лучший компромисс: находит кратчайший путь и работает быстро\n", + "\n", + "### Рекомендация\n", + "\n", + "Для поиска выхода из лабиринта рекомендуется использовать **A*** - он сочетает скорость и оптимальность.\n", + "\n", + "### Как паттерны помогли\n", + "\n", + "| Изменение | Без паттернов | С паттернами |\n", + "|-----------|---------------|--------------|\n", + "| Добавить новый алгоритм | Изменить MazeSolver | Создать новую стратегию |\n", + "| Сменить визуализацию | Переписать MazeSolver | Добавить новый Observer |\n", + "\n", + "**Итог:** Паттерны сделали код гибким и расширяемым." + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/victorovaas/lab2/empty.txt b/victorovaas/lab2/empty.txt new file mode 100644 index 0000000..c83b6cd --- /dev/null +++ b/victorovaas/lab2/empty.txt @@ -0,0 +1,50 @@ +################################################## +#S # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# # +# E# +################################################## diff --git a/victorovaas/experiments.py b/victorovaas/lab2/experiments.py similarity index 100% rename from victorovaas/experiments.py rename to victorovaas/lab2/experiments.py diff --git a/victorovaas/lab2/lab2/maze_solver.py b/victorovaas/lab2/lab2/maze_solver.py new file mode 100644 index 0000000..c22b789 --- /dev/null +++ b/victorovaas/lab2/lab2/maze_solver.py @@ -0,0 +1,367 @@ +from abc import ABC, abstractmethod +from collections import deque +import heapq +import time +import os + +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 is_passable(self): + return not self.is_wall + + def __repr__(self): + return f"Cell({self.x},{self.y})" + + +class Maze: + def __init__(self, width, height): + self.width = width + self.height = height + self.cells = [] + self.start = None + self.exit = None + + for y in range(height): + row = [] + for x in range(width): + row.append(Cell(x, y)) + self.cells.append(row) + + def get_cell(self, x, y): + if 0 <= x < self.width and 0 <= y < self.height: + return self.cells[y][x] + return None + + def get_neighbors(self, cell): + neighbors = [] + for dx, dy in [(0, -1), (0, 1), (-1, 0), (1, 0)]: + nx, ny = cell.x + dx, cell.y + dy + neighbor = self.get_cell(nx, ny) + if neighbor and neighbor.is_passable(): + neighbors.append(neighbor) + return neighbors + + +class TextFileMazeBuilder: + def build_from_file(self, filename): + with open(filename, 'r') as f: + lines = [line.rstrip() for line in f.readlines()] + + height = len(lines) + width = len(lines[0]) + maze = Maze(width, height) + + for y, line in enumerate(lines): + for x, ch in enumerate(line): + cell = maze.get_cell(x, y) + if ch == '#': + cell.is_wall = True + elif ch == 'S': + maze.start = cell + cell.is_start = True + elif ch == 'E': + maze.exit = cell + cell.is_exit = True + + return maze + + +class PathFindingStrategy(ABC): + @abstractmethod + def find_path(self, maze, start, exit): + pass + + +class BFSStrategy(PathFindingStrategy): + def find_path(self, maze, start, exit): + if not start or not exit: + return [], 0 + + queue = deque([(start, [start])]) + visited = {start} + + while queue: + current, path = queue.popleft() + if current == exit: + return path, len(visited) + + for neighbor in maze.get_neighbors(current): + if neighbor not in visited: + visited.add(neighbor) + queue.append((neighbor, path + [neighbor])) + + return [], len(visited) + + +class DFSStrategy(PathFindingStrategy): + def find_path(self, maze, start, exit): + if not start or not exit: + return [], 0 + + stack = [(start, [start])] + visited = {start} + + while stack: + current, path = stack.pop() + if current == exit: + return path, len(visited) + + for neighbor in maze.get_neighbors(current): + if neighbor not in visited: + visited.add(neighbor) + stack.append((neighbor, path + [neighbor])) + + return [], len(visited) + + +class AStarStrategy(PathFindingStrategy): + def _heuristic(self, a, b): + return abs(a.x - b.x) + abs(a.y - b.y) + + def find_path(self, maze, start, exit): + if not start or not exit: + return [], 0 + + heap = [(self._heuristic(start, exit), 0, start, [start])] + g_score = {start: 0} + visited = set() + counter = 1 + + while heap: + _, _, current, path = heapq.heappop(heap) + + if current in visited: + continue + + visited.add(current) + + if current == exit: + return path, len(visited) + + 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 = tentative_g + self._heuristic(neighbor, exit) + heapq.heappush(heap, (f, counter, neighbor, path + [neighbor])) + counter += 1 + + return [], len(visited) + + +class SearchStats: + def __init__(self, path, time_ms, visited_count): + self.path = path + self.time_ms = time_ms + self.visited_count = visited_count + self.path_length = len(path) if path else 0 + + +class MazeSolver: + def __init__(self, maze, strategy=None): + self.maze = maze + self.strategy = strategy + self.observers = [] + + def attach(self, observer): + self.observers.append(observer) + + def detach(self, observer): + self.observers.remove(observer) + + def notify(self, event, data=None): + for observer in self.observers: + observer.update(event, data) + + def set_strategy(self, strategy): + self.strategy = strategy + + def solve(self): + if self.strategy is None: + raise ValueError("Стратегия не установлена") + self.notify("search_started") + + start_time = time.perf_counter() + path, visited_count = self.strategy.find_path(self.maze, self.maze.start, self.maze.exit) + end_time = time.perf_counter() + time_ms = (end_time - start_time) * 1000 + + self.notify("search_finished", time_ms) + self.notify("path_found", path) + + return SearchStats(path, time_ms, visited_count) + +class Observer(ABC): + + @abstractmethod + def update(self, event, data=None): + pass + +class ConsoleView(Observer): + + def __init__(self): + self.events = [] + + def update(self, event, data=None): + self.events.append((event, data)) + + if event == "maze_loaded": + print("[Событие] Лфбирин загружен") + elif event == "path_found": + print(f"[Событие] Путь найден! Длина: {len(data) if data else 0}") + elif event == "search_started": + print(f"[Событие] Поиск завершён. Время: {data:.3f}мс" if data else "[Событие] Поиск завершён") + elif event == "mpve": + print(f"[Событие] Игрок переместился в {data}") + elif event == "undo": + print("[Событие] Отмена последнего хода") + + def render(self,maze, player=None, path=None): + + os.system('cls' if os.name == 'nt' else 'clear') + + print("Лабиринт") + + for y in range(maze.height): + row = "" + for x in range(maze.width): + cell = maze.get_cell(x,y) + + if player and cell == player.current_cell: + row += "p " #игрок + elif path and cell in path: + row += "* " #путь + elif cell.is_wall: + row += "# " #стена + elif cell.is_start: + row += "S " #старт + elif cell.is_exit: + row += "E " #выход + else: + row += ". " #прозод + print(row) + + print("Управление: W/A/S/D - движение, U - отмена, Q - выход") + +class Command(ABC): + + @abstractmethod + def execute(self): + pass + + @abstractmethod + def undo(self): + pass + +class Player: + + def __init__(self, start_cell): + self.current_cell = start_cell + self.start_cell = start_cell + + def move_to(self, cell): + self.current_cell = cell + + def resent(self): + self.current_cell = self.start_cell + + def __repr__(self): + return f"Player at ({self.current_cell.x}, {self.current_cell.y})" + +class MoveCommand(Command): + + def __init__(self, player, new_cell, view): + self.player = player + self.new_cell = new_cell + self.old_cell = player.current_cell + self.view = view + + def execute(self): + self.player.move_to(self.new_cell) + self.view.update("undo", None) + + def undo(self): + self.player.move_to(self.old_cell) + self.view.update("undo",None) + +class GameController: + + def __init__(self, maze, view): + self.maze = maze + self.view = view + self.player = Player(maze.start) + self.command_history = [] + + def get_cell_in_direction(self, direction): + + x, y = self.player.current_cell.x, self.player.current_cell.y + + if direction == 'w': + y -= 1 + elif direction == 's': + y += 1 + elif direction == 'a': + x -= 1 + elif direction == 'd': + x += 1 + else: + return None + + return self.maze.get_cell(x, y) + + def try_move(self, direction): + + new_cell = self.get_cell_in_direction(direction) + + if new_cell and new_cell.is_passable(): + command = MoveCommand(self.player, new_cell, self.view) + command.execute() + self.command_history.append(command) + + if new_cell.is_exit: + self.view.update("path_found", []) + print("Вы нашли выход.") + return True + else: + print("Невозможно пройти - стена") + return False + + def undo(self): + + if self.command_history: + command = self.command_history.pop() + command.undo() + else: + print("Нечего отменять") + + def visualize_path(self, path): + self.view.render(self.maze, self.player, path) + + def run_manual_mode(self): + + while True: + self.view.render(self.maze, self.player) + + command = input("Введите команду: ").lower().strip() + + if command in ['w', 'a', 's', 'd']: + self.try_move(command) + elif command == 'u': + self.undo() + elif command == 'q': + print('Выход из игры') + break + else: + print("Неизвестная команда. Используйте: W/A/S/D - движение, U - отмена, Q - выход") + + + + + + diff --git a/victorovaas/make_graphs.py b/victorovaas/lab2/make_graphs.py similarity index 100% rename from victorovaas/make_graphs.py rename to victorovaas/lab2/make_graphs.py diff --git a/victorovaas/lab2/make_lab2_plots.py b/victorovaas/lab2/make_lab2_plots.py new file mode 100644 index 0000000..6b96ed1 --- /dev/null +++ b/victorovaas/lab2/make_lab2_plots.py @@ -0,0 +1,162 @@ +import matplotlib.pyplot as plt +import os + +os.makedirs('lab2/docs/data', exist_ok=True) + +algorithms = ['BFS', 'DFS', 'A*'] + + +simple_time = [0.020, 0.012, 0.020] +simple_visited = [11, 9, 9] +simple_path = [6, 8, 6] + +fig, ax = plt.subplots(figsize=(8, 5)) +bars = ax.bar(algorithms, simple_time, color=['#3498db', '#e74c3c', '#2ecc71']) +ax.set_ylabel('Время (мс)') +ax.set_title('Время выполнения (простой лабиринт 10x10)') +for bar, val in zip(bars, simple_time): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.001, f'{val:.3f}', ha='center', va='bottom') +plt.savefig('docs/data/simple_time_graph.png', dpi=150, bbox_inches='tight') +plt.close() + +fig, ax = plt.subplots(figsize=(8, 5)) +bars = ax.bar(algorithms, simple_visited, color=['#3498db', '#e74c3c', '#2ecc71']) +ax.set_ylabel('Количество клеток') +ax.set_title('Посещённые клетки (простой лабиринт)') +for bar, val in zip(bars, simple_visited): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.3, str(val), ha='center', va='bottom') +plt.savefig('docs/data/simple_visited_graph.png', dpi=150, bbox_inches='tight') +plt.close() + +fig, ax = plt.subplots(figsize=(8, 5)) +bars = ax.bar(algorithms, simple_path, color=['#3498db', '#e74c3c', '#2ecc71']) +ax.set_ylabel('Длина пути (шагов)') +ax.set_title('Длина найденного пути (простой лабиринт)') +for bar, val in zip(bars, simple_path): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.3, str(val), ha='center', va='bottom') +plt.savefig('docs/data/simple_path_graph.png', dpi=150, bbox_inches='tight') +plt.close() + + +dead_time = [0.492, 0.234, 0.456] +dead_visited = [306, 198, 225] +dead_path = [35, 81, 35] + +fig, ax = plt.subplots(figsize=(8, 5)) +bars = ax.bar(algorithms, dead_time, color=['#3498db', '#e74c3c', '#2ecc71']) +ax.set_ylabel('Время (мс)') +ax.set_title('Время выполнения (лабиринт с тупиками)') +for bar, val in zip(bars, dead_time): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.01, f'{val:.3f}', ha='center', va='bottom') +plt.savefig('docs/data/dead_time_graph.png', dpi=150, bbox_inches='tight') +plt.close() + +fig, ax = plt.subplots(figsize=(8, 5)) +bars = ax.bar(algorithms, dead_visited, color=['#3498db', '#e74c3c', '#2ecc71']) +ax.set_ylabel('Количество клеток') +ax.set_title('Посещённые клетки (лабиринт с тупиками)') +for bar, val in zip(bars, dead_visited): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 10, str(val), ha='center', va='bottom') +plt.savefig('docs/data/dead_visited_graph.png', dpi=150, bbox_inches='tight') +plt.close() + +fig, ax = plt.subplots(figsize=(8, 5)) +bars = ax.bar(algorithms, dead_path, color=['#3498db', '#e74c3c', '#2ecc71']) +ax.set_ylabel('Длина пути (шагов)') +ax.set_title('Длина найденного пути (лабиринт с тупиками)') +for bar, val in zip(bars, dead_path): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 3, str(val), ha='center', va='bottom') +plt.savefig('docs/data/dead_path_graph.png', dpi=150, bbox_inches='tight') +plt.close() + + +empty_time = [3.486, 10.452, 5.743] +empty_visited = [2304, 2304, 2304] +empty_path = [95, 1129, 95] + +fig, ax = plt.subplots(figsize=(8, 5)) +bars = ax.bar(algorithms, empty_time, color=['#3498db', '#e74c3c', '#2ecc71']) +ax.set_ylabel('Время (мс)') +ax.set_title('Время выполнения (пустой лабиринт 50x50)') +for bar, val in zip(bars, empty_time): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.3, f'{val:.3f}', ha='center', va='bottom') +plt.savefig('docs/data/empty_time_graph.png', dpi=150, bbox_inches='tight') +plt.close() + +fig, ax = plt.subplots(figsize=(8, 5)) +bars = ax.bar(algorithms, empty_visited, color=['#3498db', '#e74c3c', '#2ecc71']) +ax.set_ylabel('Количество клеток') +ax.set_title('Посещённые клетки (пустой лабиринт)') +for bar, val in zip(bars, empty_visited): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 50, str(val), ha='center', va='bottom') +plt.savefig('docs/data/empty_visited_graph.png', dpi=150, bbox_inches='tight') +plt.close() + +fig, ax = plt.subplots(figsize=(8, 5)) +bars = ax.bar(algorithms, empty_path, color=['#3498db', '#e74c3c', '#2ecc71']) +ax.set_ylabel('Длина пути (шагов)') +ax.set_title('Длина найденного пути (пустой лабиринт)') +for bar, val in zip(bars, empty_path): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 50, str(val), ha='center', va='bottom') +plt.savefig('docs/data/empty_path_graph.png', dpi=150, bbox_inches='tight') +plt.close() + + +noexit_time = [0.010, 0.003, 0.004] +noexit_visited = [1, 1, 1] + +fig, ax = plt.subplots(figsize=(8, 5)) +bars = ax.bar(algorithms, noexit_time, color=['#3498db', '#e74c3c', '#2ecc71']) +ax.set_ylabel('Время (мс)') +ax.set_title('Время выполнения (лабиринт без выхода)') +for bar, val in zip(bars, noexit_time): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.0005, f'{val:.3f}', ha='center', va='bottom') +plt.savefig('docs/data/noexit_time_graph.png', dpi=150, bbox_inches='tight') +plt.close() + +fig, ax = plt.subplots(figsize=(8, 5)) +bars = ax.bar(algorithms, noexit_visited, color=['#3498db', '#e74c3c', '#2ecc71']) +ax.set_ylabel('Количество клеток') +ax.set_title('Посещённые клетки (лабиринт без выхода)') +for bar, val in zip(bars, noexit_visited): + ax.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 0.05, str(val), ha='center', va='bottom') +plt.savefig('docs/data/noexit_visited_graph.png', dpi=150, bbox_inches='tight') +plt.close() + + +fig, ax = plt.subplots(figsize=(14, 8)) +ax.axis('off') + +table_data = [ + ['Лабиринт', 'Стратегия', 'Время (мс)', 'Посещено', 'Длина пути'], + ['Простой (10x10)', 'BFS', '0.020', '11', '6'], + ['Простой (10x10)', 'DFS', '0.012', '9', '8'], + ['Простой (10x10)', 'A*', '0.020', '9', '6'], + ['С тупиками (20x20)', 'BFS', '0.492', '306', '35'], + ['С тупиками (20x20)', 'DFS', '0.234', '198', '81'], + ['С тупиками (20x20)', 'A*', '0.456', '225', '35'], + ['Пустой (50x50)', 'BFS', '3.486', '2304', '95'], + ['Пустой (50x50)', 'DFS', '10.452', '2304', '1129'], + ['Пустой (50x50)', 'A*', '5.743', '2304', '95'], + ['Без выхода', 'BFS', '0.010', '1', 'нет пути'], + ['Без выхода', 'DFS', '0.003', '1', 'нет пути'], + ['Без выхода', 'A*', '0.004', '1', 'нет пути'], +] + +table = ax.table(cellText=table_data, loc='center', cellLoc='center', colWidths=[0.2, 0.13, 0.13, 0.13, 0.13]) +table.auto_set_font_size(False) +table.set_fontsize(10) +table.scale(1, 1.8) + +for i in range(5): + table[(0, i)].set_facecolor('#4472C4') + table[(0, i)].set_text_props(weight='bold', color='white') + +for i in range(1, len(table_data)): + if i % 2 == 1: + for j in range(5): + table[(i, j)].set_facecolor('#E8F0FE') + +plt.title('Результаты экспериментов по поиску пути в лабиринте', fontsize=14, fontweight='bold', pad=20) +plt.savefig('docs/data/maze_table_results.png', dpi=200, bbox_inches='tight', facecolor='white') +plt.close() diff --git a/victorovaas/lab2/maze_experiments.py b/victorovaas/lab2/maze_experiments.py new file mode 100644 index 0000000..3de62c6 --- /dev/null +++ b/victorovaas/lab2/maze_experiments.py @@ -0,0 +1,154 @@ +import time +import csv +import os +from lab2.maze_solver import TextFileMazeBuilder, BFSStrategy, DFSStrategy, AStarStrategy, MazeSolver + +def save_maze_to_file(maze, filename): + with open(filename, 'w') as f: + for row in maze: + f.write(''.join(row) + '\n') + +def run_test(maze_file, strategy_class): + builder = TextFileMazeBuilder() + maze = builder.build_from_file(maze_file) + solver = MazeSolver(maze, strategy_class) + + times = [] + visited = [] + path_len = [] + + for i in range(5): + stats = solver.solve() + times.append(stats.time_ms) + visited.append(stats.visited_count) + path_len.append(stats.path_length) + + return { + 'time': sum(times) / 5, + 'visited': sum(visited) / 5, + 'path': sum(path_len) / 5, + 'path_found': max(path_len) > 0 + } + +def main(): + + print("Эксперименты по поиску пути в лабиринте") + + + results = [] + + + print("\n1. Простой лабиринт (10x10)") + + + + simple = [ + "#######", + "#S #", + "# ### #", + "# E #", + "#######" + ] + with open('simple.txt', 'w') as f: + for line in simple: + f.write(line + '\n') + + for name, strategy in [('BFS', BFSStrategy()), ('DFS', DFSStrategy()), ('A*', AStarStrategy())]: + res = run_test('simple.txt', strategy) + print(f"{name}: время={res['time']:.3f}мс, посещено={res['visited']:.0f}, путь={res['path']:.0f}") + results.append(['Простой', name, round(res['time'], 3), round(res['visited'], 0), round(res['path'], 0)]) + + + print("\n2. Лабиринт с тупиками (20x20)") + + dead = [] + for y in range(20): + row = [] + for x in range(20): + if x == 0 or y == 0 or x == 19 or y == 19: + row.append('#') + elif (x == 5 and y > 5 and y < 15) or (y == 5 and x > 5 and x < 15): + row.append('#') + else: + row.append(' ') + dead.append(row) + dead[1][1] = 'S' + dead[18][18] = 'E' + + with open('dead.txt', 'w') as f: + for row in dead: + f.write(''.join(row) + '\n') + + for name, strategy in [('BFS', BFSStrategy()), ('DFS', DFSStrategy()), ('A*', AStarStrategy())]: + res = run_test('dead.txt', strategy) + print(f"{name}: время={res['time']:.3f}мс, посещено={res['visited']:.0f}, путь={res['path']:.0f}") + results.append(['С тупиками', name, round(res['time'], 3), round(res['visited'], 0), round(res['path'], 0)]) + + + print("\n3. Пустой лабиринт (50x50)") + + + empty = [] + for y in range(50): + row = [] + for x in range(50): + if x == 0 or y == 0 or x == 49 or y == 49: + row.append('#') + else: + row.append(' ') + empty.append(row) + empty[1][1] = 'S' + empty[48][48] = 'E' + + with open('empty.txt', 'w') as f: + for row in empty: + f.write(''.join(row) + '\n') + + for name, strategy in [('BFS', BFSStrategy()), ('DFS', DFSStrategy()), ('A*', AStarStrategy())]: + res = run_test('empty.txt', strategy) + print(f"{name}: время={res['time']:.3f}мс, посещено={res['visited']:.0f}, путь={res['path']:.0f}") + results.append(['Пустой', name, round(res['time'], 3), round(res['visited'], 0), round(res['path'], 0)]) + + + print("\n4. Лабиринт без выхода (10x10)") + + + noexit = [] + for y in range(10): + row = [] + for x in range(10): + if x == 0 or y == 0 or x == 9 or y == 9: + row.append('#') + else: + row.append('#') + noexit.append(row) + noexit[1][1] = 'S' + noexit[8][8] = 'E' + + with open('noexit.txt', 'w') as f: + for row in noexit: + f.write(''.join(row) + '\n') + + for name, strategy in [('BFS', BFSStrategy()), ('DFS', DFSStrategy()), ('A*', AStarStrategy())]: + try: + res = run_test('noexit.txt', strategy) + if res['path_found']: + print(f"{name}: путь найден! длина={res['path']:.0f}") + results.append(['Без выхода', name, round(res['time'], 3), round(res['visited'], 0), round(res['path'], 0)]) + else: + print(f"{name}: путь не найден (корректно)") + results.append(['Без выхода', name, round(res['time'], 3), round(res['visited'], 0), 'нет пути']) + except Exception as e: + print(f"{name}: ошибка - {e}") + results.append(['Без выхода', name, 0, 0, 'ошибка']) + + + os.makedirs('docs/data', exist_ok=True) + with open('docs/data/maze_experiments.csv', 'w', newline='', encoding='utf-8') as f: + writer = csv.writer(f) + writer.writerow(['Лабиринт', 'Стратегия', 'Время(мс)', 'Посещено клеток', 'Длина пути']) + writer.writerows(results) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/victorovaas/lab2/noexit.txt b/victorovaas/lab2/noexit.txt new file mode 100644 index 0000000..0d9e9c5 --- /dev/null +++ b/victorovaas/lab2/noexit.txt @@ -0,0 +1,10 @@ +########## +#S######## +########## +########## +########## +########## +########## +########## +########E# +########## diff --git a/victorovaas/lab2/simple.txt b/victorovaas/lab2/simple.txt new file mode 100644 index 0000000..b7edabb --- /dev/null +++ b/victorovaas/lab2/simple.txt @@ -0,0 +1,5 @@ +####### +#S # +# ### # +# E # +####### From 1d6032f5a16155311ccc96445de63987b6a44fed Mon Sep 17 00:00:00 2001 From: victorovaas Date: Sat, 5 Sep 2026 12:05:00 +0300 Subject: [PATCH 10/10] =?UTF-8?q?=D1=81=D0=BE=D0=B1=D1=80=D0=B0=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5?= =?UTF-8?q?=20=D0=BF=D0=B0=D0=BF=D0=BA=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=BB?= =?UTF-8?q?=D0=B0=D0=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- victorovaas/{ => lab1}/docs/graph_delete.png | Bin victorovaas/{ => lab1}/docs/graph_insert.png | Bin victorovaas/{ => lab1}/docs/graph_search.png | Bin victorovaas/{ => lab1}/docs/results.csv | 0 victorovaas/{ => lab1}/docs/отчет.ipynb | 0 victorovaas/lab1/experiments.py | 282 +++++++++++++++++++ victorovaas/lab1/{ => lab1}/phonebook.py | 0 victorovaas/lab1/make_graphs.py | 123 ++++++++ 8 files changed, 405 insertions(+) rename victorovaas/{ => lab1}/docs/graph_delete.png (100%) rename victorovaas/{ => lab1}/docs/graph_insert.png (100%) rename victorovaas/{ => lab1}/docs/graph_search.png (100%) rename victorovaas/{ => lab1}/docs/results.csv (100%) rename victorovaas/{ => lab1}/docs/отчет.ipynb (100%) create mode 100644 victorovaas/lab1/experiments.py rename victorovaas/lab1/{ => lab1}/phonebook.py (100%) create mode 100644 victorovaas/lab1/make_graphs.py diff --git a/victorovaas/docs/graph_delete.png b/victorovaas/lab1/docs/graph_delete.png similarity index 100% rename from victorovaas/docs/graph_delete.png rename to victorovaas/lab1/docs/graph_delete.png diff --git a/victorovaas/docs/graph_insert.png b/victorovaas/lab1/docs/graph_insert.png similarity index 100% rename from victorovaas/docs/graph_insert.png rename to victorovaas/lab1/docs/graph_insert.png diff --git a/victorovaas/docs/graph_search.png b/victorovaas/lab1/docs/graph_search.png similarity index 100% rename from victorovaas/docs/graph_search.png rename to victorovaas/lab1/docs/graph_search.png diff --git a/victorovaas/docs/results.csv b/victorovaas/lab1/docs/results.csv similarity index 100% rename from victorovaas/docs/results.csv rename to victorovaas/lab1/docs/results.csv diff --git a/victorovaas/docs/отчет.ipynb b/victorovaas/lab1/docs/отчет.ipynb similarity index 100% rename from victorovaas/docs/отчет.ipynb rename to victorovaas/lab1/docs/отчет.ipynb diff --git a/victorovaas/lab1/experiments.py b/victorovaas/lab1/experiments.py new file mode 100644 index 0000000..72e83c0 --- /dev/null +++ b/victorovaas/lab1/experiments.py @@ -0,0 +1,282 @@ +import random +import time +import csv +import os +from lab1.phonebook import * + +def generate_test_data(n=10000): + + records = [(f"User_{i:05d}", f"+7-999-{i:07d}") 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 get_random_names(records, n=100): + return[name for name, _ in random.sample(records, min(n, len(records)))] + +def run_linked_experiments(records, mode_name): + + print(f"\n связный список ({mode_name}):") + + print("вставка 10000 записей:") + + insert_times = [] + for run in range(5): + start = time.perf_counter() + head = None + for name, phone in records: + head = ll_insert(head, name, phone) + end = time.perf_counter() + insert_times.append(end - start) + print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") + + avg_insert = sum(insert_times) / 5 + print(f"среднее: {avg_insert:.6f} сек") + + print("поиск 110 записей:") + + exist_names = get_random_names(records, 100) + non_exist_names = [f"None_{i}" for i in range(10)] + + find_times = [] + for run in range(5): + start = time.perf_counter() + + for name in exist_names: + ll_find(head, name) + for name in non_exist_names: + ll_find(head, name) + + end = time.perf_counter() + find_times.append(end - start) + print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") + + avg_find = sum(find_times) / 5 + print(f"среднее: {avg_find:.6f} сек") + + print("удаление 50 случайных записей:") + + to_delete = get_random_names(records,50) + + delete_times = [] + for run in range(5): + current_head = head + start = time.perf_counter() + for name in to_delete: + current_head = ll_delete(current_head, name) + end = time.perf_counter() + delete_times.append(end - start) + print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") + + avg_delete = sum(delete_times) / 5 + print(f"среднее: {avg_delete:.6f} сек") + + return{ + 'structure': 'LinkedList', + 'mode': mode_name, + 'insert_avg': avg_insert, + 'insert_all': insert_times, + 'find_avg': avg_find, + 'find_all': find_times, + 'delete_avg': avg_delete, + 'delete_all': delete_times + } + +def run_hash_experiments(records, mode_name): + + print(f"\n хеш-таблица({mode_name})") + + print("вставка 10000 записей:") + + insert_times = [] + for run in range(5): + start = time.perf_counter() + + buckets = ht_create(1000) + for name, phone in records: + buckets = ht_insert(buckets, name, phone) + + end = time.perf_counter() + insert_times.append(end - start) + print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") + + avg_insert = sum(insert_times) / 5 + print(f"среднее: {avg_insert:.6f} сек") + + print("поиск 110 записей:") + + exist_names = get_random_names(records, 100) + non_exist_names = [f"None_{i}" for i in range(10)] + + find_times = [] + for run in range(5): + start = time.perf_counter() + + for name in exist_names: + ht_find(buckets, name) + for name in non_exist_names: + ht_find(buckets, name) + + end = time.perf_counter() + find_times.append(end - start) + print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") + + avg_find = sum(find_times) / 5 + print(f"среднее: {avg_find:.6f} сек") + + print("удаление 50 случайных записей:") + + to_delete = get_random_names(records,50) + + delete_times = [] + for run in range(5): + current_buckets = buckets.copy() + start = time.perf_counter() + for name in to_delete: + current_buckets = ht_delete(current_buckets, name) + end = time.perf_counter() + delete_times.append(end - start) + print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") + + avg_delete = sum(delete_times) / 5 + print(f"среднее: {avg_delete:.6f} сек") + + return{ + 'structure': 'HashTable', + 'mode': mode_name, + 'insert_avg': avg_insert, + 'insert_all': insert_times, + 'find_avg': avg_find, + 'find_all': find_times, + 'delete_avg': avg_delete, + 'delete_all': delete_times + } + +def run_bst_experiments(records, mode_name): + + print(f"\n двоичное дерево({mode_name})") + + print("вставка 10000 записей:") + + insert_times = [] + for run in range(5): + start = time.perf_counter() + + root = None + for name, phone in records: + root = bst_insert(root, name, phone) + + end = time.perf_counter() + insert_times.append(end - start) + print(f"Вставка {run+1}/5: {insert_times[-1]:.6f} сек") + + avg_insert = sum(insert_times) / 5 + print(f"среднее: {avg_insert:.6f} сек") + + print("поиск 110 записей:") + + exist_names = get_random_names(records, 100) + non_exist_names = [f"None_{i}" for i in range(10)] + + find_times = [] + for run in range(5): + start = time.perf_counter() + + for name in exist_names: + bst_find(root, name) + for name in non_exist_names: + bst_find(root, name) + + end = time.perf_counter() + find_times.append(end - start) + print(f"поиск {run+1}/5: {find_times[-1]:.6f} сек") + + avg_find = sum(find_times) / 5 + print(f"среднее: {avg_find:.6f} сек") + + print("удаление 50 случайных записей:") + + to_delete = get_random_names(records,50) + + delete_times = [] + for run in range(5): + current_root = root + start = time.perf_counter() + for name in to_delete: + current_root = bst_delete(current_root, name) + end = time.perf_counter() + delete_times.append(end - start) + print(f"удаление {run+1}/5: {delete_times[-1]:.6f} сек") + + avg_delete = sum(delete_times) / 5 + print(f"среднее: {avg_delete:.6f} сек") + + return{ + 'structure': 'BST', + 'mode': mode_name, + 'insert_avg': avg_insert, + 'insert_all': insert_times, + 'find_avg': avg_find, + 'find_all': find_times, + 'delete_avg': avg_delete, + 'delete_all': delete_times + } + +def save_results_to_csv(all_results): + + os.makedirs("docs/data", exist_ok=True) + + with open("docs/data/results.csv", "w", encoding="utf-8") as f: + + f.write("Структура, Режим, Операция, Замер, Время (сек)\n") + + for res in all_results: + struct = res['structure'] + mode = res['mode'] + + + for i, t in enumerate(res['insert_all']): + f.write(f"{struct},{mode},вставка,{i+1},{t}\n") + f.write(f"{struct},{mode},вставка,среднее,{res['insert_avg']}\n") + + + for i, t in enumerate(res['find_all']): + f.write(f"{struct},{mode},поиск,{i+1},{t}\n") + f.write(f"{struct},{mode},поиск,среднее,{res['find_avg']}\n") + + + for i, t in enumerate(res['delete_all']): + f.write(f"{struct},{mode},удаление,{i+1},{t}\n") + f.write(f"{struct},{mode},удаление,среднее,{res['delete_avg']}\n") + + +def main(): + print("эксперименты по замеру производительности") + + records_shuffled, records_sorted = generate_test_data(10000) + + all_results = [] + + print("режим: случайный порядок") + + all_results.append(run_linked_experiments(records_shuffled, "случайный")) + all_results.append(run_hash_experiments(records_shuffled, "случайный")) + all_results.append(run_bst_experiments(records_shuffled, "случайный")) + + print("режим: отсортированный порядок") + + all_results.append(run_linked_experiments(records_sorted, "отсортированный")) + all_results.append(run_hash_experiments(records_sorted, "отсортированный")) + all_results.append(run_bst_experiments(records_sorted, "отсортированный")) + + save_results_to_csv(all_results) + +if __name__== "__main__": + main() + + + diff --git a/victorovaas/lab1/phonebook.py b/victorovaas/lab1/lab1/phonebook.py similarity index 100% rename from victorovaas/lab1/phonebook.py rename to victorovaas/lab1/lab1/phonebook.py diff --git a/victorovaas/lab1/make_graphs.py b/victorovaas/lab1/make_graphs.py new file mode 100644 index 0000000..e23e7b6 --- /dev/null +++ b/victorovaas/lab1/make_graphs.py @@ -0,0 +1,123 @@ + +import matplotlib.pyplot as plt +import numpy as np +import os + + +os.makedirs('docs/data', exist_ok=True) + + +structures = ['LinkedList', 'HashTable', 'BST'] + +random_insert = [0.0037545, 0.015088, 0.026280] +sorted_insert = [0.0017544, 0.011369, 4.930788] + +random_search = [0.00000962, 0.0001646, 0.0002592] +sorted_search = [0.00000858, 0.00014016, 0.047126] + +random_delete = [0.0000079, 0.00009824, 0.00016984] +sorted_delete = [0.00000294, 0.00005878, 0.023013] + +x = np.arange(len(structures)) +width = 0.35 + +#график вставка +fig, ax = plt.subplots(figsize=(12, 7)) + +bars1 = ax.bar(x - width/2, random_insert, width, label='Случайный порядок', color='#3498db') +bars2 = ax.bar(x + width/2, sorted_insert, width, label='Отсортированный порядок', color='#e74c3c') + + +for bar in bars1: + height = bar.get_height() + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +for bar in bars2: + height = bar.get_height() + if height < 1: + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + else: + ax.annotate(f'{height:.1f} сек', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 5), textcoords="offset points", ha='center', va='bottom', fontsize=10, fontweight='bold') + +ax.set_ylabel('Время (сек)', fontsize=12) +ax.set_title('Время вставки 10000 записей', fontsize=14, fontweight='bold') +ax.set_xticks(x) +ax.set_xticklabels(structures, fontsize=11) +ax.legend(fontsize=11) +ax.set_yscale('log') +ax.grid(True, alpha=0.3, axis='y') + +plt.tight_layout() +plt.savefig('docs/data/graph_insert.png', dpi=150, bbox_inches='tight') +plt.close() + + +# график поиск +fig, ax = plt.subplots(figsize=(12, 7)) + +bars1 = ax.bar(x - width/2, random_search, width, label='Случайный порядок', color='#3498db') +bars2 = ax.bar(x + width/2, sorted_search, width, label='Отсортированный порядок', color='#e74c3c') + +for bar in bars1: + height = bar.get_height() + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +for bar in bars2: + height = bar.get_height() + if height < 0.01: + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + else: + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +ax.set_ylabel('Время (сек)', fontsize=12) +ax.set_title('Время поиска 110 записей', fontsize=14, fontweight='bold') +ax.set_xticks(x) +ax.set_xticklabels(structures, fontsize=11) +ax.legend(fontsize=11) +ax.set_yscale('log') +ax.grid(True, alpha=0.3, axis='y') + +plt.tight_layout() +plt.savefig('docs/data/graph_search.png', dpi=150, bbox_inches='tight') +plt.close() + + +# график удаление +fig, ax = plt.subplots(figsize=(12, 7)) + +bars1 = ax.bar(x - width/2, random_delete, width, label='Случайный порядок', color='#3498db') +bars2 = ax.bar(x + width/2, sorted_delete, width, label='Отсортированный порядок', color='#e74c3c') + +for bar in bars1: + height = bar.get_height() + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +for bar in bars2: + height = bar.get_height() + if height < 0.01: + ax.annotate(f'{height:.6f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + else: + ax.annotate(f'{height:.4f}', xy=(bar.get_x() + bar.get_width()/2, height), + xytext=(0, 3), textcoords="offset points", ha='center', va='bottom', fontsize=9) + +ax.set_ylabel('Время (сек)', fontsize=12) +ax.set_title('Время удаления 50 записей', fontsize=14, fontweight='bold') +ax.set_xticks(x) +ax.set_xticklabels(structures, fontsize=11) +ax.legend(fontsize=11) +ax.set_yscale('log') +ax.grid(True, alpha=0.3, axis='y') + +plt.tight_layout() +plt.savefig('docs/data/graph_delete.png', dpi=150, bbox_inches='tight') +plt.close() + +