Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации лекций по ТОИ / 14-Поиск-хеширование.pps
Скачиваний:
56
Добавлен:
02.06.2015
Размер:
2.75 Mб
Скачать

НИУ ВШЭ – Пермь

Факультет бизнес-информатики

Кафедра информационных технологий в бизнесе

Сортировка и поиск.

Поиск и хеширование

Материалы курса «Теоретические основы информатики»

Лекция 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 разрешения коллизий.

Соседние файлы в папке Презентации лекций по ТОИ