У меня есть большая коллекция объектов, и мне нужно выяснить сходство между ними.быстрое обнаружение подобия
Точнее: с учетом двух объектов я могу вычислить их несходство как число, metric - более высокие значения означают меньшее сходство, а 0 означает, что объекты имеют одинаковое содержимое. Стоимость вычисления этого числа пропорциональна размеру меньшего объекта (каждый объект имеет заданный размер).
Мне нужна способность быстро находить, учитывая объект, набор объектов, похожих на него.
Чтобы быть точным: мне нужно создать структуру данных, которая отображает любой объект o в набор объектов, не более похожих на o, чем d, для некоторого значения d несходства, так что перечисление объектов в наборе не требует больше чем если бы они были в массиве или связанном списке (и, возможно, на самом деле). Как правило, набор будет намного меньше, чем общее количество объектов, поэтому действительно стоит выполнить это вычисление. Это достаточно хорошо, если структура данных принимает фиксированный d, но если она работает для произвольного d, еще лучше.
Вы видели эту проблему раньше или что-то похожее на нее? Что такое хорошее решение?
Точнее: прямое решение включает вычисление различий между всеми парами объектов, но это медленно - O (n) где n - количество объектов. Существует ли общее решение с меньшей сложностью?
Просьба привести несколько примеров объектов с вашими комментариями. – Misha