Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 具有n个玩家和m个参与者匹配的组的匹配算法_Algorithm_Combinatorics_Schedule - Fatal编程技术网

Algorithm 具有n个玩家和m个参与者匹配的组的匹配算法

Algorithm 具有n个玩家和m个参与者匹配的组的匹配算法,algorithm,combinatorics,schedule,Algorithm,Combinatorics,Schedule,我有以下问题: 一组n名玩家想要玩一组比赛。每一场比赛都有m 参与者。我想找到一个游戏最少的时间表 每个玩家与其他玩家至少见面一次,最多一次 各种各样的对手 经过一些研究后,我发现“社交高尔夫问题”似乎是一个类似的问题,但我找不到一个我可以适应的解决方案,也不能提出自己的解决方案。伪代码(假设球员内部有标志): 从球员A开始;(假设球员A到F,每场比赛3名球员) 通过自上而下,我们可以消除各种可能性。从每个人扮演所有其他玩家开始(他们还没有玩过,因此,例如,B跳过C,因为B在ABC中与C一起玩)

我有以下问题:

一组n名玩家想要玩一组比赛。每一场比赛都有m 参与者。我想找到一个游戏最少的时间表 每个玩家与其他玩家至少见面一次,最多一次 各种各样的对手

经过一些研究后,我发现“社交高尔夫问题”似乎是一个类似的问题,但我找不到一个我可以适应的解决方案,也不能提出自己的解决方案。

伪代码(假设球员内部有标志):

从球员A开始;(假设球员A到F,每场比赛3名球员)

通过自上而下,我们可以消除各种可能性。从每个人扮演所有其他玩家开始(他们还没有玩过,因此,例如,B跳过C,因为B在ABC中与C一起玩)(3人一组)。我们可以编写一个函数来实现这一点(请参见顶部的psuedocode)

现在,如果你只算3人一组的话,几乎所有的玩家都互相玩过。到目前为止,这是5场比赛。删除我们已经计算过的游戏,导致

A F -missing
B F -missing
C F -missing
这里有什么共同点?他们都有F。这意味着F必须和名单上的每个人比赛,所以我们需要做的就是把F排在前面

我们现在可以做F A B,然后C F+任意随机游戏者。这是最少7场比赛


基本上,您可以反复运行伪代码,直到它连续两次返回false。当它连续两次返回false时,您知道所有标志都已设置。

这可能不是一个完整的解决方案,但。。。考虑一个带有<代码> n>代码>节点的图表。与
m
玩家的比赛可以通过每轮将
m-1
边放入图形中来表示。要求每个玩家至少与另一个玩家见面一次,这意味着您将在若干回合后进行一次对话

对于圆形(匹配)1,放置一组任意的
m-1
边。对于下一轮,铺设当前未连接两个节点的
m-1
边。重复此操作,直到图形完成


编辑:边缘需要连接,以确保只有
m
玩家与
m-1
边缘匹配,这将使这一点更加困难。如果将每一轮放在完整图的行走中,则问题与查找完整图的最短行走相同。一个不同的问题可能是相关的,并提出了。

我的问题是,假设每场比赛我有4名球员,我需要一种方法来创建比赛。如果我只是结合for循环,确保每个人都能看到每个人,我可能会有比我需要的更多的游戏。让我们假设我有6个玩家在玩一个3人游戏。我可以在小组内形成20个组合,但我可以在每个人都看到每个人之后创建一组7个匹配。示例:abc、def、cde、abf、dae、bde、cfX
A B C (save this game to a list of games, or increment a counter or something)
A D E
A F -missing (returned false so we did not save this)
B D E 
B F -missing
C D E
C F -missing 
D E F
A F -missing
B F -missing
C F -missing