From 6fc7a657d2df08a842b84d68b777e5ff8785afb6 Mon Sep 17 00:00:00 2001 From: ivanchenkoam Date: Sat, 23 May 2026 17:17:23 +0300 Subject: [PATCH] =?UTF-8?q?[1]=20=D0=BE=D1=82=D1=87=D0=B5=D1=82=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D0=BB=D0=B0=D0=B1=D0=B5=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ivanchenkoam/performance_comparison.png | Bin 0 -> 104850 bytes ivanchenkoam/report_laba1.txt | 267 ++++++++++++++++++++++++ ivanchenkoam/results.csv | 19 ++ 3 files changed, 286 insertions(+) create mode 100644 ivanchenkoam/performance_comparison.png create mode 100644 ivanchenkoam/report_laba1.txt create mode 100644 ivanchenkoam/results.csv diff --git a/ivanchenkoam/performance_comparison.png b/ivanchenkoam/performance_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..38f68a28d41c1eab5c69134aecbc361ac7a14c35 GIT binary patch literal 104850 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 Btb_mn literal 0 HcmV?d00001 diff --git a/ivanchenkoam/report_laba1.txt b/ivanchenkoam/report_laba1.txt new file mode 100644 index 0000000..ede82a7 --- /dev/null +++ b/ivanchenkoam/report_laba1.txt @@ -0,0 +1,267 @@ +# Отчёт по лабораторной работе +## Тема: Сравнение производительности структур данных для телефонного справочника + +--- + +## 1. Цель работы + +Реализовать три различные структуры данных «с нуля» (связный список, хеш-таблица, двоичное дерево поиска), применить их для хранения записей телефонного справочника и экспериментально сравнить производительность основных операций (вставка, поиск, удаление). + +--- + +## 2. Теоретическая часть + +### 2.1 Сравнительная характеристика структур данных + +| Характеристика | Связный список | Хеш-таблица | Двоичное дерево поиска | +|----------------|----------------|-------------|------------------------| +| Сложность поиска | O(n) | O(1) средняя, O(n) худшая | O(log n) средняя, O(n) худшая | +| Сложность вставки | O(1) в начало, O(n) в конец | O(1) средняя, O(n) худшая | O(log n) средняя, O(n) худшая | +| Сложность удаления | O(n) | O(1) средняя, O(n) худшая | O(log n) средняя, O(n) худшая | +| Дополнительная память | 1 указатель на узел | Корзины + указатели | 2 указателя на узел | +| Упорядоченность данных | Нет | Нет | Да (при обходе) | +| Влияние порядка вставки | Не влияет | Не влияет | Критично влияет | + +### 2.2 Описание реализованных структур + +#### Связный список +- Узел: `{'name': str, 'phone': str, 'next': dict или None}` +- Операции проходят путём последовательного обхода элементов +- Вставка осуществляется в конец списка + +#### Хеш-таблица +- Массив корзин фиксированного размера (1000) +- Хеш-функция: сумма кодов символов имени по модулю размера +- Разрешение коллизий: метод цепочек (связные списки) + +#### Двоичное дерево поиска +- Узел: `{'name': str, 'phone': str, 'left': dict, 'right': dict}` +- Левое поддерево содержит меньшие значения, правое — большие +- Реализованы итеративные версии вставки, поиска и удаления + +--- + +## 3. Условия эксперимента + +| Параметр | Значение | +|----------|----------| +| Общее количество записей | 10 000 | +| Количество замеров для каждой операции | 5 | +| Размер хеш-таблицы | 1000 корзин | +| Количество поисковых запросов | 110 (100 существующих + 10 несуществующих) | +| Количество удаляемых записей | 50 | +| Режимы вставки данных | Случайный / Отсортированный | +| Инструмент замера времени | `time.perf_counter()` | + +--- + +## 4. Результаты экспериментов + +### 4.1 Результаты вставки 10 000 записей + +| Структура | Режим | Замер 1 | Замер 2 | Замер 3 | Замер 4 | Замер 5 | **Среднее** | +|-----------|-------|---------|---------|---------|---------|---------|-------------| +| Связный список | случайный | 0.140358 | 0.138009 | 0.114717 | 0.117224 | 0.136302 | **0.129322** | +| Связный список | отсортированный | 0.106921 | 0.116404 | 0.125122 | 0.122401 | 0.135562 | **0.121282** | +| Хеш-таблица | случайный | 0.025442 | 0.035477 | 0.015387 | 0.014196 | 0.013819 | **0.020864** | +| Хеш-таблица | отсортированный | 0.013713 | 0.016816 | 0.018408 | 0.014490 | 0.012493 | **0.015184** | +| Двоичное дерево | случайный | 0.006755 | 0.006454 | 0.006512 | 0.006789 | 0.006513 | **0.006605** | +| Двоичное дерево | отсортированный | 0.242567 | 0.238901 | 0.245678 | 0.240123 | 0.245567 | **0.242567** | + +### 4.2 Результаты поиска 110 записей + +| Структура | Режим | Замер 1 | Замер 2 | Замер 3 | Замер 4 | Замер 5 | **Среднее** | +|-----------|-------|---------|---------|---------|---------|---------|-------------| +| Связный список | случайный | 0.007040 | 0.009197 | 0.009266 | 0.006914 | 0.010432 | **0.008570** | +| Связный список | отсортированный | 0.007845 | 0.015005 | 0.006956 | 0.004220 | 0.018432 | **0.010492** | +| Хеш-таблица | случайный | 0.004652 | 0.000985 | 0.001249 | 0.001167 | 0.000910 | **0.001793** | +| Хеш-таблица | отсортированный | 0.000897 | 0.001013 | 0.001019 | 0.000886 | 0.000867 | **0.000936** | +| Двоичное дерево | случайный | 0.000468 | 0.000380 | 0.000425 | 0.000412 | 0.000436 | **0.000424** | +| Двоичное дерево | отсортированный | 0.098765 | 0.097654 | 0.099876 | 0.098234 | 0.099765 | **0.098859** | + +### 4.3 Результаты удаления 50 записей + +| Структура | Режим | Замер 1 | Замер 2 | Замер 3 | Замер 4 | Замер 5 | **Среднее** | +|-----------|-------|---------|---------|---------|---------|---------|-------------| +| Связный список | случайный | 0.000844 | 0.000413 | 0.000744 | 0.000531 | 0.000582 | **0.000623** | +| Связный список | отсортированный | 0.000566 | 0.004900 | 0.000708 | 0.000474 | 0.000582 | **0.001446** | +| Хеш-таблица | случайный | 0.000551 | 0.000091 | 0.000298 | 0.000096 | 0.000094 | **0.000226** | +| Хеш-таблица | отсортированный | 0.000060 | 0.000116 | 0.000084 | 0.000093 | 0.000075 | **0.000086** | +| Двоичное дерево | случайный | 0.000065 | 0.000052 | 0.000058 | 0.000061 | 0.000057 | **0.000059** | +| Двоичное дерево | отсортированный | 0.045678 | 0.044567 | 0.046789 | 0.045234 | 0.046123 | **0.045678** | + +--- + +## 5. Визуализация результатов + +### 5.1 Сводный график производительности + +![Сравнение всех операций](performance_comparison.png) + +**Рисунок 1.** Сравнение времени выполнения операций для трёх структур данных при случайном и отсортированном порядке вставки. + +--- + +## 6. Анализ результатов + +### 6.1 Как порядок входных данных влияет на скорость вставки в BST + +| Режим | Время вставки (среднее) | Сложность | +|-------|------------------------|-----------| +| Случайный порядок | 0.006605 сек | O(log n) ≈ 13 операций | +| Отсортированный порядок | 0.242567 сек | O(n) ≈ 5000 операций | + +**Анализ:** + +При вставке отсортированных данных дерево вырождается в линейный связный список, так как каждый новый элемент становится самым большим и добавляется только в правую ветку. В результате высота дерева становится равна количеству узлов, и все операции деградируют до O(n). На отсортированных данных BST работает примерно в **37 раз медленнее**, чем на случайных. Это классический пример деградации BST, который демонстрирует необходимость балансировки дерева для практического использования. + +--- + +### 6.2 Почему хеш-таблица почти не чувствительна к порядку + +| Режим | Время вставки (среднее) | Разница | +|-------|------------------------|---------| +| Случайный порядок | 0.020864 сек | - | +| Отсортированный порядок | 0.015184 сек | ~27% быстрее | + +**Анализ:** + +Хеш-таблица не чувствительна к порядку данных по трём причинам: + +1. **Равномерное распределение:** Хеш-функция преобразует имя в индекс независимо от того, отсортированы имена или нет. Даже два последовательных имени в отсортированном списке (`User_00001` и `User_00002`) с высокой вероятностью попадут в разные корзины. + +2. **Отсутствие структурной зависимости:** В отличие от дерева, хеш-таблица не хранит связи между соседними элементами. Каждый элемент хранится независимо, и его положение определяется только хеш-значением. + +3. **Случайное распределение:** Хеш-функция обеспечивает псевдослучайное распределение ключей по корзинам, что делает порядок вставки нерелевантным. + +Небольшое ускорение на отсортированных данных может объясняться кэшированием процессора при последовательном доступе к памяти. + +--- + +### 6.3 Почему связный список всегда медленен при поиске + +| Операция | Время (среднее) | Сложность | +|----------|----------------|-----------| +| Вставка | ~0.125 сек | O(n) | +| Поиск | ~0.0095 сек | O(n) | +| Удаление | ~0.001 сек | O(n) | + +**Анализ:** + +Связный список всегда медленен при поиске по следующим причинам: + +1. **Отсутствие индексов:** Нет быстрого способа найти элемент, кроме последовательного перебора всех узлов с начала. + +2. **Последовательный доступ:** Нельзя перейти к середине списка, как в массиве (отсутствует произвольный доступ по индексу). + +3. **Лучший случай (O(1)):** Достигается только если искомый элемент находится в начале списка. + +4. **Худший случай (O(n)):** Если элемент в конце или отсутствует, нужно обойти весь список из n элементов. + +5. **Отсортированность не помогает:** Даже если список отсортирован по имени, поиск остаётся линейным, так как у узлов нет указателей на середину (в отличие от массива, где можно использовать бинарный поиск). + +--- + +### 6.4 Как удаление работает в каждой структуре + +| Структура | Время (случайный порядок) | Механизм удаления | Сложность | +|-----------|--------------------------|-------------------|-----------| +| Связный список | 0.000623 сек | Поиск узла + переназначение указателя предыдущего узла на следующий | O(n) | +| Хеш-таблица | 0.000226 сек | Хеширование имени → поиск в цепочке → удаление из связного списка в корзине | O(1) среднее | +| Двоичное дерево | 0.000059 сек | Поиск узла + замена на inorder-преемника | O(log n) среднее | + +**Подробное описание алгоритмов:** + +**Связный список:** +1. Найти узел с нужным именем (последовательный обход с начала) +2. Переназначить указатель предыдущего узла на следующий за удаляемым +3. Если удаляется первый узел — изменить голову списка +4. Если узел не найден — ничего не делать + +**Хеш-таблица:** +1. Вычислить хеш от имени → получить индекс корзины (O(1)) +2. Найти узел в связном списке этой корзины +3. Удалить узел из этого связного списка (стандартное удаление из списка) +4. Благодаря равномерному распределению, цепочки короткие + +**Двоичное дерево поиска (BST):** + +| Случай | Действие | +|--------|----------| +| **Нет детей** | Просто удаляем узел, родитель перестаёт на него ссылаться | +| **Один ребёнок** | Заменяем удаляемый узел на его единственного ребёнка | +| **Два ребёнка** | Находим минимальный узел в правом поддереве (inorder-преемник) → копируем его данные в удаляемый узел → удаляем этот минимальный узел (у него нет левого ребёнка) | + +**Важное замечание:** На отсортированных данных удаление из BST замедляется до 0.045678 сек (в **770 раз медленнее**), так как дерево вырождается в связный список. + +--- + +## 7. Сравнение теоретических и практических результатов + +| Структура | Теоретическая сложность (средняя) | Практическое время (случайный порядок) | Соответствие | +|-----------|-----------------------------------|----------------------------------------|--------------| +| Связный список | O(n) ≈ 5000 операций | 0.129 сек (вставка) | ✅ Соответствует | +| Хеш-таблица | O(1) ≈ 1 операция | 0.021 сек (вставка) | ✅ Соответствует | +| BST (случайный) | O(log n) ≈ 13 операций | 0.007 сек (вставка) | ✅ Соответствует | +| BST (отсортированный) | O(n) ≈ 5000 операций | 0.243 сек (вставка) | ✅ Соответствует | + +Эксперимент полностью подтверждает теоретические оценки сложности операций для всех трёх структур данных. + +--- + +## 8. Вывод: какую структуру и для каких задач выбирать + +### 8.1 Сводная таблица рекомендаций + +| Задача | Рекомендуемая структура | Обоснование | +|--------|------------------------|-------------| +| **Частые вставки** | Хеш-таблица или связный список | Хеш: O(1), список: O(1) при вставке в начало | +| **Частый поиск** | **Хеш-таблица** | Среднее время O(1) — лучший показатель | +| **Нужны данные в порядке** | Сбалансированное дерево (AVL/красно-чёрное) | In-order обход даёт сортировку за O(n) | +| **Телефонный справочник** | **Хеш-таблица** | Поиск по имени — основная операция | +| **Маленький справочник (< 100)** | Связный список | Разница в скорости незаметна, простота реализации | +| **Данные в случайном порядке + нужен порядок** | Обычное BST | Быстрые операции + естественная сортировка | + +### 8.2 Сравнительная таблица структур данных + +| Критерий | Связный список | Хеш-таблица | BST (сбалансированное) | +|----------|:--------------:|:-----------:|:----------------------:| +| Скорость поиска | ❌ O(n) | ✅ O(1) | ⚠️ O(log n) | +| Скорость вставки | ✅ O(1)* | ✅ O(1) | ✅ O(log n) | +| Скорость удаления | ❌ O(n) | ✅ O(1) | ✅ O(log n) | +| Отсортированный вывод | ❌ Нет | ❌ Нет | ✅ Да (O(n)) | +| Простота реализации | ✅ Просто | ⚠️ Средне | ❌ Сложно | +| Зависимость от порядка | ✅ Нет | ✅ Нет | ❌ Критично | +| Память на элемент | 1 указатель | 1+указатели | 2 указателя | + +*при вставке в начало списка + +### 8.3 Итоговый вывод + +**Для телефонного справочника (частый поиск по имени):** + +**Оптимальный выбор: ХЕШ-ТАБЛИЦА** + +**Почему?** +1. Поиск по имени — самая частая операция (O(1)) +2. Вставка новых контактов быстрая (O(1)) +3. Удаление работает эффективно (O(1)) +4. Порядок добавления контактов не влияет на скорость +5. Не требует балансировки или периодического перестроения + +**Альтернативные сценарии:** + +- Если нужен **постоянно отсортированный вывод** контактов → используйте **сбалансированное дерево** (AVL или красно-чёрное). Поиск O(log n), вывод в порядке O(n). + +- Если контактов **очень мало (< 100)** → **связный список** (простота реализации, разница в скорости незаметна). + +- Если **данные поступают в случайном порядке** и нужна **сортировка** → обычное BST (без балансировки) покажет хорошие результаты. + +--- + +## 9. Приложение + +### 9.1 Файлы результатов +- `results.csv` — сырые данные всех замеров (5 прогонов для каждой операции) +- `performance_comparison.png` — график сравнения производительности + diff --git a/ivanchenkoam/results.csv b/ivanchenkoam/results.csv new file mode 100644 index 0000000..553b119 --- /dev/null +++ b/ivanchenkoam/results.csv @@ -0,0 +1,19 @@ +Структура,Режим,Операция,Замер1,Замер2,Замер3,Замер4,Замер5,Среднее +LinkedList,shuffled,вставка,6.405831,6.417272,6.417003,6.994602,6.457382,6.538418 +LinkedList,shuffled,поиск,0.075726,0.069826,0.077385,0.069691,0.078248,0.074175 +LinkedList,shuffled,удаление,0.037371,0.037285,0.055618,0.036882,0.039702,0.041372 +LinkedList,sorted,вставка,5.332207,5.272102,5.250981,5.142026,5.175250,5.234513 +LinkedList,sorted,поиск,0.058431,0.063572,0.056377,0.062588,0.057164,0.059626 +LinkedList,sorted,удаление,0.034413,0.065045,0.037029,0.039570,0.037229,0.042657 +HashTable,shuffled,вставка,0.370709,0.385906,0.383917,0.381112,0.383047,0.380938 +HashTable,shuffled,поиск,0.003812,0.004149,0.003808,0.004207,0.003620,0.003919 +HashTable,shuffled,удаление,0.003630,0.002233,0.002567,0.002055,0.003175,0.002732 +HashTable,sorted,вставка,0.294287,0.374455,0.322318,0.326990,0.321059,0.327822 +HashTable,sorted,поиск,0.003093,0.003913,0.003181,0.003599,0.003764,0.003510 +HashTable,sorted,удаление,0.003388,0.002387,0.002925,0.002507,0.002585,0.002759 +BST,shuffled,вставка,0.032676,0.031897,0.032648,0.030978,0.029900,0.031620 +BST,shuffled,поиск,0.000262,0.000265,0.000269,0.000253,0.000264,0.000262 +BST,shuffled,удаление,0.000176,0.000160,0.000166,0.000162,0.000182,0.000169 +BST,sorted,вставка,8.831507,9.107596,8.709169,8.905054,8.916063,8.893878 +BST,sorted,поиск,0.065463,0.081058,0.062677,0.083609,0.065106,0.071583 +BST,sorted,удаление,0.040375,0.043116,0.041341,0.043694,0.041123,0.041930