团队调度算法 - 测验设计

时间:2009-08-20 19:15:42

标签: c# algorithm

我有一个奇怪的问题要解决 - 这是用于设计测验,但最简单的解释是使用团队。

有16支球队和24场比赛。每场比赛有4支球队参赛。每支球队必须在12/16支球队中出场一次,对剩余的3/16进行两次,并且必须出现6次。关于如何做到这一点的任何想法?如果有一个可以做到这一点的软件,那也很棒。

更新 我不确定上述内容是否可行。以下是我们要完成的最低要求:

  • 未设置游戏数量。
  • 每场比赛有4支球队。
  • 每支球队获得相同数量的比赛。

这可能吗?

5 个答案:

答案 0 :(得分:2)

检查一下...... http://en.wikipedia.org/wiki/Round-robin_tournament

我认为有人可以推广算法,以便适用于2个以上的团队......

我知道这不回答问题,但它提供了一些提示...... 这也可能有点帮助...... http://en.wikipedia.org/wiki/Tournament_(graph_theory

答案 1 :(得分:1)

请注意,每支球队每场比赛打3场比赛,因此至少需要5场比赛才能参加其他15场比赛。那么,我们希望有20个比赛的解决方案,每支球队可以打5场比赛并且每场比赛只打一次。

有16个团队可以通过以下方式手工构建解决方案......

  1. 将20场比赛分为5轮
    • 1至16队的编号
    • 对于每场比赛,对于该比赛中的4个位置中的每一个,分配第一个队
    • 仍可参加该轮比赛
    • 尚未参加任何已分配给该比赛的球队
  2. 您可以通过注意每场比赛必须包含上一轮每场比赛中的一支球队来缩小对可用球队的搜索范围,因此对于位置n,您只需要考虑在上一轮比赛中参加比赛n的球队。 / p>

    如果我们想要24场比赛,那么任何随机选择的比赛都可以在第六轮中满足原始要求。但是,为了确保不重复完全匹配,我们可以在前一轮比赛中切换两队之间的队伍。也就是说,如果{1,2,3,4}和{5,6,7,8}在一些回合中匹配,那么在第6轮我们将有{1,2,7,8}和{3,4 ,5,6}。由于1和2在第1-5轮中完全相同,在比赛{1,2,3,4}中,我们当然还没有比赛{1,2,7,8}。

    选择有效实施的数据结构留给读者练习。

答案 2 :(得分:0)

拉出你的组合学书。我记得这个问题就像那个范围一样。

答案 3 :(得分:0)

"Combinatorial Designs and Tournaments"是一本关于Combinatorial Designs课程的教科书,有这类问题。我在大学的一个专业是Combinatorics & Optimization,所以我记得有点关于这种事情。

答案 4 :(得分:0)

更清楚地确定问题会有所帮助。你想安排什么类型的运动?听起来你已经进入了一个16人的网球联赛,每周有4名球员出现在四个球场上进行双打比赛(球员A& B vs C& D)。其他三个球场也有同样的事情发生在球员E thru P.这是你正在寻找的吗?如果是这样,答案很简单。如果没有,我仍然不明白你在寻找什么。