Сайт группы
ИН-72
Сумского Государственного Университета
Сегодня Вторник, 17.06.2025, 13:05
Приветствую Вас Гость | RSS
Внимание! Совсем скоро домен in-72.org.ua станет недоступным! Сайт переносится на новый архивный домен: in72.at.ua.
Таким образом, если вы попали сюда через кеш поисковика, например, вы будете знать, куда идти дальше.
Меню сайта

Разделы новостей
ИН-72 [16]
Новости о группе и для группы
Факультет [40]
Информация, касающаяся механико-математического факультета
Университет [27]
Информация, касающаяся всех студентов университета
Новости сайта [9]
Информация о данном сайте и форуме сайта ИН-72
Другое [6]
Новости, не подходящие ни по одной из категорий

Расписание звонков
Пара Начало Конец
108:15-09:35
209:50-11:10
311:25-12:45
Большая перемена
413:25-14:45
515:00-16:20
616:35-17:55
718:00-19:20
819:25-20:45


Главная » 2009 » Март » 5 » Теория алгоритмов - ЛР№2 - Хэш-таблицы
Теория алгоритмов - ЛР№2 - Хэш-таблицы
17:20

Хеш-таблица 

 
В программировании хеш-таблица — это структура данных, реализующая интерфейс ассоциативного массива, а именно, она позволяет хранить пары (ключ, значение) и выполнять три операции: операцию добавления новой пары, операцию поиска и операцию удаления пары по ключу.

Существует два варианта хэш-таблиц: с прямой и открытой адресацией. Хэш-таблица содержит некоторый массив H, элементы которого есть пары (хэш-таблица с открытой адресацией) или списки пар (хэш-таблица с прямой адресацией).
Выполнение операции в хэш-таблице начинается с вычисления хэш-функции от ключа. Получающееся хэш-значение i = hash(key) играет роль индекса в массиве H. Затем выполняемая операция (добавление, удаление или поиск) перенаправляется объекту, который хранится в соответствующей ячейке массива H[i].
Ситуация, когда для различных ключей получается одно и то же хэш-значение, называется коллизией (collision).
Число хранимых элементов делённое на размер массива H (число возможных значений хэш-функции) называется коэффициентом заполнения хэш-таблицы (load factor) и является важным параметром, от которого зависит среднее время выполнения операций.
Свойства хеш-таблицы

Важное свойство хэш-таблицы состоит в том, что все три операции в среднем выполняются за время O(1). Но при этом не гарантируется, что время выполнения отдельной операции мало. Это связано с тем, что при достижении некоторого значения коэффициента заполнения необходимо осуществлять перестройку индекса хэш-таблицы: увеличить значение размера массива H и заново добавить в пустую хэш-таблицу все пары.

Разрешение коллизий

Существует несколько способов разрешения колизий.

Открытая адресация
В массиве H хранятся сами пары. В случае возникновения коллизии, алгоритм поиска (удаления, добавления) объекта просто перемещается на ячейку вправо до момента разрешения коллизии. Разрешение коллизии происходит при достижении пустой ячейки или ячейки, в котором хранится пара с заданным ключом.
Размер шага смещения вправо может зависеть от значения ключа и вычисляться с помощью второй хэш-функции. Данная техника называется двойным хэшированием с открытой адресацией.
Прямая адресация
В МАССИВЕ H ХРАНЯТСЯ СПИСКИ ПАР. КОЛЛИЗИИ ПРОСТО ПРИВОДЯТ К ТОМУ, ЧТО ПОЯВЛЯЮТСЯ СПИСКИ ДЛИНОЙ БОЛЕЕ ОДНОГО ЭЛЕМЕНТА.
Среднее время выполнения операций в хэш-таблице с прямой адресацией равно коэффициенту заполнения.

Задание

Реализовать хеш-таблицу, в которой могут хранится до 1000 чисел в диапазоне от 1 до 30000. Реализовать функции добавления числа в хеш-таблицу. Подсчитать какое количество операций необходимо в среднем для вставки нового числа при коэффициенте заполнения таблицы 25%, 50%, 75% и 90%. Для этого заполнить хеш-таблицу до указанного коэфициента заполнения и усреднить количество операций необходимых для вставки следующих 25 чисел.

Хеш функцию можно выбрать произвольную.

Мод решения коллизий:

1) Прямая адресация (7 балов);
2) Прямая адресация, двойное хеширование (10 балов);
3) Открытая адресация (13 балов);

Реализовать только один метод решения коллизий.

Литература
1. Кормен, Т., Лейзерсон, Ч., Ривест, Р. Алгоритмы: построение и анализ = Introduction to Algorithms / Пер. с англ. под ред. А. Шеня. — М.: МЦНМО, 2002. — 960 с. — ISBN 5-900916-37-5 
2. КОРМЕН, Т., ЛЕЙЗЕРСОН, Ч., РИВЕСТ, Р., ШТАЙН, К. АЛГОРИТМЫ: ПОСТРОЕНИЕ И АНАЛИЗ = INTRODUCTION TO ALGORITHMS / ПОД РЕД. И. В. КРАСИКОВА. — 2-Е ИЗД.. — М.: ВИЛЬЯМС, 2005. — 1296 С. — ISBN 5-8459-0857-4 
3. http://ru.wikipedia.org/wiki/Хеш-таблица
4. Методичні вказівки «Хеш-таблиці. Використання в алгоритмах пошуку»
Прикрепления: Картинка 1
Категория: Факультет | Просмотров: 2359 | Добавил: Kichrum | Рейтинг: 0.0/0 |
Всего комментариев: 1
1 Kichrum  
0
Начинай. Если будут в тему - почему бы и нет? happy

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Что нового?
СумГУ Live:
SSU Live
Последний файл:
Вопросы на 1 модуль по СМПР (0) [Другое]
Последняя ссылка:
Сайт о летней трудовой практике (0) [СумГУ]
Форум:
Форум группы ИН-73 (0) [Группа ИН-73]

Мини-чат
Online:

NEW!Новости почтой
Введи свой e-mail:

Получай всё новое на сайте первым - на e-mail!

Календарь новостей
«  Март 2009  »
Пн Вт Ср Чт Пт Сб Вс
      1
2345678
9101112131415
16171819202122
23242526272829
3031

Поиск

Друзья сайта

Copyright © 2007-2025 "IN-72 EDU Group". При любом использовании материалов сайта, ссылка на www.in-72.org.ua обязательна.