我正在寻找一种算法来计算 w 周内来自 n 类(学生姓名列表)的对,以便学生永远不会在两个不同的星期内与同一个学生合作。假设 n 是偶数。
例子:
班级:学生 1,2,3,4
周数:3
- 第 1 周的时间表:(1,2), (3,4)
- 第 2 周的时间表:(1,3), (2,4)
- 第 3 周的时间表:(2,3), (1,4)
我认为 w 必须小于或等于 n - 1 因为每个学生都可以最大程度地与其他 n - 1 人合作。但我不知道是否总是有 n - 1 个解决方案。如果有,我想看看以非暴力方式生成这些 n - 1 个解决方案的算法。
这个问题是否有名称以及我应该查看的通用算法?