Рассчитать вероятность отсутствия столкновения при хэшировании двух элементов h(x)=(x^2+1)mod3

Как я могу рассчитать вероятность отсутствия столкновения после вставки 2 элементов. ответ 4/9, но я не вижу, как это 4/9

2 ответа

Решение

Я не уверен, что это уместный вопрос, но вот мой шанс на ответ. Это ни в коем случае не законное математическое доказательство, но оно работает.

Для вашей функции h(x) = (x^2+1)mod3 давайте приведем несколько примеров значений.

h (1) = (1 + 1) mod3 = 2mod3 = 2
h (2) = (4 + 1) mod3 = 5mod3 = 2
h (3) = (9 + 1) mod3 = 10mod3 = 1

h (4) = 17mod3 = 2
h (5) = 26мод3 = 2
h (6) = 37mod3 = 1

Этот шаблон будет продолжен из-за характера функции (возведение в квадрат и добавление 1).

Таким образом, у нас есть (2/3) вероятность того, что наша функция оценивается как 2, и (1/3) вероятность того, что она получит 1.

Если мы вставим два элемента, вероятность того, что у нас будет коллизия, - это вероятность того, что оба входа оцениваются в 2 плюс вероятность того, что оба оцениваются в 1. Это:

(2/3)(2/3) + (1/3)(1/3) = 4/9 + 1/9 = 5/9

Таким образом, вероятность того, что любые два входа НЕ БУДУТ столкновения, равна 1 - (5/9)

или 4/9.

Для небольшого понимания того, почему этот шаблон имеет место, рассмотрим все классы эквивалентности mod 3, то есть { 0, 1, 2 }.

Если x mod 3 = 0 затем x^2 mod 3 = (x mod 3)(x mod 3) mod 3 = (0 * 0) mod 3 = 0 по распределительной эквивалентности, так x^2 + 1 mod 3 = 1

Если x mod 3 = 1 затем x^2 mod 3 = (x mod 3)(x mod 3) mod 3 = (1 * 1) mod 3 = 1, так x^2 + 1 mod 3 = 2

Если x mod 3 = 2 затем x^2 mod 3 = (x mod 3)(x mod 3) mod 3 = (2 * 2) mod 3 = 1, так x^2 + 1 mod 3 = 2

Это все еще не на 100% формально, и это неуклюжий пример исчерпания, но это дает вам представление, почему этот шаблон подходит для объединения натуральных чисел { 0 }. Я также хотел бы, чтобы я был более знаком с математическим форматированием в стеке. Предположим, пришло время поднять мета?:)

Другие вопросы по тегам