我正在构建一个应该从有限任务池中为用户提取任务的应用程序。问题是我想要:
- 用户不会两次获得相同的任务,
- 在一段时间过去之前,用户不会获得与其 friend (在应用程序中)相同的任务。
总结一下我的问题,我需要从池中提取最不常见的任务。
有人可以向我推荐寻找最不常见事物 (LFU) 的已知算法吗? 我还需要理论方面的知识,所以如果有人知道一些关于这方面的文章或研究论文(来自《科学美国人》等知名杂志),那就太好了。
最佳答案
要获得最少使用的任务,只需给每个任务一个计数器,计算它被使用的次数。然后搜索计数器值最低的任务。
为了获得一组 friend 最不经常使用的任务,您可以为每个用户存储他/她完成的任务(以及次数)。无论如何,这些信息可能还是有用的。然后,当需要为用户选择新任务时,可以很容易地创建用户及其所有 friend 使用的任务及其频率的(临时)组合列表,并按频率排序。这不是很贵。
关于algorithm - "Least frequently used"- 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450969/