Хеш-таблицы

Хеш-таблицы

Давайте развивать метод поиска, который мы придумали в самом начале статьи «Хеширование».

Итак, мы хотим сделать какой-то ассоциативный массив. У нас есть какое-то множество ключей U\UUU — универсум. Создадим массив table из mm элементов, в который будем пихать ключи. Затем придумаем хеш-функцию hash ⁣:U{0,1,,m1}\hash \colon \UUU \surjto \{0, 1, \dotsc, m-1\}, которая будет по ключу KK выдавать индекс массива, где должна храниться ассоциированная с ключом KK запись RR:

table[hashK]=R\code{table} [\hash K] = R

Если по этому индексу в массиве хранится none

В итоге у нас получилась конструкция, которая

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

Цепочки

Открытая адресация

Продвинутые схемы хеширования

Cuckoo hashing

Robin Hood hashing

Hopscotch hashing и локальность

Хеш-множества и хеш-словари