From 106ea57b17f52eaf7feab0435366cefadeb5be0c Mon Sep 17 00:00:00 2001 From: victorovaas Date: Sat, 5 Sep 2026 11:45:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B2=D1=83=D1=8E=20=D0=BB=D0=B0?= =?UTF-8?q?=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