基于偏好的分组算法

时间:2013-05-01 06:15:06

标签: algorithm set grouping preferences

我希望找到一种方法,可以根据偏好对人们进行分类。

例如,假设有100名学生将分配五个班级中的一个:

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

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

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

  1. 按照首选课程对所有学生进行分组
  2. 查看哪些课程的学生人数过多,哪些课程的学生人数太少
  3. 检查超额预订课程中的学生是否有第二选择课程
  4. 相应地移动这些学生
  5. 使用第三选择类重复2-4
  6. 虽然我觉得这是一个合理的实现,但我想知道是否还有其他算法可以更好地解决这个问题。我尝试过全面搜索,但我找不到任何可以解决这类问题的东西。

1 个答案:

答案 0 :(得分:4)

根据您的描述,这听起来非常像Stable Marriage Problem

的变体之一

wikipedia

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

 Gale-Shapley Algorithm

相关问题