From 032b22c79f36bc4f295aa4ace187854af833e8d8 Mon Sep 17 00:00:00 2001 From: Sorokin Fedor Date: Thu, 21 May 2026 15:59:26 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=201:?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=D0=BB=D0=B8=D0=B7=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C?= =?UTF-8?q?=D1=82=D0=B0=D1=82=D0=BE=D0=B2=20(=D0=B3=D1=80=D0=B0=D1=84?= =?UTF-8?q?=D0=B8=D0=BA,=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D1=8B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- benchmark_chart.png | Bin 0 -> 30671 bytes results.csv | 178 ++++++++++++++++++++++---------------------- sorokinfi/427.md | 73 +++++++++++++++++- 3 files changed, 160 insertions(+), 91 deletions(-) create mode 100644 benchmark_chart.png diff --git a/benchmark_chart.png b/benchmark_chart.png new file mode 100644 index 0000000000000000000000000000000000000000..84c386e10f4c481abb3587e1873118d77bd55851 GIT binary patch literal 30671 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 literal 0 HcmV?d00001 diff --git a/results.csv b/results.csv index cd5145e..4891afc 100644 --- a/results.csv +++ b/results.csv @@ -1,91 +1,91 @@ структура,режим,операция,повторение,время (сек) -LinkedList,случайный,вставка,1,0.128959799999393 -LinkedList,случайный,поиск,1,0.006587400000171328 -LinkedList,случайный,удаление,1,0.0037955999996484024 -LinkedList,случайный,вставка,2,0.1274652000001879 -LinkedList,случайный,поиск,2,0.006692099999781931 -LinkedList,случайный,удаление,2,0.0038293999996312778 -LinkedList,случайный,вставка,3,0.13063139999940176 -LinkedList,случайный,поиск,3,0.006624399999964226 -LinkedList,случайный,удаление,3,0.004125400000702939 -LinkedList,случайный,вставка,4,0.13235040000017761 -LinkedList,случайный,поиск,4,0.007224200000564451 -LinkedList,случайный,удаление,4,0.0038412000003518187 -LinkedList,случайный,вставка,5,0.1376228999997693 -LinkedList,случайный,поиск,5,0.007752999999866006 -LinkedList,случайный,удаление,5,0.004621699999916018 -LinkedList,отсортированный,вставка,1,0.14293330000054993 -LinkedList,отсортированный,поиск,1,0.006024299999808136 -LinkedList,отсортированный,удаление,1,0.004954899999574991 -LinkedList,отсортированный,вставка,2,0.1474125999993703 -LinkedList,отсортированный,поиск,2,0.00762140000006184 -LinkedList,отсортированный,удаление,2,0.0051066999994873186 -LinkedList,отсортированный,вставка,3,0.13767009999992297 -LinkedList,отсортированный,поиск,3,0.0064199999997072155 -LinkedList,отсортированный,удаление,3,0.005227899999226793 -LinkedList,отсортированный,вставка,4,0.13925280000057683 -LinkedList,отсортированный,поиск,4,0.006386400000337744 -LinkedList,отсортированный,удаление,4,0.0049518000005264184 -LinkedList,отсортированный,вставка,5,0.13541350000014063 -LinkedList,отсортированный,поиск,5,0.006607199999962177 -LinkedList,отсортированный,удаление,5,0.005551099999138387 -HashTable,случайный,вставка,1,0.00123639999947045 -HashTable,случайный,поиск,1,3.639999977167463e-05 -HashTable,случайный,удаление,1,1.9799999790848233e-05 -HashTable,случайный,вставка,2,0.000970699999925273 -HashTable,случайный,поиск,2,3.259999994043028e-05 -HashTable,случайный,удаление,2,1.7100000150094274e-05 -HashTable,случайный,вставка,3,0.0009898999996948987 -HashTable,случайный,поиск,3,3.20999997711624e-05 -HashTable,случайный,удаление,3,1.7100000150094274e-05 -HashTable,случайный,вставка,4,0.001140299999860872 -HashTable,случайный,поиск,4,0.00010819999988598283 -HashTable,случайный,удаление,4,4.2800000301213004e-05 -HashTable,случайный,вставка,5,0.001704299999801151 -HashTable,случайный,поиск,5,3.510000078676967e-05 -HashTable,случайный,удаление,5,1.83000001925393e-05 -HashTable,отсортированный,вставка,1,0.0009811999998419196 -HashTable,отсортированный,поиск,1,3.110000034212135e-05 -HashTable,отсортированный,удаление,1,1.9400000383029692e-05 -HashTable,отсортированный,вставка,2,0.0009785000002011657 -HashTable,отсортированный,поиск,2,3.1599999601894524e-05 -HashTable,отсортированный,удаление,2,1.9800000700342935e-05 -HashTable,отсортированный,вставка,3,0.0009659999996074475 +LinkedList,случайный,вставка,1,0.13309969999954774 +LinkedList,случайный,поиск,1,0.009379099999932805 +LinkedList,случайный,удаление,1,0.004902000000583939 +LinkedList,случайный,вставка,2,0.11298999999962689 +LinkedList,случайный,поиск,2,0.00728259999959846 +LinkedList,случайный,удаление,2,0.003859800000100222 +LinkedList,случайный,вставка,3,0.12435430000004999 +LinkedList,случайный,поиск,3,0.006995800000368035 +LinkedList,случайный,удаление,3,0.0038894999997864943 +LinkedList,случайный,вставка,4,0.11281289999988076 +LinkedList,случайный,поиск,4,0.0073154000001522945 +LinkedList,случайный,удаление,4,0.004016099999716971 +LinkedList,случайный,вставка,5,0.12206900000001042 +LinkedList,случайный,поиск,5,0.007770400000481459 +LinkedList,случайный,удаление,5,0.0039008999992802273 +LinkedList,отсортированный,вставка,1,0.12199670000063634 +LinkedList,отсортированный,поиск,1,0.006072700000004261 +LinkedList,отсортированный,удаление,1,0.004619700000148441 +LinkedList,отсортированный,вставка,2,0.11778119999962655 +LinkedList,отсортированный,поиск,2,0.005873400000382389 +LinkedList,отсортированный,удаление,2,0.004716499999631196 +LinkedList,отсортированный,вставка,3,0.11716749999959575 +LinkedList,отсортированный,поиск,3,0.006211500000063097 +LinkedList,отсортированный,удаление,3,0.004824199999347911 +LinkedList,отсортированный,вставка,4,0.1168800999994346 +LinkedList,отсортированный,поиск,4,0.00615879999986646 +LinkedList,отсортированный,удаление,4,0.004850500000429747 +LinkedList,отсортированный,вставка,5,0.12217359999976907 +LinkedList,отсортированный,поиск,5,0.0060359999997672276 +LinkedList,отсортированный,удаление,5,0.0046704000005775015 +HashTable,случайный,вставка,1,0.001177799999823037 +HashTable,случайный,поиск,1,3.729999934876105e-05 +HashTable,случайный,удаление,1,2.009999934671214e-05 +HashTable,случайный,вставка,2,0.001008700000056706 +HashTable,случайный,поиск,2,3.290000040578889e-05 +HashTable,случайный,удаление,2,1.6900000446185004e-05 +HashTable,случайный,вставка,3,0.0010118999998667277 +HashTable,случайный,поиск,3,3.500000002532033e-05 +HashTable,случайный,удаление,3,2.0599999515980016e-05 +HashTable,случайный,вставка,4,0.0010044999999081483 +HashTable,случайный,поиск,4,3.1800000215298496e-05 +HashTable,случайный,удаление,4,1.700000029813964e-05 +HashTable,случайный,вставка,5,0.001006999999844993 +HashTable,случайный,поиск,5,3.1599999601894524e-05 +HashTable,случайный,удаление,5,1.649999921937706e-05 +HashTable,отсортированный,вставка,1,0.0009728999993967591 +HashTable,отсортированный,поиск,1,3.0100000003585592e-05 +HashTable,отсортированный,удаление,1,1.9299999621580355e-05 +HashTable,отсортированный,вставка,2,0.0009723000002850313 +HashTable,отсортированный,поиск,2,2.9599999834317714e-05 +HashTable,отсортированный,удаление,2,1.919999976962572e-05 +HashTable,отсортированный,вставка,3,0.0009663999999247608 HashTable,отсортированный,поиск,3,3.0500000320898835e-05 -HashTable,отсортированный,удаление,3,1.9299999621580355e-05 -HashTable,отсортированный,вставка,4,0.0009494000005361158 -HashTable,отсортированный,поиск,4,2.989999939018162e-05 -HashTable,отсортированный,удаление,4,1.8900000213761814e-05 -HashTable,отсортированный,вставка,5,0.0012150000002293382 -HashTable,отсортированный,поиск,5,3.480000032141106e-05 -HashTable,отсортированный,удаление,5,2.0899999981338624e-05 -BST,случайный,вставка,1,0.004831499999454536 -BST,случайный,поиск,1,0.00013619999936054228 -BST,случайный,удаление,1,9.070000032807002e-05 -BST,случайный,вставка,2,0.005335699999704957 -BST,случайный,поиск,2,0.00012989999959245324 -BST,случайный,удаление,2,8.600000001024455e-05 -BST,случайный,вставка,3,0.005207599999266677 -BST,случайный,поиск,3,0.00013050000052317046 -BST,случайный,удаление,3,8.580000030633528e-05 -BST,случайный,вставка,4,0.005297200000313751 -BST,случайный,поиск,4,0.00013440000020636944 -BST,случайный,удаление,4,8.789999992586672e-05 -BST,случайный,вставка,5,0.005037799999627168 -BST,случайный,поиск,5,0.000649399999929301 -BST,случайный,удаление,5,0.0001084000004993868 -BST,отсортированный,вставка,1,0.8110883999997895 -BST,отсортированный,поиск,1,0.019361399999979767 -BST,отсортированный,удаление,1,0.014678200000162178 -BST,отсортированный,вставка,2,0.7911546999994243 -BST,отсортированный,поиск,2,0.019212399999560148 -BST,отсортированный,удаление,2,0.013222700000369514 -BST,отсортированный,вставка,3,0.7786938999997801 -BST,отсортированный,поиск,3,0.01864480000040203 -BST,отсортированный,удаление,3,0.013478699999723176 -BST,отсортированный,вставка,4,0.7826362000005247 -BST,отсортированный,поиск,4,0.01973920000000362 -BST,отсортированный,удаление,4,0.013336900000467722 -BST,отсортированный,вставка,5,0.7718632000005528 -BST,отсортированный,поиск,5,0.02021930000046268 -BST,отсортированный,удаление,5,0.013186899999709567 +HashTable,отсортированный,удаление,3,1.9699999938893598e-05 +HashTable,отсортированный,вставка,4,0.0011242000000493135 +HashTable,отсортированный,поиск,4,3.400000059627928e-05 +HashTable,отсортированный,удаление,4,2.080000012938399e-05 +HashTable,отсортированный,вставка,5,0.0009773000001587206 +HashTable,отсортированный,поиск,5,3.100000049016671e-05 +HashTable,отсортированный,удаление,5,1.9699999938893598e-05 +BST,случайный,вставка,1,0.004384899999422487 +BST,случайный,поиск,1,0.0001329000006080605 +BST,случайный,удаление,1,8.230000003095483e-05 +BST,случайный,вставка,2,0.004304400000364694 +BST,случайный,поиск,2,0.00014240000018617138 +BST,случайный,удаление,2,8.129999969241908e-05 +BST,случайный,вставка,3,0.004376699999738776 +BST,случайный,поиск,3,0.00014179999925545417 +BST,случайный,удаление,3,8.269999943877338e-05 +BST,случайный,вставка,4,0.004673599999478029 +BST,случайный,поиск,4,0.0001511999998911051 +BST,случайный,удаление,4,0.00012150000020483276 +BST,случайный,вставка,5,0.004335399999945366 +BST,случайный,поиск,5,0.00013080000007903436 +BST,случайный,удаление,5,7.93999997767969e-05 +BST,отсортированный,вставка,1,0.7882552000000942 +BST,отсортированный,поиск,1,0.01960369999960676 +BST,отсортированный,удаление,1,0.013939499999651161 +BST,отсортированный,вставка,2,0.7601769000002605 +BST,отсортированный,поиск,2,0.019820599999547994 +BST,отсортированный,удаление,2,0.01359989999946265 +BST,отсортированный,вставка,3,0.741146899999876 +BST,отсортированный,поиск,3,0.018209700000625162 +BST,отсортированный,удаление,3,0.012622499999451975 +BST,отсортированный,вставка,4,0.7348717000004399 +BST,отсортированный,поиск,4,0.01830170000084763 +BST,отсортированный,удаление,4,0.012606900000719179 +BST,отсортированный,вставка,5,0.7420961000007082 +BST,отсортированный,поиск,5,0.018224400000690366 +BST,отсортированный,удаление,5,0.012539400000605383 diff --git a/sorokinfi/427.md b/sorokinfi/427.md index a84d3d9..f2b1dc8 100644 --- a/sorokinfi/427.md +++ b/sorokinfi/427.md @@ -3,6 +3,8 @@ import random import sys import time from collections import defaultdict +import pandas as pd +import matplotlib.pyplot as plt # увеличиваем лимит рекурсии sys.setrecursionlimit(25000) @@ -157,7 +159,7 @@ def bst_list_all(root): return records -# ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ +# 4. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ def run_experiments(): N = 3000 @@ -272,8 +274,75 @@ def show_summary(rows): print(f"{struct:<12} | {mode:<15} | {op:<10} | {avg_time:.6f}") + +# 5. АНАЛИЗ РЕЗУЛЬТАТОВ + +def plot_results(csv_filename="results.csv"): + print("построение графика") + try: + df = pd.read_csv(csv_filename) + + df_insert = df[df["операция"] == "вставка"] + + pivot_df = df_insert.pivot_table( + index="структура", + columns="режим", + values="время (сек)", + aggfunc="mean" + ) + + pivot_df.plot(kind="bar", figsize=(10, 6), color=['#1f77b4', '#ff7f0e']) + + plt.title("сравнение времени вставки (N=3000)") + plt.ylabel("среднее время выполнения (сек)") + plt.xlabel("структура данных") + plt.xticks(rotation=0) + plt.grid(axis='y', linestyle='--', alpha=0.7) + plt.savefig("benchmark_chart.png") + print("график сохранен как benchmark_chart.png") + plt.show() + + except FileNotFoundError: + print(f"файл {csv_filename} не найден. сначала запустите тесты.") + + +def print_report(): + report = """ + + 5. АНАЛИЗ РЕЗУЛЬТАТОВ ЭКСПЕРИМЕНТОВ + +1. Влияние порядка входных данных на скорость вставки в BST: + - На случайных данных BST строится сбалансированным. Высота дерева составляет + примерно O(log N), поэтому вставка происходит почти мгновенно. + - На отсортированных данных происходит ДЕГРАДАЦИЯ дерева. Каждый элемент больше + предыдущего и вставляется строго вправо. Дерево вырождается в связный список. + Сложность возрастает до O(N), что отчетливо видно по гигантскому пику на графике. + +2. Чувствительность Хеш-таблицы к порядку: + - Хеш-таблица НЕ ЧУВСТВИТЕЛЬНА к порядку данных. Математическая хеш-функция + превращает любое имя в хаотичный индекс и равномерно распределяет записи + по бакетам. В обоих режимах операции выполняются за константное время O(1). + +3. Почему связный список всегда медленен при поиске: + - У связного списка нет индексов для прямого доступа. Поиск всегда линейный O(N) + — алгоритм вынужден последовательно перебирать элементы от головы к хвосту. + +4. Как удаление работает в каждой структуре: + - Связный список: O(N) затрачивается на линейный поиск узла, само удаление — O(1). + - Хеш-таблица: O(1) нахождение бакета по хешу, удаление из цепочки коллизий мгновенно. + - BST: В среднем O(log N), в худшем O(N). Требует поиска узла и перестройки связей + (замена удаляемого узла на его потомка или минимальный элемент правого поддерева). + +ВЫВОД: + - ДЛЯ ЧАСТЫХ ВСТАВОК И ПОИСКА: Идеально подходит Хеш-таблица благодаря скорости O(1). + - ДЛЯ ПОЛУЧЕНИЯ ДАННЫХ В ПОРЯДКЕ (АЛФАВИТНОМ): Стоит выбирать Двоичное дерево поиска + (BST), так как обход дерева (In-order traversal) сразу выдает отсортированные данные. + """ + print(report) + if __name__ == "__main__": run_experiments() - + plot_results() + print_report()