我正在寻找一种方法来根据偏好将人们分类。
例如,假设有 100 名学生,每人将被分配到以下五个班级之一:
- 科学 - 40 个座位
- 数学 - 15 个席位
- 历史 - 15 个席位
- 电脑 - 20 个座位
- 写作 - 10 个座位
每个学生都有三个按偏好排序的首选课程。划分学生的最佳方法是什么,以便尽可能多的人获得第一和第二选择的班级,同时确保没有班级的房间里有太多的学生。
我考虑过通过以下方法来处理它:
- 按首选班级对所有学生进行分组
- 查看哪些班级学生太多,哪些班级学生太少
- 检查超额预订班级中是否有学生有预订不足的第二选择课程
- 相应地移动这些学生
- 对第三选择课程重复 2-4
虽然我觉得这是一个合理的实现,但我想知道是否有其他算法可以更好地解决这个问题。我尝试到处搜索,但找不到任何可以解决此类问题的方法。
从你的描述来看,这听起来很像稳定的婚姻问题 http://en.wikipedia.org/wiki/Stable_marriage_problem
检查 Wiki 链接,您将看到 Gale-Shapley 算法的描述,这是一个很好的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)