Предположим, я хотел бы создать неупорядоченный набор неупорядоченных мультимножеств unsigned int. Для этого мне нужно создать хэш-функцию для вычисления хэша неупорядоченного мультимножества. Фактически, это должно быть хорошо для CRC.Алгоритм для hash/crc неупорядоченного мультимножества
Одним из очевидных решений является размещение элементов в векторе, сортировка их и возврат хеша результата. Кажется, это работает, но это дорого.
Другим подходом является xor значения, но, очевидно, если у меня есть один элемент дважды или нет, результат будет таким же - что не очень хорошо.
Любые идеи, как я могу реализовать это дешевле - у меня есть приложение, которое будет делать эту тысячу для тысяч наборов и относительно больших.
Можете ли вы изменить мультимножители, чтобы они перепрограммировали свои хэши при вставке/удалении? Затем, если вам нужно выполнять поиск несколько раз, вам не нужно перекомпоновать хеши. –
Технически да, но как это помогает? – gsf
Поскольку кешированное значение может быть просто * read *, вам не нужно будет вычислять его тысячи раз. –