[Tartarus] Алгоритм для вычисления наиболее используемых записей

Pavel Shilovsky =?iso-8859-1?q?piastry_=CE=C1_etersoft=2Eru?=
Вс Янв 11 19:30:11 MSK 2009


On Sunday 11 January 2009 19:03:15 Dmitriy M. Maslennikov wrote:
> При создании графических инструментов управления Tartarus есть задача
> показать пользователю список наиболее часто используемых записей. Для
> меня задача вычисления такого списка показалась нетривиальной.
>
> Формулирую задачу:
>
> Пользователь время от времени использует элементы, которые можно
> идентифицировать числами. В некоторый момент времени возникает задача
> показать ему некоторое количество (например, 10) наиболее используемых
> в последнее время элементов, от сортированных по "используемости".
> Необходимо учитывать, число использований, устаревание информации об
> использовании во времени: элемент очень часто использовавшийся месяц
> назад не должен попасть в список, если имеется десяток использованных
> сегодня и т. п. факторы. При этом алгоритм должен быть достаточно
> быстрым - пользователь должен получать список на экране без заметных
> задержек (часть информации можно вычислять при старте программы, а
> затем только содержать эту информацию в актуальном состоянии)
>
> Какие будут соображения?

Здравствуйте.

Предлагаю присвоить записям потенциалы согласно их используемости и 
сортировать :)

Например, запись используемая первый раз, но сегодня имеет потенциал
P = 1 * MAX_mult

запись используемая последний раз вчера, но используемая 2 раза будет иметь 
потенциал
P = 2 * (MAX_mult - regress*days_ago), где days_ago - сколько дней прошло со 
времени последнего выбора данного комнента,
и т.д.

Остаётся только поиграться со значениями переменных и MAX_mult и regress, и мы 
получим то, что нужно - мне так кажется.

--
Best regards,
Pavel Shilovsky.


Подробная информация о списке рассылки Tartarus