Опишите семейство явных универсальных хеш-функций

В этой задаче мне дали следующее отображение

 U = {0, 1, 2, 3, 4, 5, 6, 7} to {0, 1}

Исходя из этого, существует явная универсальная хеш-функция, которая должна быть получена, с подсказкой, что это можно сделать с помощью набора из 4 функций. К сожалению, несмотря на поиск статей о том, как это сделать, я все еще в замешательстве. Будем очень благодарны за любую помощь в понимании того, как найти эту функцию хеширования и двигаться в правильном направлении!

РЕДАКТИРОВАТЬ:

После некоторого обдумывания, это то, что я придумал; это будет правильно?

     0  1  2  3  4  5  6  7
---------------------------
h1 | 1  1  0  0  0  0  0  0 
h2 | 0  0  1  1  0  0  0  0
h3 | 0  0  0  0  1  1  0  0
h4 | 0  0  0  0  0  0  1  1

1 ответ

Решение

Используя определение из Википедии:

Семейство функций H = {h: U → [m]} называется универсальным семейством, если, ∀ x, y ∈ U, x ≠ y: Pr h∈H [h (x) = h (y)] ≤ 1 / м

В вашем случае это означает, что для любых двух значений x и y в наборе {0, 1, 2, 3, 4, 5, 6, 7} не более двух из четырех ваших хеш-функций могут отображать их в один и тот же бит,

Ваше предложение:

     0  1  2  3  4  5  6  7
---------------------------
h1 | 1  1  0  0  0  0  0  0 
h2 | 0  0  1  1  0  0  0  0
h3 | 0  0  0  0  1  1  0  0
h4 | 0  0  0  0  0  0  1  1

не работает, потому что есть четыре пары (x, y), а именно (0,1), (2,3), (4,5) и (6,7), где все четыре хэш-функции отображают их в тот же бит.

Вместо этого вот несколько вариантов, которые работают:

     0  1  2  3  4  5  6  7
---------------------------
h1 | 0  0  0  0  1  1  1  1
h2 | 0  0  1  1  0  0  1  1
h3 | 0  1  0  1  0  1  0  1
h4 | 0  1  1  0  1  0  0  1

     0  1  2  3  4  5  6  7
---------------------------
h1 | 0  0  0  1  0  1  1  1
h2 | 0  0  1  0  1  0  1  1
h3 | 0  1  0  0  1  1  0  1
h4 | 1  0  0  0  1  1  1  0
Другие вопросы по тегам