Хеширование (29 апреля)
- Антихеш тесты
- Строчка Туэ-Морса (__builtin_popcount(i) mod 2, или рекурсивно: Sn = Sn-1 + not Sn-1). Оценка длины строки, чтобы была коллизия.
- Тест против (P,MOD)-хеша
- Что делать? Выбирать случайную точку P или случайный простой MOD! Лучше P.
- Lm: если (P,MOD) фиксировано, MOD простое, мы берём случайный многочлен, то вероятность, что P − корень, равна 1/MOD
- Lm: если многочлен и MOD фиксированы, MOD простое, мы берём случайное P, то вероятность, что P − корень, ≤ degree/MOD
- Lm: если многочлен MOD фиксирован, MOD простое, мы берём случайное P и случайный многочлен, то вероятность, что P − корень равна 1/MOD
- Время работы хеш-таблицы на списках
- Хеш-таблица со списком, хеш-таблица с открытой адресацией
- Матожидание средней длины списка.
- Матожидание максимальной длины списка. Доказательство.
- Двойное хеширование для списков. Матожидание максимальной длины списка. Набросок доказательства.
- Двойное хеширование для открытой адресации. Оценка?!
- [не успеем] Хеширование кукушки.
- Совершенное хеширование
- Определение
- Построение: space = O(n2), time = O(n)
- 2-Level: space = O(n), time = O(n)
- Фильтр Блюма.
- Алгоритм с односторонней ошибкой, интерфейс: add, isAdded.
- Оценка вероятности ошибки [wiki]
- [не успеем] Универсальное семейство хеш-функций (Carter, Wegman, 1977)
- Принцип: выбирать случайную хеш-функцию из ``хорошего'' семейства
- Опеределение: ∀ x, y : Prh ∈ H (h(x) = h(y)) ≤ 1/m. Свойства равномерной разности: h(x)-h(y) равномерно.
- Пример: fix m, p > m ⇒ H = {x → (ax+b) mod p mod m}. |H| = p(p-1). Доказательство.