Ben*_*min 5 bipartite graph-algorithm np max-flow hungarian-algorithm
我目前正在编写一个将学生映射到课程的程序.目前,我正在使用SAT-Solver,但我正在尝试实现一个多项式时间/非贪心算法,它解决了以下子问题:
我现在描述到目前为止我所做的事情.
(1)忽略课程 - 学生限制
我能够用匈牙利算法/二分匹配来解决这个问题.每个学生可以通过如下建模来单独计算:
通过这种方式,学生被分配到课程的每个科目,而不参加同一区块的课程.但课程限制被忽略了.
(2)忽略学生的选定科目
我能够用max-flow-algorithm解决这个问题.对于每个学生,建模如下:
通过这种方式,学生选择任意课程,并且课程限制已满.但是他/她可能不幸并被分配到'数学-1','数学-2'和'数学-3'而无视主题'生物'和'艺术'.
(3)贪婪的匈牙利人
我的另一个想法是一次匹配一个学生与匈牙利算法并调整权重,以便"更多空课程"是首选.例如,可以建模:
然后计算最大权重匹配.
我真的很感激任何建议/帮助.
谢谢!