- •НИУ ВШЭ – Пермь
- •Задача поиска
- •Поиск по абсолютной характеристике
- •Поиск по относительной характеристике
- •Операции, выполняемые при поиске
- •Методы поиска и их оптимизация
- •Структура хранения информации
- •Задача хеширования
- •Совершенная хеш-функция
- •Требования к построению хеш-функции
- •Построение хеш-функции
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Рехеширование (разрешение коллизий)
- •Линейное рехеширование
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Построение хеш-функции. Пример
- •Случайное рехеширование
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
НИУ ВШЭ – Пермь
Факультет бизнес-информатики
Кафедра информационных технологий в бизнесе
Сортировка и поиск.
Поиск и хеширование
Материалы курса «Теоретические основы информатики»
Лекция 14
Лядова Л.Н.
Пермь 2013
Задача поиска
Под задачами поиска в информатике обычно понимают задачи
отыскания одного или нескольких элементов в множестве, причем искомые элементы должны обладать определенными свойствами (удовлетворять критериям поиска, условиям отбора информации в множестве).
При определении критерия поиска задаются условия, которым это свойство (или свойства) должно удовлетворять.
Свойство может быть абсолютным или относительным.
2
Поиск по абсолютной характеристике
Поиск по абсолютной характеристике предполагает, что при формировании критерия поиска задаются конкретные (т.е. абсолютные) значения этого свойства.
Примеры задачи поиска элемента с абсолютным свойством:
найти в конечном множестве занумерованных элементов элемент с номером 12, если такой существует;
найти людей, родившихся в определенный день (дата задана);
найти студентов, имеющих рейтинг в заданном диапазоне (минимальное и максимальное значения задаются).
3
Поиск по относительной характеристике
Относительное свойство характеризует элемент по отношению к другим элементам. Примеры задач поиска по относительным
характеристикам:
найти минимальный элемент в множестве чисел,найти самого младшего студента в группе.
Могут быть заданы более сложные условия отбора элементов множества, с использованием нескольких характеристик. Например: среди десяти самых младших студентов найти тех, кто учится только на отлично. Здесь используется и относительная характеристика (возраст по отношению к другим студентам) и
абсолютная (оценки).
4
Операции, выполняемые при поиске
В задаче поиска имеются следующие шаги:
1)вычисление свойства элемента (часто это - просто получение «значения» элемента, ключа элемента и т.д.), по которому осуществляется отбор;
2)проверка, выполняются ли условия отбора для данного элемента, − сравнение свойства элемента с целевой характеристикой поиска (для абсолютных свойств) или сравнение свойств двух элементов (для относительных свойств);
3)перебор элементов множества, т.е. прохождение по элементам множества, при котором повторяются операции 1 и 2.
5
Методы поиска и их оптимизация
Первые два вида шагов относительно просты и не дают «простора» для оптимизации.
Вся «соль» различных методов поиска сосредоточена в
методах перебора, в стратегии поиска. Оптимизация требует минимизации числа сравнений. Как сделать так, чтобы проверять не все элементы?
Если же задача требует неоднократного прохода по всем элементам множества, то вопрос оптимизации в том, как уменьшить количество проходов?
6
Структура хранения информации
Самыми распространенными способами хранения обрабатываемой информации являются
одномерные массивы (таблицы);последовательные файлы;линейные списки;деревья.
7
Задача хеширования
Предположим, нам нужно хранить элементы абстрактного множества S. В этом случае любые два элемента множества a1 и a2 могут быть либо равны (тождественны), a1 = a2, либо не равны. Универсальной структурой хранения для такого множества является список. Если количество элементов ограничено, то их можно заносить в таблицу (массив). Для ускорения поиска с использованием массивов требуется построить отображение
h : S N
элементов абстрактного множества в множество целых чисел (индексов – номеров элементов) − хеш-функцию.
Процедура поиска также будет состоять из двух фаз:
1)вычисление хеш-функции nj = h(ai), nj N;
2)использование nj в качестве индекса выбираемого элемента 8 массива.
Совершенная хеш-функция
Наиболее сложным в этом является подбор подходящего отображения − хеш-функции h. Они должны (в идеале) удовлетворять следующим требованиям:
1)ai ≠ aj h(ai) ≠ h(aj);
2)эффективная (легкая) вычислимость.
Первое требование понятно - два разных элемента не могут храниться в одном месте. Второе требование можно сформулировать так: первая фаза поиска не должна требовать намного больше времени, чем вторая фаза.
Функция, удовлетворяющая указанным условиям, называется совершенной хеш-функцией. Условие 1 выполнимо только в том
случае, если множество S объектов, подлежащих хранению, имеет мощность, не большую, чем размер массива, в котором эти объекты
9будут храниться. Более того, для конструирования хеш-функции h необходимо знать все объекты, которые могут быть сохранены.
Требования к построению хеш-функции
В общем случае построить совершенную хеш-функцию нельзя, т.к. имеется вероятность того, что в некоторых случаях h(ai) = h(aj) при ai ≠ aj. Такие случаи называются коллизиями.
Поскольку в большинстве практических случаев входная информация непредсказуема, то условия построения и использования хеш-функций трансформируются в следующие:
1) хеш-функция h должна использовать особенности, присущие виду
входной информации (идентификаторы, числа из определенного диапазона, даты и т.д.) для уменьшения вероятности коллизий
(или среднего количества коллизий);
2)эффективная (легкая) вычислимость функции;
3)в дополнение к функции h должен быть указан способ
10 разрешения коллизий.
