algorithm - 3 名参与者/三人组循环赛?

标签 algorithm combinatorics

我指的是Scheduling algorithm for a round-robin tournament? .

我需要将一群人配对(或三人)成三人组,以便他们见面。例如,在 9 人的小组中,第一次 session 将是:[1, 2, 3]、[4, 5, 6]、[7, 8, 9]。接下来的 session 将类似于 [1, 4, 7]、[2, 5, 8]、[3, 6, 9]。当每个人都遇到其他人时事情就结束了,我们需要尽量减少“回合”的数量。

我已经无计可施地思考这个问题的解决方案了。非常感谢能够为我指明正确方向的人:)

最佳答案

如果“每个人都见过其他人”意味着所有配对都出现在时间表中,那么这是 Kirkman's schoolgirl problem 的概括,当组数为奇数时,可在最小轮数内求解(柯克曼三重系统的存在,归因于 Ray-Chaudhuri 和 Wilson)。社交高尔夫球手问题是对其他群体规模的概括,我预计偶数群体的情况将在该名称下进行研究。

在(看似不太可能)的事件中,“每个人都遇到了其他人”意味着所有可能的组都已被使用,那么您想要使用 Baranyai 定理中的构造来查找超图因子(请参阅 my previous answer on the topic 了解 Python 实现) )。

关于algorithm - 3 名参与者/三人组循环赛?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26125936/

相关文章:

algorithm - 寻找一种算法来有效地布置日历事件横幅

algorithm - 找到覆盖所有点的最小面积的两个矩形

python - 如何在多个级别的用户之间平均共享资源

javascript - 在由元素 :position pairs 组成的字典中移动元素

algorithm - 老师的算法

ruby - 使用 Ruby 在数组中查找大小为 N 的所有子集

生成组合对象的算法

Javascript 将链接的键值分组到数组中

c - 在不生成重复项的情况下查找字符串的所有唯一排列

php - 找到整数的不相等分区的有效方法