Size: a a a

2021 June 27

MB

Mikail Bagishov in pro.algorithms
Да, ты прав.
источник

CD

Constantine Drozdov in pro.algorithms
а пункт (1) всегда можно перевести в среднее, если хеш адекватный (с плохим ничего не сделаешь, вроде логично)
источник

CD

Constantine Drozdov in pro.algorithms
грубо говоря, можно запомнить случайное невырожденное преобразование хеша как вектора над (Z/2Z)^n, вроде после этого нельзя подделать входные данные
источник

MB

Mikail Bagishov in pro.algorithms
Ну а если нам не повезло и хэш от всех входных строк тупо 0?

Может надо не хэши преобразовывать, а именно входные данные?
источник

CD

Constantine Drozdov in pro.algorithms
для строк можно тоже случайную хеш-функцию синтезировать, если проблема возможна на этом уровне
источник

CD

Constantine Drozdov in pro.algorithms
ну или криптографические, с ними понятно
источник

CD

Constantine Drozdov in pro.algorithms
это вроде общая закономерность - особенный худший случай почему-то всегда можно сделать случайным :)
источник

K

Kelbon in pro.algorithms
хэш на то и хэш, чтобы быть разным от разных строк.
источник

CD

Constantine Drozdov in pro.algorithms
только либо он криптографический, либо можно подделать множество строк на коллизию :)
источник

K

Kelbon in pro.algorithms
в хэш мапу конечно передаётся хэш, который потом примерно hash%size_buffer
источник

MB

Mikail Bagishov in pro.algorithms
Хэш принимает конечный набор значений, а строк бесконечное множество.
источник

K

Kelbon in pro.algorithms
если в мапе слишком много вещей в одну и ту же ячейку попадают, то мапа производит рехеш, чтобы более равномерно положить элементы
источник

K

Kelbon in pro.algorithms
они равномерно распределяться по этому набору значений. А значений там ого го
источник

MB

Mikail Bagishov in pro.algorithms
Я не пытаюсь утверждать, что такие сильные коллизии встречаются хоть сколько-нибудь частно (там явно какая-то экспоненциально затухающая вероятность будет).

Но этого факта вроде достаточно, чтобы решение вышеописанной задачи через хэш-таблицу не работало за линию в худшем случае.
источник

K

Kelbon in pro.algorithms
если тебе нужно ещё больше значений - придумываешь хэш с большим диапазоном значений
источник

ГР

Геннадий Романов... in pro.algorithms
типа вставка n пользователей типа (userN, emailN) будет проходит за линейное время от n?
источник

K

Kelbon in pro.algorithms
я уж не знаю как в джаве, а в С++ есть такой метод reserve у хэш мапы, который тебе гарантирует что реаллокаций не будет и ты вставишь всё за линейное время
источник

MB

Mikail Bagishov in pro.algorithms
Не вдаваясь в частности, да.
источник

K

Kelbon in pro.algorithms
если ты конечно знаешь количество элементов
источник

ГР

Геннадий Романов... in pro.algorithms
проверил линейно добавляет.
а в общем случае с n пользователей m элементов

"Запихни email в мапу, где ключ - email а значение - юзер. В конце просто переложи это в мапу, где ключ - юзер, а значение - список адресов."

не понял,
1. если email повториться то в первой мапе пользователь просто перезапишется,
2. как их "просто" переложить
источник