Мне любопытно, есть ли способ хранить хэш из нескольких множеств целых чисел, который в идеале имеет следующие свойства:
- Использует пространство O (1)
- Его можно обновить, чтобы отразить вставку или удаление за время O (1).
- Две идентичные коллекции (т. Е. Коллекции, имеющие одинаковые элементы с одинаковыми кратностями) должны всегда хэшировать одно и то же значение, а две разные коллекции должны хэшировать разные значения с высокой вероятностью (т. Е. Функция независима или попарно независима)
Первой попыткой было бы сохранить произведение по модулю случайного простого числа хешей отдельных элементов. Это удовлетворяет 1 и 2, но не ясно, удовлетворит ли это, или близкое изменение, 3.
Я первоначально отправил это на StackOverflow .
* Свойства 1 и 2 могут быть немного смягчены, скажем, до O (log n) или небольшого сублинейного полинома. Дело в том, чтобы увидеть, можем ли мы идентифицировать множественные множества и надежно проверить равенство, не сохраняя сами элементы.