Хеширование (29 апреля 2016)
- Случайные графы. Забавные факты.
- В графе из n/3 рёбер с большой вероятностью нет циклов
- В графе из 5n рёбер каково размера компоненты связности?
- В графе из n рёбер каково размера компоненты связности?
- Суффиксные деревья, окончание
- Лемма: суффиксная ссылка вершины − вершина
- Лемма: время работы O(n) (длина пути suf[v] не более чем на 1 меньше, чем у v)
- Построение: куда ведёт суфф ссылка вершины?
- Пример построения на строке "ababbaabbc".
- Алгоритм Маккрейта
− Перерыв −
- Универсальное семество хеш функций (M → m)
- Определение через |H|/m и 1/m. Эквивалентность.
- Плохое хеширования: x → x mod m
- Пример хорошего хеширования: x → ((ax + b) mod p) mod m. Hp,m = {(a, b)} − универсальное семейство хеш-функций.
- Хеш-таблица: детерминированная версия, рандомизированая версия
- Хеш-таблица на списках: среднее число коллизий (m = n, m = n2), средняя длина списка.
- Совершенное хеширование
- Пример: младший бит числа
- У нас уже есть рандомизированное O(1): хеш-таблица. Теперь нужно детерминированное O(1).
- Двухуровневая схема (внешняя таблица имеет размер m=n, внутренняя для i-й корзины имеет размер ki2). Сколько памяти нужно? O(nlogn) бит.
- Схема со случайным графом [Czech'92] (x → ребро (h1(x),h2(x)), если получили ацикличный граф, можем расставить числа). Сколько памяти нужно? O(nlogn) бит.
- Хеширование кукушки [Pagh,Rodler'01]
- Фильтр Блюма
- Структура: есть k хеш-функций, и m бит. Элемент x есть в множестве, если все биты h1(x),...hk(x) стоят.
- Вероятность одного бита: (1 - 1/m)kn ≈ e-kn/m
- Вероятность ложного срабатывания: (1 - e-kn/m)k. При фиксированных (n,m) получаем оптимальное k = ln2 * (m/n). Pr = 2-k = 0.6185m/n