(Это не домашняя работа и не проблема работы. Это просто мой личный интерес / профессия и вымышленная. Но меня интересует хороший алгоритм или структура данных.)
Предположим, я бы запустил сайт знакомств. И моя особенность состояла бы в том, что синглы были сопоставимы со вкусом фильма . (Почему нет?)
В этом случае мне понадобится способ сохранить рейтинги фильмов для каждого пользователя. (Пока проблем нет.) И мне нужна структура данных, чтобы найти наиболее подходящего пользователя. Расстояние между двумя шаблонами вкуса будет средним расстоянием между всеми оценками, которые сделали оба пользователя.
Пример
movies A B C D E F G H I J K L M ...
user Xm 9 5 1 1 5
user Ym 4 6 1 8
user Zf 9 6 4 7
Расстояние (X, Z) = среднее (абс (9-9) + абс (1-4)) = 1,5
Расстояние (Y, Z) = среднее (абс (4-6) + абс (6-4) + абс (8-7)) = 1,666
Значит, мистер X подходит немного лучше миссис Z, чем мистер Y.
Мне нравится, что душ ...
- ... не нужно много операций с базой данных
- ... не нужно обрабатывать много данных
- ... беги быстро
- ... доставить лучшее соответствие
- Хорошо, возможно, я бы тоже рассмотрел хорошие приближения.
Постарайтесь помнить, что это также должно работать с тысячами возможных фильмов, пользователями, которые оценивают только около 20-50 фильмов, и тысячами пользователей.
(Поскольку это ментальная головоломка, а не реальная проблема, обходные пути на самом деле не помогают.)
Каким будет ваш алгоритм поиска или структура данных?