Алгоритм взвешенного голосования

Я ищу информацию о том, какой алгоритм голосования будет лучшим для меня. У меня есть базовая система голосования «Вверх/вниз», где пользователь может голосовать только за продукт или против. Я хотел бы сделать его взвешенным, чтобы продукт, которому исполнился год, не соответствовал тем же стандартам, что и совершенно новый.

Я думаю сделать алгоритм, который считает количество голосов за каждый продукт за последние 30 дней. Однако это создает откат. Я не хочу, чтобы голоса старше 30 дней стали бессмысленными, но, возможно, не имели такого веса, как более новые. Тогда, возможно, голоса после 90 дней будут иметь даже меньший вес, чем голоса старше 30 дней.

Кто-нибудь знает алгоритм, который уже делает это и, тем более, может быть легко рассчитан на PHP?


person Bot    schedule 08.11.2010    source источник


Ответы (2)


В Google App Engine есть хороший пример, который работает с голосами, которые со временем "затухают".

Он на Python, но он должен соответствовать вашим потребностям.

person Tony the Pony    schedule 08.11.2010

Я думаю, что, учитывая простоту вашего требования, лучший способ действий - написать это самостоятельно.

Не зная больше, я думаю, что ваша задача будет состоять в том, чтобы решить, будете ли вы сохранять эти данные в своей базе данных в предварительно взвешенном формате (например, «когда будет подано голосование, дайте ему $this_year + 1 балл»), вычислите ли вы вес в ваш запрос к БД (например, упорядочение по счету, который учитывает как голоса, так и дату, когда было подано голосование), или возвращаете ли вы все необходимые данные и выводите вес в PHP. Выбор зависит от того, что именно нужно вашему приложению и сколько данных будет в нем.

person Tom    schedule 08.11.2010