我的一个老师朋友,一个班级有23名学生。他们想要一种算法,在14周内将学生分配到2人一组和3人一组(处理奇数数量的学生),这样在14周内没有两对重复(一对分配到一周)。
蛮力方法的效率太低了,所以我在考虑其他方法,矩阵表示听起来很吸引人,还有图论。有谁有什么想法吗?我可以找到的问题只能处理一周和this answer,我可以很好地解决。
发布于 2013-03-07 15:29:33
我认为Round-robin algorithm会做到这一点。
将剩下的学生添加到第二个组中,就完成了。
First run
1 2 3 4 5 6 7 8 9 10 11 12
23 22 21 20 19 18 17 16 15 14 13
Second run
1 23 2 3 4 5 6 7 8 9 10 11
22 21 20 19 18 17 16 15 14 13 12
..。
发布于 2013-03-08 14:43:15
另一种可能是graph matching,需要14个不同的图匹配。
发布于 2013-03-07 14:18:23
试着用约束来描述这个问题。
然后将约束传递给像ECLiPSe (而不是Eclipse)这样的工具,请参阅http://eclipseclp.org/。
实际上,您的问题似乎与该站点(http://eclipseclp.org/examples/golf.ecl.txt)上的高尔夫示例类似。
https://stackoverflow.com/questions/15273249
复制