
Пародокс дня рождения.
Допустим вы используете словарь, какая проблема может возникнуть при добавлении элементов в этот словарь?
Эта проблема имеет название Birthday problem
О чём это я? Парадокс дней рождения — утверждение, состоящее в том, что в группе, состоящей из 23 или более человек, вероятность совпадения дней рождения (число и месяц) хотя бы у двух людей превышает 50%. Казалось бы при чём тут программирование?
Когда мы используем словари, то ключ словаря неразрывно связан с вычислением хеша, вычисление хеша редко обходится без вычисления остатков (скорее никогда). Ещё мы должны знать, что невозможно построить такую хеш-функцию, которая на 100% защищена от повторения значений (от коллизий). Складывая эти факты мы получаем ситуацию, при которой чем больше в словаре объектов(пусть и с гарантированно уникальными ключами), в какой-то момент мы нарвемся на ситуацию, когда для двух разных ключей хеш-функция может выдать одинаковый результат.
Итог: при использовании словарей нужно помнить, что чем больше в нём элементов тем больше вероятность получить проблему.
Допустим вы используете словарь, какая проблема может возникнуть при добавлении элементов в этот словарь?
Эта проблема имеет название Birthday problem
О чём это я? Парадокс дней рождения — утверждение, состоящее в том, что в группе, состоящей из 23 или более человек, вероятность совпадения дней рождения (число и месяц) хотя бы у двух людей превышает 50%. Казалось бы при чём тут программирование?
Когда мы используем словари, то ключ словаря неразрывно связан с вычислением хеша, вычисление хеша редко обходится без вычисления остатков (скорее никогда). Ещё мы должны знать, что невозможно построить такую хеш-функцию, которая на 100% защищена от повторения значений (от коллизий). Складывая эти факты мы получаем ситуацию, при которой чем больше в словаре объектов(пусть и с гарантированно уникальными ключами), в какой-то момент мы нарвемся на ситуацию, когда для двух разных ключей хеш-функция может выдать одинаковый результат.
Итог: при использовании словарей нужно помнить, что чем больше в нём элементов тем больше вероятность получить проблему.