8

我正在寻找一种方法来按偏好将人们分类。

例如,假设有 100 名学生将被分配到五个班级之一:

  • 科学 - 40 个座位
  • 数学 - 15 个座位
  • 历史 - 15 个席位
  • 电脑 - 20 个座位
  • 写作 - 10 个座位

每个学生都有三个按偏好排序的首选课程。什么是划分学生的最佳方法,以便尽可能多的人获得他们的第一和第二选择课程,同时确保没有一个班级有太多的学生。

我考虑过通过以下方法接近它:

  1. 将所有学生按他们的首选班级分组
  2. 查看哪些班级的学生太多,哪些班级的学生太少
  3. 检查超额预订班级中是否有任何学生的第二选择班级人数不足
  4. 相应地移动这些学生
  5. 对第三选择类重复 2-4

虽然我觉得这是一个合理的实现,但我想知道是否有任何其他算法可以更好地解决这个问题。我已经尝试过搜索,但我找不到任何可以解决此类问题的东西。

4

1 回答 1

4

根据您的描述,这听起来很像稳定婚姻问题的变体之一

维基百科

检查 Wiki 链接,您将看到 Gale-Shapley 算法的描述,这是一个很好的解决方案。

Gale-Shapley 算法

于 2013-05-01T06:52:01.023 回答