в итоге сделал через хеш, не ожидал даже что так быстро будет работать. Правда ещё ресурс для полиморфного аллокатора написал, но в целом ощущения классные ))
День добрый! А как можно шустро подсчитать контрольную сумму (хэш, например) для матрицы (n, m), где n, m ~ 1000 и все значения в матрице типа float? Нашёл такое - https://codeforces.com/blog/entry/13737?locale=ru, но не уверен, что не будет коллизий при моей размерности
Битовый размер хеша просто должен быть больше чем битовый размер адресуемых сущностей. Если матриц всего 10, то достаточно 4-х битов для хеша. И не важно, сколько внутри элементов - это повлияет лишь на скорость вычисления хеша.
Ну если юзать обычный полиномиальный хеш, то еще как зависят (при условии неизменности поля), т.к. степень многочлена растет, а вместе с ней и возможное число корней.
Ну вот есть k бит хеша. Тогда вероятность того, что хеш одного объекта совпадет с x - примерно 1/2^k. В этом факте нигде не используется размерность объекта
Извините, а с чего вы это взяли? Если у вашего полинома растет степень, то растет и возможное кол-во корней и, соответственно, вероятность получить 0, подставив в него случайную точку поля.
У идеального хеша должно быть равномерное распределение. У неидеального будут резкие пики и ямы. Если использовать такой хеш, например в качестве генератора шума для изображения - на изображении будет красивая картинка, а не шум. Причем средняя яркость будет плавать в зависимости от хеша. Можно даже получать красивые узоры, темные или светлые.