我正在寻找一种方法来按偏好将人们分类。
例如,假设有 100 名学生将被分配到五个班级之一:
- 科学 - 40 个座位
- 数学 - 15 个座位
- 历史 - 15 个席位
- 电脑 - 20 个座位
- 写作 - 10 个座位
每个学生都有三个按偏好排序的首选课程。什么是划分学生的最佳方法,以便尽可能多的人获得他们的第一和第二选择课程,同时确保没有一个班级有太多的学生。
我考虑过通过以下方法接近它:
- 将所有学生按他们的首选班级分组
- 查看哪些班级的学生太多,哪些班级的学生太少
- 检查超额预订班级中是否有任何学生的第二选择班级人数不足
- 相应地移动这些学生
- 对第三选择类重复 2-4
虽然我觉得这是一个合理的实现,但我想知道是否有任何其他算法可以更好地解决这个问题。我已经尝试过搜索,但我找不到任何可以解决此类问题的东西。