我需要为M门课程分配N个人,每个人指定了他们的第一和第二选择,每门课程有一个最大出席人数。每个人只能参加一门课程。算法应该找到一个解决方案,其中:
对于其他课程: 1. 将选择该课程作为第一选择的随机人员放入该课程,直到该课程已满。 2. 对于少于空位数的第二选择,将所有这些人员分配给该课程。 3. 对于其他课程: 1. 在他们的第一选择(然后是第二选择)中寻找已选择其他仍有空位的课程的人(如果找到多个,则选择选择剩余空位最多的课程),将此人移至他们的第二选择,并分配缺失的人员。
我仍然认为由于最后一步,这个算法不会找到问题的最优解。有没有想法如何使其更好?是否还有其他算法可以解决这个问题?
- 尽可能多地将人员指派到其首选课程之外的其他课程
- 尽可能多地将人员分配到他们的第一选择中(考虑1优先级更高)。
对于其他课程: 1. 将选择该课程作为第一选择的随机人员放入该课程,直到该课程已满。 2. 对于少于空位数的第二选择,将所有这些人员分配给该课程。 3. 对于其他课程: 1. 在他们的第一选择(然后是第二选择)中寻找已选择其他仍有空位的课程的人(如果找到多个,则选择选择剩余空位最多的课程),将此人移至他们的第二选择,并分配缺失的人员。
我仍然认为由于最后一步,这个算法不会找到问题的最优解。有没有想法如何使其更好?是否还有其他算法可以解决这个问题?