2026-rff_mp/ProninVV/aufgabe-1-data-structures/report/document.tex

63 lines
4.7 KiB
TeX
Raw Normal View History

\input{preambule.tex}
\begin{document}
% --- ТИТУЛЬНЫЙ ЛИСТ (упрощенно) ---
\begin{titlepage}
\centering
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ \\
«Национальный исследовательский Нижегородский государственный университет им. Н.И. Лобачевского» \\
\vspace{4cm}
\Large ОТЧЕТ К ЛАБОРАТОРНОЙ РАБОТЕ \\
\vspace{1cm}
\large «Реализация и экспериментальное сравнение базовых структур данных на примере телефонного справочника» \\
\vspace{4cm}
\flushright
Выполнил: студент В. В. Пронин \\
Преподаватель: Н. С. Морозов \\
\vfill
Нижний Новгород \\
2024
\end{titlepage}
\newpage
\tableofcontents
\newpage
\section{Введение}
Эффективность программных систем во многом определяется выбором способов организации данных в оперативной памяти. Задача разработки телефонного справочника является классическим примером, требующим баланса между скоростью вставки новых записей, поиском по ключу и эффективным удалением.
В рамках данной работы исследуются три фундаментальные структуры данных, реализованные «с нуля» в процедурной парадигме программирования на языке Python:
\begin{itemize}
\item \textbf{Связный список (Linked List)} --- динамическая структура, позволяющая оценить базовые механизмы управления указателями и демонстрирующая линейную сложность операций $O(n)$.
\item \textbf{Хеш-таблица (Hash Table)} --- ассоциативный массив, использующий хеширование для обеспечения прямого доступа к данным. Реализация позволяет изучить методы разрешения коллизий и преимущества константной сложности $O(1)$.
\item \textbf{Двоичное дерево поиска (BST)} --- иерархическая структура, обеспечивающая логарифмическую скорость доступа $O(\log n)$ и поддерживающая упорядоченность данных «из коробки».
\end{itemize}
\textbf{Цель работы:} Изучить внутренние алгоритмы работы перечисленных структур, реализовать их без использования встроенных высокоуровневых контейнеров и экспериментально подтвердить теоретические оценки временной сложности на случайных и отсортированных наборах данных.
\section{Реализация структур данных}
\subsection{Связный список}
% Здесь опишите логику ll_insert, ll_find и ll_delete
\subsection{Хеш-таблица}
% Опишите хеш-функцию и метод цепочек
\subsection{Двоичное дерево поиска}
% Опишите рекурсивные алгоритмы и проблему деградации
\section{Методика эксперимента}
Замеры производились для наборов данных объемом $N=500, 1000, 2000, 5000, 10000$ элементов. Использовались два сценария: перемешанные (\textit{shuffled}) и отсортированные по алфавиту (\textit{sorted}) записи. Каждая операция выполнялась 5 раз с последующим вычислением среднего арифметического значения с помощью функции \texttt{time.perf\_counter()}.
\section{Результаты и анализ}
Было проведено 5 опытов.
2026-03-21 17:53:41 +00:00
\subsection{Связный список}
\section{Заключение}
% Ответ на вопрос о выборе структуры в реальной жизни
\end{document}