Я пытаюсь сэкономить место, используя значения хэша строк. У меня есть очень специфическое требование, упрощенное описание которого следующее:Есть ли хеш-функция строки, которая поддерживает h (x) + h (y) = h (x + y)
У меня есть два набора строковых значений, и значение предоставляется во время выполнения. Мне нужно получить список всех строк из второго набора, который начинается с строки из первого набора и заканчивается значением запроса. Здесь значительно упрощенное представление и описание:
set1:
my_test_val_1
my_test_val_2
set2:
my_test_val_1_extended_to_another_value
my_test_val_2_extended_as_well
Моя цель состоит в том, чтобы сохранить хеш-значения этих множеств, как в:
set1:
hash(my_test_val_1)
...
set2:
hash(my_test_val_1_extended_to_another_value)
сэкономить на пространстве, и когда «_extended_to_another_value» прибывает как запрос, использовать хэш-функцию с распределительным свойством более того, чтобы сделать:
hash(my_test_val_1) + hash('_extended_to_another_value') = hash_value_to_search
Мой поиск пытается найти хэш-функцию, которая поддерживает это свойство не удалось больше всего р robably из-за не используя правильные ключевые слова для поиска, так что даже если вы можете описать правильные условия для того, что я описываю выше, это помогло бы
Вы полагаться на * только * хранение хэшей? Каков ваш план борьбы с хеш-коллизиями? –
Какие свойства вы требуете от получаемой хеш-функции? Сколько бит может быть использовано для финального хэша? – dhke
«нужно получить список всех строк из второго набора, который начинается с строки из первого набора и заканчивается значением запроса». [Вы ищете trie?] (Http://en.wikipedia.org/wiki/Trie) – dasblinkenlight