У меня есть объекты, которые суммируются с помощью 64-битного хэша.Коллекция большая и растущая .
Мы можем рассчитать расстояние между этими объектами, например:
distance = number_of_bits_set(hash1 ^ hash2)
Дляпример:
Object1 hash is 00001110
Object2 hash is 00111000
Object3 hash is 00011111
Расстояния будут:
Dist(Object1, Object2) = Bits(00001110 ^ 00111000) = 4
Dist(Object1, Object3) = Bits(00001110 ^ 00011111) =
Dist(Object2, Object3) = Bits(00111000 ^ 00011111) = 4
Как мы видим здесь, Object1 / 2 имеют то же расстояние, что и Object2 / 3, но Объект 1/3 имеетгораздо меньшее расстояние.
Мне нужно собрать систему, чтобы найти n ближайших объектов к данному объекту.
Количество объектов исчисляется миллионами, поэтому грубая сила и сохранение всех комбинацийне варианты.
Я не могу придумать никакого разделения, которое имело бы смысл, так как мы имеем дело с количеством битов.В то же время я могу представить, что это не новая проблема, и необходимо провести некоторое исследование по этой теме.
Может ли кто-нибудь пролить свет на это и / или указать мне правильное направление?