Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных" - Presentation Transcript

    1. Хакасский государственный университет им. Н.Ф. Катанова Структуры и алгоритмы обработки данных Лекция: Поиск. Хеширование Николай Гребенщиков, www.grebenshikov.ru
    2. Скорость поиска • Линейный поиск - Tprepare = O(n), T f ind = O(n) • Бинарный поиск и деревья поиска - Tprepare = O(n · log(n)), T f ind = O(log(n)) • Но хочется быстрее - можно ли искать за O(1) 1
    3. Прямой доступ Если ключи ∈ {0, 1, . . . , m − 1} и различны, то множество S можно представить в виде массива T [0..m − 1].   x,x∈S∧key[x]=k T [k] = null, otherwise  Операция поиска по ключу занимает время O(1) 2
    4. Более сложные ключи Пусть, количество элементов в множестве ограничено неболь- шим числом. Проблемы возникают, когда: • возможные ключи принадлежат большому множеству? Например, {0, 1, . . . , 109} • ключи не являются числами? Например, строки. 3
    5. Хеширование Хеш-функция - такая функция h, которая определяет ме- стоположение элементов множества S в таблице T . x.key ∈ A ⇒ h(x.key) = k 4
    6. Коллизии |A| > 1 ⇒ Коллизия. Например, h(43) = h(89) = h(112) = k Решения коллизий: • Метод цепочек • Открытая адресация 5
    7. Метод цепочек Идея: Хранить элементы множества с одинаковым значением хэш-функции в виде списка. h(51) = h(49) = h(63) = i 6
    8. Анализ метода цепочек • Наихудший случай: если хэш-функция для всех элемен- тов множество выдает одно и то же значение. Время доступа равно Θ(n), при |S| = n. • Средний случай: для случая, когда значения хэш-функции равномерно распределены. Каждый ключ с равной веро- ятностью может попасть влюбою ячейку таблицы, вне зависимоти от того куда попали другие ключи. Время доступа? 7
    9. Коэффициент заполненности хэш-таблицы Пусть дана таблицы T [0..m − 1], и в ней хранится n ключей. Тогда, α = n/m = среднее количество ключей в ячейках таб- лицы. Математическое ожидание времени поиска, закончив- шегося неудачей = Θ(1 + α) (вычисление значения хэш- функции + просмотри списка). M [T (n)] = Θ(1), если α = O(1) ⇔ n = O(m) 8
    10. Выбор хэш-функции • Ключи должны равномерно распределяться по всем ячей- кам таблицы • Закономерность распределения ключей хэш-функцией не должна коррелировать с закономерностями данных. (На- пример, данные - это четные числа). Методы: • Метод деления • Метод умножения 9
    11. Метод деления h(k) = k mod m Проблема маленького делителя m: Пример №1. d = 2 и все ключи четные ⇒ нечетные ячейки не заполнены. Пример №2. m = 2r ⇒ хэш не зависит от битов выше r. 10
    12. Метод деления: хорошая эвристика Выбирать для m простое число не близкое к степеням 2 и 10. 11
    13. Метод умножения Пусть m = 2r , ключи являются w-битными словами. h(k) = (A · k mod 2w ) >> (w − r), где A mod 2 = 1 ∧ 2w−1 < A < 2w • Не следует выбирать A близко к 2w−1 и 2w • Данный метод быстрее метода деления 12
    14. Метод умножения: пример m = 8 = 23 , w = 7 1 0 1 1 0 0 1 A 1 1 0 1 0 1 1 k 1 0 0 1 0 1 0 0 1 1 0 0 1 1 1001010 011 0011 ignore by mod 2w h(k) ignore by >>(w−r) 13
    15. Колесо остатков k ∈ {1, 2, 3} 14
    16. Разрешение коллизий: открытая адресация • Не нужно хранить ссылки. • Будем последовательно проверять ячейки таблиц, пока не найдем пустую. • h : U × {0, 1, . . . , m − 1} → {0, 1, . . . , m − 1} • h(k, 0), h(k, 1), . . . , h(k, m − 1) - это перестановка 0, 1, . . . , m − 1 • n≤m 15
    17. Открытая адресация: пример вставки Пусть дана таблица A: 1 2 3 4 5 6 7 8 9 10 23 45 78 Вставим k = 89: 1. h(89, 0) = 3 2. h(89, 1) = 2 3. h(89, 2) = 9 - Успех! 16
    18. Открытая адресация: поиск • Поиск - также последовательное исследование. • Успех, когда нашли значение. • Неудача, когда нашли пустую клетку или прошли всю таб- лицу. 17
    19. Стратегии исследования • Линейная - h(k, i) = (h(k, 0) + i) mod m. Плохо работает для заполненных областей ячек. • Двойное хэширование - h(k, i) = (h1(k) + i · h2(k)) mod m. Обычно выбирают m = 2r и h2(k) - нечетной. 18
    20. Анализ открытой адресации Дополнительное допущение для равномерного хэширования: каждый ключ может равновероятно получить любую из m! перестановок последовательностей исследования таблицы неза- висимо от других ключей.. 1 Теорема. E[количество исследований] ≤ 1−α , где α < 1 ⇐⇒ n < m 19
    21. Доказательство (неудачный поиск) • Одно исследование всегда нужно. С вероятностью n/m будет выявлена коллизия. ⇒ (n − 1)/(m − 1) ⇒ . . . ⇒ (n − i)/(m − i) ⇒ . . . n−i n • Заметим, что m−i < m = α для i ∈ {1, 2, 3, . . . , n − 1} n n−1 n−2 1 • E[#probes] = 1 + m (1 + m−1 (1 + m−2 (. . . m−n . . .))) ≤ 1 + α(1 + α(1 + α(1 + α(. . . 1 + α . . .)))) ≤ 1 + α + α 2 + α3 + . . . ∞ = αi i=0 1 = 1−α 20
    22. Скорость работы поиска в хэш-таблице при открытой адресации α < 1 − const ⇒ O(1) Как же себя ведет α: • Таблица заполнена на 50% ⇒ 2 исследования • Таблица заполнена на 90% ⇒ 10 исследований • Таблица заполнена на 100% ⇒ m исследований 21
    23. Список литературы • Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы. - М. : Издательский дом “Вильямс”, 2000. сс.116-127. • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгорит- мы: построение и анализ, 2-е издание. - М. : Издатель- ский дом “Вильямс”, 2007. сс.282-315. 22
    SlideShare Zeitgeist 2009

    + Nikolay GrebenshikovNikolay Grebenshikov Nominate

    custom

    99 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 99
      • 99 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories