From 6e7f88a63cd4da28fe486b6f4746ccbfbeedba63 Mon Sep 17 00:00:00 2001 From: kalinovskiymi Date: Sun, 24 May 2026 21:54:53 +0000 Subject: [PATCH] revert 4633efddaeaa9c946540f506375dde0ff530eaf6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit revert Загрузить файлы в «kalinovskiymi/docs/data» --- kalinovskiymi/docs/data/benchmark_results.png | Bin 93612 -> 0 bytes kalinovskiymi/docs/data/results.csv | 91 ----- kalinovskiymi/docs/data/task_1.py | 377 ------------------ 3 files changed, 468 deletions(-) delete mode 100644 kalinovskiymi/docs/data/benchmark_results.png delete mode 100644 kalinovskiymi/docs/data/results.csv delete mode 100644 kalinovskiymi/docs/data/task_1.py diff --git a/kalinovskiymi/docs/data/benchmark_results.png b/kalinovskiymi/docs/data/benchmark_results.png deleted file mode 100644 index a97eb487cd0454f25b780b7524708dd547200e3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93612 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

uhu&IDNNj{BX)D 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%0D}(~@>BHM`?`ZBHN?Oy4` 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

9rW!bgVs4H!UwW!LF{mT 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 diff --git a/kalinovskiymi/docs/data/results.csv b/kalinovskiymi/docs/data/results.csv deleted file mode 100644 index 2c555e4e..00000000 --- a/kalinovskiymi/docs/data/results.csv +++ /dev/null @@ -1,91 +0,0 @@ -structure,order,operation,time,run -LinkedList,shuffled,insert,0.030281299999999955,1 -LinkedList,shuffled,find,0.004695899999999975,1 -LinkedList,shuffled,delete,0.0033233999999999764,1 -LinkedList,shuffled,insert,0.0353907,2 -LinkedList,shuffled,find,0.005563899999999955,2 -LinkedList,shuffled,delete,0.0034716999999999665,2 -LinkedList,shuffled,insert,0.01944009999999996,3 -LinkedList,shuffled,find,0.002577700000000016,3 -LinkedList,shuffled,delete,0.0018714000000000786,3 -LinkedList,shuffled,insert,0.022181000000000006,4 -LinkedList,shuffled,find,0.004234000000000071,4 -LinkedList,shuffled,delete,0.0031284999999999785,4 -LinkedList,shuffled,insert,0.02823869999999995,5 -LinkedList,shuffled,find,0.004262699999999953,5 -LinkedList,shuffled,delete,0.0031122999999999568,5 -HashTable,shuffled,insert,0.000658699999999901,1 -HashTable,shuffled,find,5.359999999998699e-05,1 -HashTable,shuffled,delete,2.869999999999262e-05,1 -HashTable,shuffled,insert,0.0008105999999999947,2 -HashTable,shuffled,find,5.250000000001087e-05,2 -HashTable,shuffled,delete,2.8000000000028002e-05,2 -HashTable,shuffled,insert,0.0006085000000000118,3 -HashTable,shuffled,find,5.270000000001662e-05,3 -HashTable,shuffled,delete,2.76000000000165e-05,3 -HashTable,shuffled,insert,0.0005973000000000228,4 -HashTable,shuffled,find,5.179999999993523e-05,4 -HashTable,shuffled,delete,2.740000000001075e-05,4 -HashTable,shuffled,insert,0.0005963999999999414,5 -HashTable,shuffled,find,5.250000000001087e-05,5 -HashTable,shuffled,delete,2.7699999999963865e-05,5 -BST,shuffled,insert,0.0025841999999999254,1 -BST,shuffled,find,0.0001540000000000985,1 -BST,shuffled,delete,0.00013839999999998298,1 -BST,shuffled,insert,0.0025424000000000557,2 -BST,shuffled,find,0.000152800000000064,2 -BST,shuffled,delete,0.00013700000000005375,2 -BST,shuffled,insert,0.0025473999999999775,3 -BST,shuffled,find,0.00015370000000003436,3 -BST,shuffled,delete,0.00013370000000001436,3 -BST,shuffled,insert,0.0025645000000000806,4 -BST,shuffled,find,0.00015940000000003174,4 -BST,shuffled,delete,0.00013249999999997986,4 -BST,shuffled,insert,0.0025673999999999975,5 -BST,shuffled,find,0.00015799999999999148,5 -BST,shuffled,delete,0.0007081999999999367,5 -LinkedList,sorted,insert,0.04947849999999998,1 -LinkedList,sorted,find,0.0053706999999999505,1 -LinkedList,sorted,delete,0.003119800000000006,1 -LinkedList,sorted,insert,0.05800839999999996,2 -LinkedList,sorted,find,0.005768099999999943,2 -LinkedList,sorted,delete,0.0038080000000000336,2 -LinkedList,sorted,insert,0.05770470000000005,3 -LinkedList,sorted,find,0.0049146999999999386,3 -LinkedList,sorted,delete,0.003128599999999926,3 -LinkedList,sorted,insert,0.05588850000000001,4 -LinkedList,sorted,find,0.004705699999999924,4 -LinkedList,sorted,delete,0.0031733000000000455,4 -LinkedList,sorted,insert,0.05095189999999983,5 -LinkedList,sorted,find,0.0028690999999998468,5 -LinkedList,sorted,delete,0.0018724999999999437,5 -HashTable,sorted,insert,0.0004965999999999582,1 -HashTable,sorted,find,3.719999999995949e-05,1 -HashTable,sorted,delete,2.10999999998851e-05,1 -HashTable,sorted,insert,0.0004729999999999457,2 -HashTable,sorted,find,3.5199999999901976e-05,2 -HashTable,sorted,delete,2.0600000000037255e-05,2 -HashTable,sorted,insert,0.00046370000000006684,3 -HashTable,sorted,find,3.5699999999971865e-05,3 -HashTable,sorted,delete,2.0400000000142526e-05,3 -HashTable,sorted,insert,0.0004648999999998793,4 -HashTable,sorted,find,3.520000000012402e-05,4 -HashTable,sorted,delete,2.0600000000037255e-05,4 -HashTable,sorted,insert,0.000461600000000173,5 -HashTable,sorted,find,3.690000000000637e-05,5 -HashTable,sorted,delete,2.1499999999896602e-05,5 -BST,sorted,insert,0.09513269999999996,1 -BST,sorted,find,0.006302800000000053,1 -BST,sorted,delete,0.006097499999999867,1 -BST,sorted,insert,0.12047529999999984,2 -BST,sorted,find,0.006049799999999994,2 -BST,sorted,delete,0.0062197999999999976,2 -BST,sorted,insert,0.10559420000000008,3 -BST,sorted,find,0.003817999999999877,3 -BST,sorted,delete,0.004166000000000114,3 -BST,sorted,insert,0.09572439999999993,4 -BST,sorted,find,0.005789299999999997,4 -BST,sorted,delete,0.006035599999999919,4 -BST,sorted,insert,0.13064960000000014,5 -BST,sorted,find,0.006988800000000017,5 -BST,sorted,delete,0.006825800000000104,5 diff --git a/kalinovskiymi/docs/data/task_1.py b/kalinovskiymi/docs/data/task_1.py deleted file mode 100644 index ee7c1412..00000000 --- a/kalinovskiymi/docs/data/task_1.py +++ /dev/null @@ -1,377 +0,0 @@ -import sys - -sys.setrecursionlimit(10000) - -import time -import random -import csv -import os -import matplotlib.pyplot as plt -import numpy as np - - -def ll_insert(head, name, phone): - new_node = {'name': name, 'phone': phone, 'next': None} - if head is None: - return new_node - if head['name'] > name: - new_node['next'] = head - return new_node - current = head - while current['next'] is not None and current['next']['name'] < name: - current = current['next'] - if current['name'] == name: - current['phone'] = phone - return head - new_node['next'] = 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): - result = [] - current = head - while current is not None: - result.append((current['name'], current['phone'])) - current = current['next'] - result.sort(key=lambda x: x[0]) - return result - - -def ht_insert(buckets, name, phone): - index = hash(name) % len(buckets) - buckets[index] = ll_insert(buckets[index], name, phone) - - -def ht_find(buckets, name): - index = hash(name) % len(buckets) - return ll_find(buckets[index], name) - - -def ht_delete(buckets, name): - index = hash(name) % len(buckets) - buckets[index] = ll_delete(buckets[index], name) - - -def ht_list_all(buckets): - result = [] - for bucket in buckets: - if bucket is not None: - current = bucket - while current is not None: - result.append((current['name'], current['phone'])) - current = current['next'] - result.sort(key=lambda x: x[0]) - return result - - -def bst_insert(root, name, phone): - if root is None: - return {'name': name, 'phone': phone, 'left': None, 'right': None} - if name < root['name']: - root['left'] = bst_insert(root['left'], name, phone) - elif name > root['name']: - root['right'] = bst_insert(root['right'], name, phone) - else: - root['phone'] = phone - 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_delete(root, name): - if root is None: - return None - if name < root['name']: - root['left'] = bst_delete(root['left'], name) - elif name > root['name']: - root['right'] = bst_delete(root['right'], name) - else: - if root['left'] is None: - return root['right'] - if root['right'] is None: - return root['left'] - min_node = root['right'] - while min_node['left'] is not None: - min_node = min_node['left'] - root['name'] = min_node['name'] - root['phone'] = min_node['phone'] - root['right'] = bst_delete(root['right'], min_node['name']) - return root - - -def bst_list_all(root): - result = [] - - def inorder(node): - if node is not None: - inorder(node['left']) - result.append((node['name'], node['phone'])) - inorder(node['right']) - - inorder(root) - return result - - -def generate_records(n, mode='shuffled'): - names = [f"User_{i:05d}" for i in range(n)] - if mode == 'shuffled': - random.shuffle(names) - records = [(name, f"Phone_{i}") for i, name in enumerate(names)] - return records - - -def benchmark_insert(structure_type, records, buckets_size=512): - if structure_type == 'LinkedList': - head = None - start = time.perf_counter() - for name, phone in records: - head = ll_insert(head, name, phone) - end = time.perf_counter() - return end - start, head - elif structure_type == 'HashTable': - buckets = [None] * buckets_size - start = time.perf_counter() - for name, phone in records: - ht_insert(buckets, name, phone) - end = time.perf_counter() - return end - start, buckets - elif structure_type == 'BST': - root = None - start = time.perf_counter() - for name, phone in records: - root = bst_insert(root, name, phone) - end = time.perf_counter() - return end - start, root - - -def benchmark_find(structure_type, structure, names): - start = time.perf_counter() - if structure_type == 'LinkedList': - for name in names: - ll_find(structure, name) - elif structure_type == 'HashTable': - for name in names: - ht_find(structure, name) - elif structure_type == 'BST': - for name in names: - bst_find(structure, name) - end = time.perf_counter() - return end - start - - -def benchmark_delete(structure_type, structure, names): - start = time.perf_counter() - if structure_type == 'LinkedList': - head = structure - for name in names: - head = ll_delete(head, name) - end = time.perf_counter() - return end - start, head - elif structure_type == 'HashTable': - buckets = structure - for name in names: - ht_delete(buckets, name) - end = time.perf_counter() - return end - start, buckets - elif structure_type == 'BST': - root = structure - for name in names: - root = bst_delete(root, name) - end = time.perf_counter() - return end - start, root - - -def benchmark_list_all(structure_type, structure): - start = time.perf_counter() - if structure_type == 'LinkedList': - ll_list_all(structure) - elif structure_type == 'HashTable': - ht_list_all(structure) - elif structure_type == 'BST': - bst_list_all(structure) - end = time.perf_counter() - return end - start - - -def main(): - random.seed(42) - N = 1000 - REPETITIONS = 5 - - all_results = [] - structures = ['LinkedList', 'HashTable', 'BST'] - modes = ['shuffled', 'sorted'] - - os.makedirs('docs/data', exist_ok=True) - - for mode in modes: - records = generate_records(N, mode) - find_names = [random.choice(records)[0] for _ in range(100)] + [f"None_{i}" for i in range(10)] - delete_names = [random.choice(records)[0] for _ in range(50)] - - for struct in structures: - print(f"Тестирую {struct} на {mode} данных...") - for rep in range(REPETITIONS): - insert_time, structure = benchmark_insert(struct, records) - all_results.append([struct, mode, 'insert', insert_time, rep + 1]) - - find_time = benchmark_find(struct, structure, find_names) - all_results.append([struct, mode, 'find', find_time, rep + 1]) - - delete_time, _ = benchmark_delete(struct, structure, delete_names) - all_results.append([struct, mode, 'delete', delete_time, rep + 1]) - - with open('docs/data/results.csv', 'w', newline='') as f: - writer = csv.writer(f) - writer.writerow(['structure', 'order', 'operation', 'time', 'run']) - writer.writerows(all_results) - - print("\nCSV сохранён в docs/data/results.csv") - - data = {} - for row in all_results: - key = (row[0], row[1], row[2]) - if key not in data: - data[key] = [] - data[key].append(row[3]) - - averaged = [] - for key, times in data.items(): - avg_time = sum(times) / len(times) - averaged.append([key[0], key[1], key[2], avg_time]) - - print("\nУСРЕДНЁННЫЕ РЕЗУЛЬТАТЫ (сек):") - print(f"{'Структура':<15} {'Режим':<15} {'Операция':<10} {'Среднее время':<15}") - print("-" * 55) - for row in sorted(averaged, key=lambda x: (x[0], x[1], x[2])): - print(f"{row[0]:<15} {row[1]:<15} {row[2]:<10} {row[3]:<15.6f}") - - structures_list = ['LinkedList', 'HashTable', 'BST'] - operations_list = ['insert', 'find', 'delete'] - - fig, axes = plt.subplots(1, 3, figsize=(18, 6)) - - for i, op in enumerate(operations_list): - ax = axes[i] - x = np.arange(len(structures_list)) - width = 0.35 - - shuffled_times = [] - sorted_times = [] - - for struct in structures_list: - shuffled_times.append( - next(row[3] for row in averaged if row[0] == struct and row[1] == 'shuffled' and row[2] == op)) - sorted_times.append( - next(row[3] for row in averaged if row[0] == struct and row[1] == 'sorted' and row[2] == op)) - - bars1 = ax.bar(x - width / 2, shuffled_times, width, label='Случайный', color='#3498db') - bars2 = ax.bar(x + width / 2, sorted_times, width, label='Отсортированный', color='#e74c3c') - - for bar in bars1: - height = bar.get_height() - ax.text(bar.get_x() + bar.get_width() / 2., height + max(shuffled_times) * 0.01, - f'{height:.6f}', ha='center', va='bottom', fontsize=7) - for bar in bars2: - height = bar.get_height() - ax.text(bar.get_x() + bar.get_width() / 2., height + max(sorted_times) * 0.01, - f'{height:.6f}', ha='center', va='bottom', fontsize=7) - - ax.set_xlabel('Структура данных') - ax.set_ylabel('Время (сек)') - ax.set_title(f'Операция: {op}') - ax.set_xticks(x) - ax.set_xticklabels(structures_list) - ax.legend() - ax.grid(axis='y', alpha=0.3) - - if op == 'find': - ax.set_yscale('log') - - plt.suptitle(f'Сравнение производительности структур данных (N = {N} записей)', - fontsize=14, fontweight='bold') - plt.tight_layout() - - os.makedirs('docs', exist_ok=True) - plt.savefig('docs/benchmark_results.png', dpi=150, bbox_inches='tight') - plt.show() - print(f"График сохранён в docs/benchmark_results.png") - - print("\nАНАЛИЗ РЕЗУЛЬТАТОВ") - - print("\n1. Влияние порядка данных на BST:") - bst_shuffled_insert = next( - row[3] for row in averaged if row[0] == 'BST' and row[1] == 'shuffled' and row[2] == 'insert') - bst_sorted_insert = next( - row[3] for row in averaged if row[0] == 'BST' and row[1] == 'sorted' and row[2] == 'insert') - print(f" - Случайные данные: {bst_shuffled_insert:.6f} сек") - print(f" - Отсортированные данные: {bst_sorted_insert:.6f} сек") - if bst_shuffled_insert > 0: - print(f" - Замедление в {bst_sorted_insert / bst_shuffled_insert:.1f} раз") - print(" Причина: на отсортированных данных BST вырождается в связный список (глубина = N)") - - print("\n2. Стабильность хеш-таблицы:") - ht_shuffled = next( - row[3] for row in averaged if row[0] == 'HashTable' and row[1] == 'shuffled' and row[2] == 'insert') - ht_sorted = next(row[3] for row in averaged if row[0] == 'HashTable' and row[1] == 'sorted' and row[2] == 'insert') - print(f" - Случайные: {ht_shuffled:.6f} сек") - print(f" - Отсортированные: {ht_sorted:.6f} сек") - print(" Причина: хеш-функция равномерно распределяет ключи независимо от порядка") - - print("\n3. Медленный поиск в связном списке:") - ll_search = next(row[3] for row in averaged if row[0] == 'LinkedList' and row[1] == 'shuffled' and row[2] == 'find') - ht_search = next(row[3] for row in averaged if row[0] == 'HashTable' and row[1] == 'shuffled' and row[2] == 'find') - print(f" - LinkedList: {ll_search:.6f} сек") - print(f" - HashTable: {ht_search:.6f} сек") - if ht_search > 0: - print(f" - Хеш-таблица быстрее в {ll_search / ht_search:.1f} раз") - print(" Причина: поиск в списке всегда O(n), в хеш-таблице ~O(1)") - - print("\n4. Удаление:") - for label in ['LinkedList', 'HashTable', 'BST']: - del_shuff = next(row[3] for row in averaged if row[0] == label and row[1] == 'shuffled' and row[2] == 'delete') - del_sort = next(row[3] for row in averaged if row[0] == label and row[1] == 'sorted' and row[2] == 'delete') - print(f" - {label:15}: случ.={del_shuff:.6f} сек, отсорт.={del_sort:.6f} сек") - - print("\n5. Рекомендации:") - print(" - Частый поиск + вставки → Хеш-таблица") - print(" - Нужна сортировка «из коробки» → Сбалансированное BST (AVL/Красно-чёрное)") - print(" - Только добавление в конец → Связный список") - print(" - Обычный BST опасен на реальных частично упорядоченных данных!") - -if __name__ == '__main__': - main() \ No newline at end of file