Лабораторная работа №6
Анализ методов хеширования
Цель данной работы:
-
Изучить методы хеширования.
-
Программно реализовать и проанализировать эффективность каждого метода по равномерности распределения адресов и числу коллизий.
Контрольные вопросы
-
Что представляет собой хеширование?
-
Какие требования предъявляются к хеш-функции?
-
По каким параметрам определяется эффективность хеш-функции?
-
Что такое коллизия?
-
Какие вы знаете способы разрешения коллизий?
Методические указания
При выполнении индивидуального задания придерживаться следующей последовательности действий:
-
изучить словесную постановку задачи;
-
разработать программу, решающую поставленную задачу;
-
оттестировать и отладить программу;
-
написать и представить к защите отчет по работе.
Содержание отчета
-
Титульный лист.
-
Цель лабораторной работы.
-
Словесная постановка задачи.
-
Теоретическая часть (описание методов).
-
График зависимости числа коллизий от количества элементов (не менее 6 замеров).
-
График зависимости распределения адресов от количества элементов (не менее 6 замеров).
-
Выводы по результатам исследования.
-
Листинг программы.
-
Ответы на контрольные вопросы по согласованию с преподавателем.
Варианты индивидуальных заданий
В этой лабораторной работе задание общее для всех.
При помощи следующих методов:
-
усечение префикса
-
усечение суффикса
-
перебазирование
-
деление по модулю t
-
выделение средней части квадрата
локализовать ключи в адресном пространстве трехзначных чисел (от 0 до 999) (указание: если после преобразования адрес не попадает в заданное адресное пространство, применить перебазирование).
Построить график зависимости числа коллизий от количества элементов (не менее 6 замеров).
Построить график зависимости распределения адресов от количества элементов (не менее 6 замеров).
Проанализировать эффективность каждого метода по построенным графикам, сделать выводы. Для метода «Деление по модулю t» дополнительно выработать рекомендации по выбору наиболее оптимального модуля t.